기본 문법 (INSERT)
테이블 전체 컬럼에 대응하는 값을 모두 넣기
mysql> INSERT INTO 테이블명 VALUES(값1, 값2, ...);
테이블 특정 컬럼에 대응하는 값만 넣기 (지정되지 않은 컬럼은 디폴트값 또는 NULL값이 들어감)
mysql> INSERT INTO 테이블명 (col1, col2, ...) VALUES(값1, 값2, ...);
예) # mysql -u root -p mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | dave | | mysql | | performance_schema | | sys | +--------------------+ mysql> use dave; mysql> show tables; +----------------+ | Tables_in_dave | +----------------+ | mytable | +----------------+ mysql> desc mytable; +------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | | model_num | varchar(10) | NO | | NULL | | | model_type | varchar(10) | NO | | NULL | | +------------+------------------+------+-----+---------+----------------+
mysql> INSERT INTO mytable VALUES(1, 'i7', '7700', 'Kaby Lake');
Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM mytable; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec)
mysql> INSERT INTO mytable (name, model_num, model_type) VALUES('i7', '7700K', 'Kaby Lake');
Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM mytable; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+ 2 rows in set (0.00 sec)
INSERT INTO mytable (name, model_num, model_type) VALUES('i7', '7700', 'Kaby Lake'); INSERT INTO mytable (name, model_num, model_type) VALUES('i7', '7500', 'Kaby Lake'); INSERT INTO mytable (name, model_num, model_type) VALUES('i7', '7700K', 'Kaby Lake'); INSERT INTO mytable (name, model_num, model_type) VALUES('i7', 'G4600', 'Kaby Lake'); INSERT INTO mytable (name, model_num, model_type) VALUES('i7', '7600', 'Kaby Lake');
기본 문법 (SELECT)
테이블 전체 컬럼의 데이터 모두 읽기
mysql> SELECT * FROM 테이블명;
테이블 특정 컬럼의 데이터만 읽기
mysql> SELECT 컬럼1, 컬럼2, ... FROM 테이블명;
mysql> SELECT name, model_num FROM mytable; +------+-----------+ | name | model_num | +------+-----------+ | i7 | 7700 | | i7 | 7700K | +------+-----------+
테이블 특정 컬럼의 데이터를 검색하되, 표시할 컬럼명도 다르게 하기
mysql> SELECT 컬럼1 AS 바꿀컬럼이름, 컬럼2 AS 바꿀컬럼이름 FROM 테이블명;
예) mysql> SELECT name AS cpu_name, model_num AS cpu_num FROM mytable; +----------+---------+ | cpu_name | cpu_num | +----------+---------+ | i7 | 7700 | | i7 | 7700K | +----------+---------+
데이터 정렬해서 읽기
mysql> SELECT * FROM 테이블명 ORDER BY 정렬할기준컬럼명 DESC;
mysql> SELECT 컬럼1, 컬럼2 FROM 테이블명 ORDER BY 정렬할기준컬럼명 ASC;
예) mysql> SELECT * FROM mytable ORDER BY id DESC; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 2 | i7 | 7700K | Kaby Lake | | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 2 rows in set (0.01 sec)
mysql> SELECT * FROM mytable ORDER BY id ASC; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+ 2 rows in set (0.00 sec)
조건에 맞는 데이터만 검색하기 (비교)
SELECT * FROM 테이블명 WHERE 필드명 = '값'
예) mysql> SELECT * FROM mytable WHERE id < 2; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM mytable WHERE id = 1; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM mytable WHERE id > 1; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+
조건에 맞는 데이터만 검색하기 (논리 연산자)
SELECT * FROM 테이블명 WHERE (필드명='값') OR ( 필드명 ='값');
SELECT * FROM 테이블명 WHERE (필드명='값') AND ( 필드명 ='값');
예) mysql> SELECT * FROM mytable WHERE id > 0 OR id < 2; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM mytable WHERE id = 1 AND name = 'i7'; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec)
조건에 맞는 데이터만 검색하기 (LIKE 를 활용한 부분 일치)
SELECT * FROM 테이블명 WHERE 필드명 LIKE '홍%';
SELECT * FROM 테이블명 WHERE 필드명 LIKE '%홍%';
SELECT * FROM 테이블명 WHERE 필드명 LIKE '홍__';
예) mysql> SELECT * FROM mytable WHERE name LIKE 'i%'; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+ 2 rows in set (0.00 sec) mysql> SELECT * FROM mytable WHERE name LIKE 'i__'; Empty set (0.00 sec)
결과중 일부만 데이터 가져오기 (LIMIT 을 활용)
SELECT * FROM 필드명 LIMIT 10;
SELECT * FROM 필드명 LIMIT 100, 10;
예) mysql> SELECT * FROM mytable LIMIT 1; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 1 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec) mysql> SELECT * FROM mytable LIMIT 1, 1; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 2 | i7 | 7700K | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec)
조건 조합
예) mysql> SELECT id, name FROM mytable -> WHERE id < 4 AND name LIKE '%i%' -> ORDER BY name DESC -> LIMIT 2;
SELECT * FROM mytable WHERE model_num LIKE '7700%' SELECT * FROM mytable WHERE name LIKE '%i7%' SELECT * FROM mytable WHERE model_type LIKE '%카바레이크%' LIMIT 1
기본 문법 (UPDATE)
보통 WHERE 조건문과 함께 쓰여서, 특정한 조건에 맞는 데이터만 수정하는 경우가 많음
mysql> UPDATE 테이블명 SET 수정하고 싶은 컬럼명 = '수정하고 싶은 값' WHERE 특정 컬럼 = '값';
다수의 컬럼 값을 수정할 수도 있음
mysql> UPDATE 테이블명 SET 수정하고 싶은 컬럼명1 = '수정하고 싶은 값', 수정하고 싶은 컬럼명2 = '수정하고 싶은 값', 수정하고 싶은 컬럼명3 = '수정하고 싶은 값' WHERE 특정 컬럼 < '값';
예) mysql> SELECT * FROM mytable; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 3 | i7 | 7700 | Kaby Lake | +----+------+-----------+------------+ mysql> UPDATE mytable SET name = 'i5', model_num = '5500' WHERE id = 3; mysql> SELECT * FROM mytable; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 3 | i5 | 5500 | Kaby Lake | +----+------+-----------+------------+
기본 문법 (DELETE)
보통 WHERE 조건문과 함께 쓰여서, 특정한 조건에 맞는 데이터만 삭제하는 경우가 많음
mysql> DELETE FROM 테이블명 WHERE 특정 컬럼 = '값';
테이블에 저장된 모든 데이터를 삭제할 수도 있음
mysql> DELETE FROM 테이블명;
예) mysql> SELECT * FROM mytable; +----+------+-----------+------------+ | id | name | model_num | model_type | +----+------+-----------+------------+ | 3 | i5 | 5500 | Kaby Lake | +----+------+-----------+------------+ 1 row in set (0.00 sec) mysql> DELETE FROM mytable WHERE id = 3; Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM mytable; Empty set (0.00 sec)
mysql> desc mytable; +--------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | | model_num | varchar(10) | NO | | NULL | | | model_type | varchar(10) | NO | | NULL | | | lowest_price | int(10) unsigned | YES | | NULL | | +--------------+------------------+------+-----+---------+----------------+3. 웹페이지(http://www.enuri.com/list.jsp?cate=070701) 에서 1위 ~ 5위까지 lowest_price 값 수정하기
ALTER TABLE mytable ADD COLUMN lowest_price INT UNSIGNED; UPDATE mytable SET lowest_price = 347100 WHERE id = 1; ... SELECT name, model_num FROM mytable WHERE lowest_price < 300000;