본문 바로가기
SQL

SQL (Structured Query Language)

by EUN-JI 2023. 8. 31.

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   <- ASCDefault 값이라 생략해도 됨. 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

// 다수의 필드명 sitename으로 정렬함

 

항목의 개수세기

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};