본문 바로가기

SQL/MYSQL

MySQL DDL DML 기본 명령어



Database 관련 명령어


1. database 생성


ex) Blueuser라는 database생성


CREATE DATABASE Blueuser;






2. database 사용 선언


ex) Blueuser database를 사용하겠다고 선언


USE Blueuser ;






3. 전체 database 조회


SHOW DATABASES;






4. database 삭제


ex) Blueuser database를 삭제


DROP DATABASE Blueuser;








테이블 관련 명령어


1. 테이블 생성


ex) id , name , model_number , series 열을 갖는 products 테이블을 생성


   CREATE TABLE products(


           id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,


           name VARCHAR(50) NOT NULL,


           model_number VARCHAR(15) NOT NULL,


           series VARCHAR(30) NOT NULL


   );


괄호( ) 안에는 필드 명 / 자료 형 / 옵션 의 형식으로 작성합니다.




- 옵션


NOT NULL             : 반드시 입력해야 하는 필드


AUTO_INCREMENT  : 자동으로 숫자가 증가하도록 만듦


PRIMARY KEY         : 기본 키로 지정


DEFAULT               : 기본 값을 설정








2. 테이블 조회


1) 테이블 스키마 조회


테이블에 속한 칼럼명과 칼럼들의 옵션 정보를 볼 수 있습니다.


구체적인 데이터를 보는 것이 아니라 테이블의 구조를 파악하기 위한 명령어입니다.


ex) products 테이블의 칼럼명과 옵션들을 조회


DESC products;




2) 전체 테이블 목록 조회


SHOW TABLES;








3. 테이블 삭제


ex) products 테이블을 삭제


DROP TABLE products;




ex) 테이블의 정의는 그대로 두고 모든 내용을 삭제


TRUNCATE TABLE 테이블명;





4. 테이블 정의 수정


Alter


테이블을 정의한 뒤 Alter 명령어를 사용하면 테이블 정의를 수정할 수 있습니다.


만약 테이블이 비어있다면 DROP을 한 후 다시 생성하면 되지만, 이미 데이터가 있을 경우에는 곤란해지겠죠.




테이블의 열 추가


ALTER TABLE products ADD addColumn varchar(20);


products 테이블에 addColumn 열을 추가합니다.


그러면 기존의 데이터들은 addColumn 열이 없었는데 갑자기 생긴 것이므로 addColumn 의 값으로 NULL이 할당됩니다.


만약 addColumn 을 NOT NULL로 정의하고 싶다면 DEFAULT를 설정해서 기존의 데이터들의 값이 DEFAULT값을 갖도록 해야 합니다.




테이블의 열의 정의를 수정


ALTER TABLE products MODIFY addColumn Integer;


varchar(20)이였던 addColumn 의 자료형을 Integer로 수정합니다.


자료형이 변경되었으므로 기존의 데이터들도 자료형이 바뀌는데, 바뀔 수 없다면 에러가 발생합니다.




테이블의 열 이름을 수정


ALTER TABLE products CHANGE addColumn addColumnadd varchar(50);


CHANGE는 새로운 이름의 열에 정의를 다시 내릴 수 있습니다.


기존의 정의를 유지하려면 새로운 열의 이름만 작성하면 됩니다.




테이블의 열을 삭제


ALTER TABLE products DROP addColumnadd ;











데이터 관련 명령어


1. 데이터 추가


INSERT INTO 테이블명 (열 , 열…) VALUE (데이터, 데이터 …);


ex) products 테이블의 name, serial_number, series 열에 각각 데이터를 추가합니다.


INSERT INTO products (name, serial_number, series) VALUES


           ("Eric", "0000", "Artists"),


           ("Victoree93", "1234", "Student");




ex) 테이블 뒤에 데이터를 저장할 열 목록을 생략해도 됩니다.


INSERT INTO products VALUES ("Eric", "0000", "Artists");




ex) serial_number열에 default 값이 설정되어 있다면 DEFAULT를 작성하여 default 값을 추가할 수 있습니다.


INSERT INTO products VALUES ("Eric", DEFAULT, "Artists");








2. 데이터 조회


1) SELECT 열, 열 … FROM 테이블명;


ex) products 테이블의 모든 열의 데이터를 조회


SELECT * FROM products;


*는 와일드 카드로서 모든 열을 의미합니다.






2) 조건을 입력하여 데이터 조회


SELET 열, 열 FROM 테이블 WHERE 조건


ex) series 열 중 값이 Artist인 데이터만 조회


SELECT * FROM products WHERE series="Artists";


 


ex) series 열 중 num가 포함된 데이터 조회


SELECT * FROM products WHERE series LIKE ‘%num%’;




* LIKE를 통해 유사검색을 할 수 있습니다.


=> %num%는 num 양 옆으로 문자가 없거나, 아무 문자나 위치해도 상관 없다는 뜻입니다.


=> _를 사용할 수 있습니다. %는 글자수에 제한이 없지만 _는 1글자를 의미합니다.


    즉 num___ 는 " num로 시작하는 3글자 "인 문자열 조건을 의미합니다.








3) 데이터 정렬


ORDER BY


ex) products 테이블을 name 열을 기준으로 오름차순으로 정렬


SELECT * FROM products ORDER BY name ASC; 


ASC를 명시하지 않아도 ORDER BY의 기본 값은 ASC입니다.




ex) products 테이블을 name 열을 기준으로 내림차순으로 정렬


SELECT * FROM products ORDER BY name DESC;




ex) products 테이블을 name 열을 내림차순으로, 같을 경우 다음 정렬 기준으로 series 열을 오름차순으로 정렬


SELECT * FROM products ORDER BY name DESC , series;




* NULL 값이 포함되어 있는 경우 MySQL에서는 NULL 값을 가장 작은 값으로 취급합니다.


* 정렬할 때 문자열은 사전식으로 이루어지며, 정수, 날짜 타입은 대소관계로 이루어집니다.


  ( 숫자가 문자열로 되었을 때 주의 )








4) 특정 위치에 있는 데이터 선택


LIMIT 


검색되는 데이터의 개수를 제한하고 싶을 경우 LIMIT을 사용합니다.


ex) products 테이블을 조회하는데, 상위 2개의 데이터를 조회


SELECT * FROM products LIMIT 2;




ex) 테이블에서 5개의 데이터를 건너뛴 뒤 상위 2개의 데이터를 조회


SELECT * FROM products LIMIT 5,2;






OFFSET


검색되는 데이터의 개수를 점프(Skip)하고 싶을 경우 OFFSET을 사용합니다.


ex) 처음 2개의 데이터를 건너뛰고 데이터를 조회


SELECT * FROM products OFFSET 2;









3. 데이터 수정


UPDATE 테이블명 SET 필드=값;


ex) products 테이블에서 id가 4인 데이터의 name을 uae로, serial_number를 3으로 수정


UPDATE products SET name=’uae’ , serial_number = 3 WHERE id = 4




* MySQL에서는 SET 내부가 한꺼번에 업데이트가 되는 것이 아니라 순차적으로 업데이트 됩니다.


* 주의!   조건(WHERE)을 사용하지 않으면 테이블의 모든 데이터가 변경됩니다.








4. 데이터 삭제


DELETE FROM 테이블명 조건;


ex) products 테이블의 id가 1인 데이터를 삭제


DELETE FROM products WHERE id = 1;




* 주의!   조건(WHERE)을 사용하지 않으면 테이블의 모든 데이터가 삭제됩니다.


  참고로 이 경우, 테이블 정의는 사라지지 않으므로 DROP TABLE 명령어와는 다른 명령어입니다.












SELECT 명령어 유의사항


1. SELECT 쿼리의 작성 순서는 아래와 같습니다.


SELECT


FROM


WHERE


GROUP BY


HAVING


ORDER BY


LIMIT




ex) SELECT * FROM products WHERE (id<5) AND (name like ‘%uae%’) ORDER BY name DESC LIMIT 3;


GROUP BY와 HAVING은 이 글에서는 다루지 않지만 참고로 작성하였습니다.






2. 수행 순서는 아래와 같습니다.


FROM


WHERE


GROUP BY


HAVING


ORDER BY


SELECT


LIMIT