앞 절에서 테이블을 생성하고 생성된 테이블의 구조를 변경하는 명령어에 대해서 알아보았다. (DDL)
지금 부터는 만들어진 테이블에 관리하기를 원하는 자료들을 입력, 수정, 삭제, 조회하는 DML(DATA MANIPULATION LANGUAGE) 사용 방법을 알아본다.
mysql> DESC PLAYER
-> ;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| PLAYER_ID | char(7) | NO | PRI | NULL | |
| PLAYER_NAME | varchar(20) | NO | | NULL | |
| TEAM_ID | char(3) | NO | | NULL | |
| E_PLAYER_NAME | varchar(40) | YES | | NULL | |
| NICKNAME | varchar(30) | YES | | NULL | |
| JOIN_YYY | char(4) | YES | | NULL | |
| POSITION | varchar(10) | YES | | NULL | |
| NATION | varchar(20) | YES | | NULL | |
| BACK_NO | decimal(2,0) | YES | | NULL | |
| BIRH_DATE | datetime | YES | | NULL | |
| SOLAR | char(1) | YES | | NULL | |
| HEIGHT | smallint | YES | | NULL | |
| WEIGHT | smallint | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
13 rows in set (0.00 sec)
1. INSERT
해당 칼럼명과 입력되어야 하는 값을 서로 1:1 로 매핑해서 입력하면 된다.
해당 칼럼의 데이터 유형 이 CHAR 나 VARCHAR2 등 문자 유형일 경우 『 ' 』(SINGLE QUOTATION)로 입력할 값을 입력한 다.
숫자일 경우 『 ' 』(SINGLE QUOTATION)을 붙이지 않아야 한다.
▶ INSERT INTO 테이블명 (COLUMN_LIST)VALUES (COLUMN_LIST 에 넣을 VALUE_LIST);
▶ INSERT INTO 테이블명 VALUES (전체 COLUMN 에 넣을 VALUE_LIST);
첫 번째 유형은 테이블의 칼럼 을 정의할 수 있는데, 이때 칼럼의 순서는 테이블의 칼럼 순서와 매치할 필요는 없으며, 정의하지 않은 칼럼은 Default 로 NULL 값이 입력된다.
단, Primary Key 나 Not NULL 로 지정된 칼럼은 NULL 이 허용되지 않는다.
두 번째 유형은 모든 칼럼에 데이터를 입력하는 경우로 굳이 COLUMN_LIST 를 언급하지 않아도 되지만, 칼럼의 순서대로 빠짐없이 데이터가 입력되어야 한다.
데이터를 입력하는 경우 정의되지 않은 미지의 값인 E_PLAYER_NAME 은 두 개의 『 '' 』SINGLE QUOTATION 을 붙여서 표현하거나, NATION 이나 BIRTH_DATE 의 경우처럼 NULL 이라고 명시적 으로 표현할 수 있다
mysql> INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, BACK_NO, HEIGHT, WEIGHT) VALUES ( '2002007', '박지성', 'K07', 'MF',7,178,73);
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO PLAYER VALUES ('2002010', '이청용', 'K07','', 'BlueDragon', '2002', 'MF','', 17,NULL,'1',180,67);
Query OK, 1 row affected (0.01 sec)
2. SELECT
SELECT [ALL/DISTINCT] 보고 싶은 칼럼명, 보고 싶은 칼럼명, … FROM 해당 칼럼들이 있는 테이블명;
1. ALL
-Default 옵션이므로 별도로 표시하지 않아도 된다.
- 중복된 데이터가 있어도 모두 출력한다.
2. DISTINCT
- 중복된 데이터가 있는 경우 1 건으로 처리해서 출력한다.
- 조회하기를 원하는 칼럼명을 SELECT 다음에 콤마 구분자(,)로 구분하여 나열하고, FROM 다음에 해당 칼럼이 존재하는 테이블명을 입력하여 실행시킨다.
mysql> SELECT PLAYER_ID, PLAYER_NAME from player;
+-----------+-------------+
| PLAYER_ID | PLAYER_NAME |
+-----------+-------------+
| 2002007 | 박지성 |
| 2002010 | 이청용 |
+-----------+-------------+
2 rows in set (0.00 sec)
3. 와일드카드 애스터리스크(*)
mysql> SELECT * FROM PLAYER
-> ;
+-----------+-------------+---------+---------------+------------+----------+----------+--------+---------+-----------+-------+--------+--------+
| PLAYER_ID | PLAYER_NAME | TEAM_ID | E_PLAYER_NAME | NICKNAME | JOIN_YYY | POSITION | NATION | BACK_NO | BIRH_DATE | SOLAR | HEIGHT | WEIGHT |
+-----------+-------------+---------+---------------+------------+----------+----------+--------+---------+-----------+-------+--------+--------+
| 2002007 | 박지성 | K07 | NULL | NULL | NULL | MF | NULL | 7 | NULL | NULL | 178 | 73 |
| 2002010 | 이청용 | K07 | | BlueDragon | 2002 | MF | | 17 | NULL | 1 | 180 | 67 |
+-----------+-------------+---------+---------------+------------+----------+----------+--------+---------+-----------+-------+--------+--------+
2 rows in set (0.00 sec)
4. ALIAS(AS) 부여하기
- 조회된 결과에 일종의 별명(ALIAS, ALIASES)을 부여해서 칼럼 레이블을 변경할 수 있다.
칼럼 별명 (ALIAS)에 대한 사항을 정리하면 다음과 같다.
- 칼럼명 바로 뒤에 온다.
- 칼럼명과 ALIAS 사이에 AS, as 키워드를 사용할 수도 있다. (option)
- 이중 인용부호(Double quotation)는 ALIAS 가 공백, 특수문자를 포함할 경우와 대소문자 구분 이 필요할 경우 사용된다.
- 별명 중간에 공백이 들어가는 경우 " "을 사용해야 한다.
mysql> SELECT PLAYER_ID AS 선수아이디, PLAYER_NAME AS 선수명, TEAM_ID AS 팀명 FROM PLAYER;
+------------+--------+------+
| 선수아이디 | 선수명 | 팀명 |
+------------+--------+------+
| 2002007 | 박지성 | K07 |
| 2002010 | 이청용 | K07 |
+------------+--------+------+
2 rows in set (0.00 sec)
3. 산술 연산자와 합성 연산자
1. 산술 연산자
- NUMBER 와 DATE 자료형에 대해 적용된다.
- 우선순위를 위한 괄호 적용이 가능
mysql> SELECT PLAYER_NAME AS 이름, ROUND(WEIGHT / ((HEIGHT/100) * (HEIGHT/100)),2) AS BMI비만지수 FROM PLAYER;
+--------+-------------+
| 이름 | BMI비만지수 |
+--------+-------------+
| 박지성 | 23.04 |
| 이청용 | 20.68 |
+--------+-------------+
2 rows in set (0.00 sec)
2. 합성(CONCATENATION) 연산자
- (Oracle) : 문자와 문자를 연결하는 경우 2 개의 수직 바(||)에 의해 이루어진다.
- (SQL Server) : 문자와 문자를 연결하는 경우 + 표시에 의해 이루어진다.
- 두 벤더 모두 공통적으로 CONCAT (string1, string2) 함수를 사용할 수 있다.
- 칼럼과 문자 또는 다른 칼럼과 연결시킨다.
- 문자 표현식의 결과에 의해 새로운 칼럼을 생성한다.
mysql> SELECT CONCAT(PLAYER_NAME,'선수') AS NAME FROM PLAYER;
+------------+
| NAME |
+------------+
| 박지성선수 |
| 이청용선수 |
+------------+
2 rows in set (0.00 sec)
'Deperecated > SQLD' 카테고리의 다른 글
SQLD - 함수(FUNCTION) (0) | 2020.02.17 |
---|---|
SQLD - WHERE절 (0) | 2020.02.16 |
SQLD - TCL (0) | 2020.02.16 |
SQLD - DDL (0) | 2020.02.14 |