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