SQL [Structured Query Language]
데이터베이스를 사용할 때, 데이터베이스에 접근할 수 있는 데이터베이스 하부 언어
1. 테이블 만들기 ( Create )
• 형식
"CREATE TABLE 테이블이름(Column1명 자료타입, Column2명 자료타입, Column3명 자료타입)"
• 예시
"CREATE TABLE Board(id INT(10), name VARCHAR(20), msg TEXT)"
2. 데이터 삽입( Instert )
• 형식1
"INSERT INTO table_name VALUES (value1, value2, value3)"
• 형식2
"INSERT INTO table_name (column1, column2, column3) VALUES ('value1', 'value2', 'value3')"
• 예시
"INSERT INTO Board (name, msg) VALUES ('sam','Hello world')"
3. 모든 데이터 검색( Select * )
• 형식1
"select * from table_name"
• 형식2
"select column_name(s) from table_name"
• 예시1
"select * from Board"
• 예시2
"select name, msg from Board"
4. 특정 데이터 검색( select * from table_name WHERE )
• 형식1
"select * from table_name where colomn='검색값' "
• 형식2
"select * from table_name where colomn1='검색값' and colomn2='검색값' "
• 형식3
"select * from table_name where colomn1='검색값' or colomn2='검색값' "
• 예시1
"select * from table where name = 'sam' "
• 예시2
"select * from table where name = 'sam' and age='22' "
• 예시3
"select * from table where name = 'sam' or age='22' "
• 예시4
"select * from table where name like 'sam' "
5. 데이터 수정( Update )
• 형식1
"UPDATE table SET column1 = value, column2 = value2 WHERE column = value"
• 예시1
index | name | age |
1 | park | 38 |
2 | song | 36 |
3 | sam | 42 |
"UPDATE Board SET age = 37 WHERE name = 'sam' "
index | name | age |
1 | park | 38 |
2 | song | 36 |
3 | sam | 37 |
6. 데이터 삭제( Delete )
• 형식1
" DELETE FROM table WHERE column = 'value' "
• 형식2
" DELETE FROM table "
• 예시1
"DELETE FROM Board WHERE user_name = 'sam' "
• 예시2
"DELETE FROM Board "
7.기타
1) ORDER BY
※요약
SELECT문으로 검색된 데이터를 오름차순(ASC)이나 내림차순(DESC)으로 정렬 시킬 때 사용한다.
Default값은 Ascending(오름차순)으로써 ASC는 생략해도 되며, 문자는 알파벳 순서로 출력된다.
ORDER BY절에 선택된 컬럼이 여러 개일 경우 앞(왼쪽)에 정의된 컬럼을 기준으로 먼저 분류한 후, 이후에 나열된 순서대로 분류한다.
※용어 설명
오름차순 : 작은 값부터 큰 값 쪽으로의 순서 ex)1, 2, 3, 4, n, n+1...
내림차순 : 큰 값부터 작은 값 쪽으로의 순서 ex)5, 4, 3, 2, 1
• 예시
1. SELECT empno FROM emp ORDER BY empno DESC
2-1. SELECT empno FROM emp ORDER BY empno ASC
2-2. SELECT empno FROM emp ORDER BY empno <- ASC는 Default 값이라 생략해도 됨. 2번과 동일
3. SELECT job FROM emp ORDER BY empno <- ORDER BY절에 지정된 컬럼이 SELECT절에 지정되어 있지 않아도 정렬됨.
※복수개의 정렬조건은 콤마(,) 구분자를 통해 추가 가능
1)먼저 정렬 기준이 없이 단순한 쿼리문
SELECT * FROM tableName WHERE site="webisfree.com";
2)이번에는 정렬할 필드가 하나인 경우 - site 필드 기준으로 정렬
SELECT * FROM tableName WHERE site="webisfree.com" ORDER BY site; // 필드명 site의 정렬함
3) 만약 정렬할 필드가 두 개이상인 경우 - site, name 두개의 필드로 정렬
SELECT * FROM tableName WHERE site="webisfree.com" ORDER BY site ASC, name ASC
// 다수의 필드명 site와 name으로 정렬함
※ 항목의 개수세기
COUNT() 함수는 테이블에 컬럼의 데이터 갯수를 가져옴. 이 때 NULL인 데이터는 제외하고 계산함.
전체 행 개수를 가져올 때는 컬럼 대신에 *를 지정합니다.
1) 전체 행 갯수 가져오기
SELECT COUNT(*) FROM 테이블;
SELECT COUNT(*) FROM hero_collection;
2) 컬럼 데이터 갯수 가져오기
SELECT COUNT(컬럼) FROM 테이블;
SELECT COUNT(name) FROM hero_collection;
· SQL 문은 다음 "ACCESS_LOG"테이블 "SITE_ID"= 3 인 'count' 열의 개수 요청
SELECT COUNT(count) FROM access_log WHERE site_id=3;
3) 개수에 대한 조건 지정가능
SELECT COUNT('col'), COUNT(IF(a>1, a, NULL)) FROM {TABLE_NAME};