[초간단 SQL 학습][MySQL] 데이터베이스, 테이블 만들기.
간단히 SQL을 배우려면 우분투에 MySQL을 설치하면 된다.
MySQL이 설치된 가상 머신이 데이터베이스 서버가 된다.
이후 MySQL 서버에 연결하면 SQL 학습을 위한 도구는 준비된 것이다.
또 다른 방법은 윈도우즈에 MySQL을 설치하는 것이다.
사전에 Visual Studio가 설치되어 있어야 하며 10G 정도의 많은 용량이 필요하다.
이 글은 우분투에 MySQL 설치된 환경을 기초로 작성한다.
디폴트(현재) 데이터베이스 이름을 질의한다.
mysql> select database(); +------------+ | database() | +------------+ | NULL | +------------+ 1 row in set (0.00 sec)
NULL 값이 반환되었으니 아직 어떤 데이터베이스도 선택하지 않았다.
데이터베이스 생성하기
아래와 같이 CREATE DATABASE 문으로 testdb란 이름을 가진 데이터베이스를 만든다.
mysql> CREATE DATABASE testdb; Query OK, 1 row affected (1.51 sec)
데이터베이스를 만들었지만 사용하기 위해 선택하지는 않았다.
데이터베이스 선택하기
testdb란 데이터베이스는 만들기만 하였으므로 사용하기 전에 선택해야 한다.
mysql> USE testdb; Database changed mysql> select database(); +------------+ | database() | +------------+ | testdb | +------------+ 1 row in set (0.00 sec)
테이블 생성하기
이전에 생성한 데이터베이스는 비어 있다.
먼저, 테이블을 만들어 주어야 한다.
mysql> CREATE TABLE course -> (sno INT NOT NULL, -> prof CHAR(2), -> dept CHAR(10), -> cno CHAR(4) NOT NULL, -> grade CHAR(1), -> PRIMARY KEY(sno, cno) -> ); Query OK, 0 rows affected (0.40 sec)
DESCRIBE문을 이용하여 생성한 course 테이블을 확인한다.
mysql> DESCRIBE course; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | sno | int(11) | NO | PRI | NULL | | | prof | char(2) | YES | | NULL | | | dept | char(10) | YES | | NULL | | | cno | char(4) | NO | PRI | NULL | | | grade | char(1) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 5 rows in set (0.07 sec)
생성한 course 테이블 역시 비어 있다.
mysql> select * from course; Empty set (0.03 sec)
데이터 삽입
mysql> INSERT INTO course VALUES -> (100, 'P1', 'Computer', 'C413', 'A'), -> (100, 'P1', 'Computer', 'E412', 'A'), -> (200, 'P2', 'Electric', 'C123', 'B'), -> -> (300, 'P3', 'Computer', 'C312', 'A'), -> (300, 'P3', 'Computer', 'C324', 'C'), -> (300, 'P3', 'Computer', 'C413', 'A'), -> -> (400, 'P1', 'Computer', 'C312', 'A'), -> (400, 'P1', 'Computer', 'C324', 'A'), -> (400, 'P1', 'Computer', 'C413', 'B'), -> (400, 'P1', 'Computer', 'E412', 'C') -> ; Query OK, 10 rows affected (0.04 sec) Records: 10 Duplicates: 0 Warnings: 0
mysql> select * from course; +-----+------+----------+------+-------+ | sno | prof | dept | cno | grade | +-----+------+----------+------+-------+ | 100 | P1 | Computer | C413 | A | | 100 | P1 | Computer | E412 | A | | 200 | P2 | Electric | C123 | B | | 300 | P3 | Computer | C312 | A | | 300 | P3 | Computer | C324 | C | | 300 | P3 | Computer | C413 | A | | 400 | P1 | Computer | C312 | A | | 400 | P1 | Computer | C324 | A | | 400 | P1 | Computer | C413 | B | | 400 | P1 | Computer | E412 | C | +-----+------+----------+------+-------+ 10 rows in set (0.00 sec)
삽입이상
mysql> INSERT INTO course VALUE -> (500, 'P4'); ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> INSERT INTO course VALUE -> (500, 'P4', NULL, NULL, NULL); ERROR 1048 (23000): Column 'cno' cannot be null
mysql> INSERT INTO course VALUE -> (500, 'P4', NULL, '', NULL); Query OK, 1 row affected (0.08 sec)
mysql> SELECT * FROM course;+-----+------+----------+------+-------+| sno | prof | dept | cno | grade |+-----+------+----------+------+-------+| 100 | P1 | Computer | C413 | A || 100 | P1 | Computer | E412 | A || 200 | P2 | Electric | C123 | B || 300 | P3 | Computer | C312 | A || 300 | P3 | Computer | C324 | C || 300 | P3 | Computer | C413 | A || 400 | P1 | Computer | C312 | A || 400 | P1 | Computer | C324 | A || 400 | P1 | Computer | C413 | B || 400 | P1 | Computer | E412 | C || 500 | P4 | NULL | | NULL |+-----+------+----------+------+-------+11 rows in set (0.00 sec)
데이터 삭제
mysql> DELETE FROM course -> WHERE sno = 200 -> AND cno = 'C123'; Query OK, 1 row affected (0.05 sec)
mysql> SELECT * FROM course; +-----+------+----------+------+-------+ | sno | prof | dept | cno | grade | +-----+------+----------+------+-------+ | 100 | P1 | Computer | C413 | A | | 100 | P1 | Computer | E412 | A | | 300 | P3 | Computer | C312 | A | | 300 | P3 | Computer | C324 | C | | 300 | P3 | Computer | C413 | A | | 400 | P1 | Computer | C312 | A | | 400 | P1 | Computer | C324 | A | | 400 | P1 | Computer | C413 | B | | 400 | P1 | Computer | E412 | C | | 500 | P4 | NULL | | NULL | +-----+------+----------+------+-------+ 10 rows in set (0.00 sec)
삭제이상
데이터 갱신
mysql> UPDATE course -> SET prof='P2' -> WHERE sno=400; Query OK, 4 rows affected (0.07 sec) Rows matched: 4 Changed: 4 Warnings: 0
갱신이상
mysql> select * from course;+-----+------+----------+------+-------+| sno | prof | dept | cno | grade |+-----+------+----------+------+-------+| 100 | P1 | Computer | C413 | A || 100 | P1 | Computer | E412 | A || 300 | P3 | Computer | C312 | A || 300 | P3 | Computer | C324 | C || 300 | P3 | Computer | C413 | A || 400 | P2 | Computer | C312 | A || 400 | P2 | Computer | C324 | A || 400 | P2 | Computer | C413 | B || 400 | P2 | Computer | E412 | C || 500 | P4 | NULL | | NULL |+-----+------+----------+------+-------+10 rows in set (0.00 sec)