[SQL] 기본 SQL 문법
=======================================================
SQL 에 대하여 ..
=======================================================
SQL (Structured Query Language)은 관계 언어로서 IBM에서 최초로 개발
되었습니다. 현재 ANSI 와 ISO에 의해 표준으로 인정되어 거의 모든 DBMS
(데이터베이스 관리 시스템)의 기본 언어로 채택되어 있습니다. 따라서
어떤 데이터베이스 시스템을 사용하든 SQL문은 거의 동일 하므로 잘 이해
해 두셔야 합니다. 데이타베이스 관리자나 프로그램머는 SQL 문을 가지고
다음과 같은 일들을 할수 있습니다.
1. 데이터베이스 구조 변경
2. 데이터베이스 테이블에 관한 새 사용자 추가 및 접근 권한 허가
3. 데이터베이스 쿼리
4. 데이터베이스 레코드 정보 갱신
SQL 문은 그 사용용도에 따라 크게 두가지로 나눕니다.
SQL 정의문과 데이터 조작문. 이 두가지는 각각 다른 기능을 가지는데
아래와 같습니다.
SQL 정의문 :
테이블 스키마를 정의하여 새로운 테이블을 생성하거나 테이블 스키마를
변경 또는 테이블 자체를 삭제하는 것과 같은 논리적인 데이터 구조를
정의 하는 명령문입니다.
1. 테이블 생성,수정,삭제
2. 저장할 데이터와 자료형의 정의
사용되는 SQL 문으로는 create, alter, drop ..
데이터 조작문 :
실제 데이터에 대해 어떤 조작을 가하는 명령문입니다. 예를 들어
데이터를 검색하거나 데이터를 삽입, 삭제, 또는 갱신 하는 작업이 이에
해당합니다.
1. 새로운 데이터의 삽입
2. 저장된 데이터의 수정,삭제,검색
사용되는 SQL 문으로는 select, update, delete, insert ..
SQL 사용하기..
이제 간단하게 SQL 을 사용하여 데이터베이스를 전반적으로 살펴 보도록
하자.
먼저 mysql 접속한다.
$ mysql -u root -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 1 to server version: 3.23.37
Type ‘help;’ or ‘\\h’ for help. Type ‘\\c’ to clear the buffer
mysql>
이와 같이 mysql> 가 뜬다.
mysql> show databases;
+———–+
| Database |
+———–+
| board |
| shopdb |
| sysmng |
| test |
| test1 |
+———–+
5 rows in set (0.00 sec)
show databases 는 MySQL 에 존재하는 모든 데이타베이스 목록을 보여준다.
SQL 문은 모두 ; 으로 명령 종료를 알려 준다. 마지막엔 결과의 실행 시간을
나타낸다. use 명령문에 대해 알아보자.
mysql> use board
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
위와 같은 use 는 DB 를 선택하여 이제 선택된 DB 를 사용하겠다는 의미이다.
여기서는 board 란 데이타 베이스를 사용하겠다는 의미이다.
mysql> show tables;
+—————–+
| Tables_in_board |
+—————–+
| alang |
| dba |
| diary |
| free |
| linux |
| php |
| qna |
| study |
| temp |
| tip |
+—————–+
10 rows in set (0.00 sec)
show tables 는 현재 선택된 DB(board)에 어떤 테이블이 존재하는지 알아보
는 명령어다.
mysql> desc alang;
+——–+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+——–+————–+——+—–+———+—————-+
| no | int(6) | | PRI | NULL | auto_increment |
| num | int(6) | | MUL | 0 | |
| idx | int(6) | | MUL | 0 | |
| date | int(11) | | MUL | 0 | |
| host | tinytext | YES | | NULL | |
| name | tinytext | YES | | NULL | |
| passwd | varchar(13) | YES | | NULL | |
| email | tinytext | YES | | NULL | |
| url | tinytext | YES | | NULL | |
| title | tinytext | YES | | NULL | |
| text | mediumtext | YES | | NULL | |
| refer | int(6) | | | 0 | |
| reyn | int(1) | | | 0 | |
| reno | int(6) | | MUL | 0 | |
| rede | int(6) | | | 0 | |
| reto | int(6) | | MUL | 0 | |
| html | int(1) | | | 1 | |
| moder | int(1) | | | 0 | |
| bofile | varchar(100) | YES | | NULL | |
| bcfile | varchar(100) | YES | | NULL | |
| bfsize | int(4) | YES | | NULL | |
+——–+————–+——+—–+———+—————-+
21 rows in set (0.00 sec)
desc 는 테이블이 어떤 데이터 형식으로 이루어져 있는지 테이블의 내부
구조를 알아보는것이다.
이렇게 show,use,desc 명령어를 통해 데이타 베이스의 구조와 형식을
알아 볼수 있다.
SQL을 사용하면서 몇가지 규칙이 있다.
1. SQL 명령문은 반드시 세미콜론으로 끝나야 한다.
2. 사용자가 mysql shell 에서 명령을 정의하면 mysql 은 그 명령을 서
로 보내고 서버는 이명령을 처리하여 결과를 다시 화면에 뿌려준다.
3. MySQL 은 저장된 데이터를 행과 열의 상태로 보여준다.
4. MySQL 은 명령 실행 시간을 보여준다.
5. MySQL shell 에서 입력되는 키워드는 대소문자 구별을 하지 않는다.
이제 select 를 이용하여 테이블에 어떤 데이타가 저장되어져 있는지
검색하여 보자.
mysql> use mysql ( mysql DB 를 선택한다. )
mysql> show tables; ( mysql DB 에 어떤 테이블이 있는지 살펴본다. )
+—————–+
| Tables_in_mysql |
+—————–+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+—————–+
6 rows in set (0.00 sec)
mysql> desc db; (db 란 테이블이 어떤 구조로 되어져 있는지 살펴본다.)
+—————–+—————+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+—————–+—————+——+—–+———+——-+
| Host | char(60) | | PRI | | |
| Db | char(32) | | PRI | | |
| User | char(16) | | PRI | | |
| Select_priv | enum(‘N’,’Y’) | | | N | |
| Insert_priv | enum(‘N’,’Y’) | | | N | |
| Update_priv | enum(‘N’,’Y’) | | | N | |
| Delete_priv | enum(‘N’,’Y’) | | | N | |
| Create_priv | enum(‘N’,’Y’) | | | N | |
| Drop_priv | enum(‘N’,’Y’) | | | N | |
| Grant_priv | enum(‘N’,’Y’) | | | N | |
| References_priv | enum(‘N’,’Y’) | | | N | |
| Index_priv | enum(‘N’,’Y’) | | | N | |
| Alter_priv | enum(‘N’,’Y’) | | | N | |
+—————–+—————+——+—–+———+——-+
mysql> select Host,Db,User from db;
+———–+———–+——-+
| Host | Db | User |
+———–+———–+——-+
| localhost | board | alang |
| localhost | kimsboard | zzang |
| localhost | test1 | sys |
| localhost | test | alang |
| localhost | junboard | alang |
| localhost | jsboard | zzang |
| localhost | coollink | alang |
| localhost | member | alang |
| localhost | sysmng | alang |
| localhost | kobis | kobis |
| localhost | phpboard | zzang |
| localhost | shopdb | shop |
| localhost | nos | mcse |
+———–+———–+——-+
13 rows in set (0.03 sec)
db 란 테이블의 필드중 Host,Db,User 에 어떤 값들이 저장되어져 있는지
검색한다. 이에 나타난 화면들은 어떤 사용자들이 어떤 DB 를 사용하는지에
대해 알수 있다.