[2023.11.21] SQL_database 정의 언어

하은·2023년 11월 22일
0
post-custom-banner

Database 사용하기

Database 정의

Database란

여러 사람이 공유해 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

예) 데이터가 저장된 파일들도 포함 - 엑셀, json

DBMS(Database Management System)

사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

my SQL 도 포함

관계형 데이터베이스란(RDB: Relational Database)

서로간에 관계가 있는 데이터 테이블을 모아둔 데이터 저장공간

비관계형: 데이터간 관계x 저장만o
관계형: 저장되는 데이터 사이에 관계를 통해 데이터 검색, 삭제 가능

SQL이란? (Structed Query Language)

데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

파이썬처럼, DBMS를 대상으로 쓰는 언어

SQL 구성

  • 데이터 정의 언어(DDL: Data Definition Language)
    : CREATE, ALTER, DROP 등의 명령어
    = 테이블이나 데이터베이스를 생성, 변경, 삭제

  • 데이터 조작 언어(DML: Data Manipulation Language)
    : INSERT, UPDATE, DELETE, SELECT 등의 명령어
    = 테이블이나 데이터베이스를 통해 정의된 데이터 구조에 삽입, 변경, 삭제, 조회
    ** 데이터사이언티스트는 SELECT를 주로 사용.

  • 데이터 제어 언어(DCL: Data Control Language)
    : GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어
    = 계정별 권한 설정, 실행단위를 묶어서 롤백 등

Database 관리

MySQL 접속

% mysql -u root -p
Enter password:

Database 확인

현재 Database 목록 확인

SHOW DATABASES;

Database 생성

Database 이름을 지정해 생성

CREATE DATABASE (dbname);

Database 사용

해당 Database로 이동(사용)

USE dbname;

Database 삭제

DROP DATABASE dbname;


User 관리

User 조회

사용자 정보는 mysql에서 관리하므로 일단 mysql database로 이동 후 조회

use mysql;
SELECT host, user FROM user;
= select = 가져올거야.
= FROM user = user라는 테이블에서
= host, user = host 와 user정보를

User 생성 - localhost

현재 PC에서만 접속가능한 사용자를 비밀번호와 함께 생성

create user 'username'@'localhost' identified by 'password';
= create user = 유저를 생성할거야
= 'username' = 이 이름의 유저를
= @'localhost' = 현재피씨에서만 사용가능
= identified by 'password' = 비밀번호 이걸로 할래
= ; = 즉시 실행해줘

User 생성 - %

외부에서 접속 가능한 사용자를 비밀번호와 함께 생성

create user 'username'@'%' identified by 'password';

User 삭제

접근 범위에 따라 같은 이름의 사용자여도 별도로 삭제

DROP USER 'username'@'localhost'
DROP USER 'username'@'%'

User 권한 관리

권환관리 실습환경 만들기

- database 만들기

*create database testdb;
show databases;

- user 만들기

use mysql; (이동)
*create user 'noma'@'localhost' identified by '1234';
select host, user from user;

- user 권환 확인: 사용자에게 부여된 모든 권한 목록 확인

SHOW GRANTS FOR 'username'@'localhost';

- 사용자에게 특정 데이터베이스의 모든 권한을 부여

GRANT ALL ON dbname.* to 'username'@'localhost';

- 새로고침: 수정내용이 적용되지 않은 경우

FLUSH PRIVILEGES;

- 사용자에게 특정 데이터베이스의 모든 권한을 삭제

REVOKE ALL ON dbname.* from 'username'@'localhost';

Table 사용하기

Table 생성

실습할 데이터베이스 생성

CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;
~라는 이름의 데이터베이스를 만들건데, 다국어를 지원하고, 이모지문자도 쓸거야

table

데이터베이스 안에서 실제 데이터가 저장되는 형태고, 행(Row)과 열(Column)로 구성된 데이터 모음

table 생성문법

CREATE TABLE tablename(
columnname datatype,
columnname datatype,
...
)

= 어떤 칼럼 갖고 있는지 이름 + 데이터 타입(숫자형, 문자형, 날짜)

mysql> create table animal
   -> (
   ->     name varchar(16),
   ->     type varchar(16)
   -> );
Query OK, 0 rows affected (0.08 sec)

table 생성 예제

id(int)와 name(varchar(16))칼럼을 가지는 mytable이라는 이름의 테이블 생성

CREATE TABLE mytable(id int, name varchar(16));
= mytable이란 이름의 table을 생성해줘
= id라는 칼럼을 가졌고, 숫자형이야
= name이라는 칼럼도 가졌고, 문자형이야

타이핑할 때 enter치면 ; 만날때까지 작성가능

table 목록 확인 문법

SHOW TABLES;
구조를 갖고 있기 때문에 구조도 확인해야함

table 정보 확인 문법

DESC tablename;
-> DESC mytable;

= null과 default 는 자동 생성

table 변경&삭제

table 이름 변경 문법

ALTER TABLE tablename
RENAME new_tablename

table column 추가 문법

ALTER TABLE tablename
ADD COLUMN columnname datatype;
예) alter table person add column agee double;

table column 변경 문법 - datatype

ALTER TABLE tablename
MODIFY COLUMN columnname datatype;
예) alter table person modify column agee int;

table column 변경 문법 - name

ALTER TABLE tablename
CHANGE COLUMN old_columnname new_columnname new_datatype
= 이전 칼럼이름을 새로운이름으로 바꿀게, 데이터타입도 바꿀게
예) alter table person change column agee age int;

table column 삭제 문법

ALTER TABLE tablename
DROP COLUMN columnname;

table 삭제

table 삭제 문법

DROP TABLE tablename;

post-custom-banner

0개의 댓글