[SQL] SQL 기초 1 (with MySQL)
SQL
Structured Query Language
Database server에 요청(질의)할 때 사용하는 언어
RDBMS에 속하는 제품들이 Database server를 제어할 때 사용하는 언어
MySQL 서버접속
cmd에서 MySQL 서버에 접속
mysql이 있는 경로에 들어가 아래 명령을 입력하고 root 비밀번호를 입력하면 서버에 접속할 수 있다.
1
./mysql -uroot -p
Error1820: You must reset your password
기본 비밀번호를 쓰는 경우에 발생하는 에러로,
SET PASSWORD = PASSWORD(‘0000’); 로 해결가능하다.
데이터베이스
생성 & 삭제
1
2
3
CREATE DATABASE databasename;
DROP DATABASE databasename;
목록
1
SHOW DATABASES;
현재 데이터베이스 목록을 보여주는 기능이다.
사용
1
USE databasename;
사용할 데이터베이스를 선택하는 기능이다.
테이블
생성
NOT NULL | 공백을 허용하지 않음 |
NULL | 공백 허용 |
AUTO_INCREMENT | 숫자 데이터 타입에 대해 작동하는 기능으로, 테이블에 레코드가 삽입될 때 마다 자동으로 순차적 값을 생성 ex) id = 1,2,3…,10,11.. |
PRIMARY KEY |
- 테이블에서 각 레코드를 유일하게 식별하는 데 사용되며, 테이블의 각 레코드에는 Primary Key 값이 반드시 있어야 한다.
- 각 레코드에 대해 고유함. (Unique)
- NULL 값을 허용하지 않음 (NOT NULL)
- 테이블당 하나의 기본키만 지정 가능
데이터 타입
위에서 사용한 데이터 타입만 간단히 설명하자면
VARCHAR(n) | n byte까지 넣을 수 있는 가변길이 문자열 (한글은 2byte 차지하므로 VARCHAR(50)이라면 25자까지 가능) |
TEXT | 최대 65,535 개의 문자 저장이 가능한 가변 길이 문자열 |
DATETIME | YYYY-MM-DD HH:MM:SS 날짜형식 |
테이블 구조 보기
1
DESC tablename;
DESC는 DESCRIBE의 약자로 위 명령을 사용하면 테이블의 구조를 한 눈에 확인할 수 있다.
INSERT
1
INSERT INTO tablename (column1, column2, column3) VALUES('a', 'b', 'c');
tablename 뒤에 추가하고자 하는 칼럼을 적고 VALUES에 차례대로 원하는 값을 적으면 된다.
(datatime 형식의 필드에서 NOW()를 사용하면 현재날짜와 시간이 자동으로 입력됨)
SELECT
1
SELECT column1, column2 FROM tablename;
전체보기
원하는 칼럼만
LIMIT
데이터가 무지하게 많을 때(몇억개..) 그냥 SELECT를 사용해버리면 컴퓨터가 멈춰버릴 수도 있다.
이 때 LIMIT n 을 주면 n개만큼의 데이터만 조회할 수 있다.
WHERE
WHERE - 테이블에서 특정 조건에 부합하는 데이터만 조회하고 싶을 때 사용
(author=’lee’에 해당하는 record만 보기)
ORDER BY
원하는 칼럼을 기준으로
ASC는 오름차순
DESC는 내림차순 정렬을 해준다
1
2
SELECT column1, column2,.. FROM tablename ORDER BY column3 ASC;
SELECT column1, column2,.. FROM tablename ORDER BY column3 DESC;
UPDATE
UPDATE는 필드를 수정할 때 쓰인다.
반드시 WHERE절과 함께 어떤 레코드의 값을 변경할 것인지 명시해야한다.
WHERE절을 빠뜨릴 경우 모든 행이 바뀌는 재앙을 맞닥뜨릴 수 있다.
1
UPDATE tablename SET column1 = 'value', column2 = 'value' WHERE id = 1;
DELETE
DELETE를 사용할 때에도 반드시 WHERE절과 함께 쓰면서 어떤 레코드의 값을 변경할 것인지 명시해야한다.
1
DELETE FROM tablename WHERE id = 1;
Leave a comment