SQL 기초 - 3. 기초 명령어

냄비짱·2022년 6월 29일
0

SQL 기초

목록 보기
4/11
post-thumbnail
post-custom-banner

기초 실습 환경

mysql> desc person
    -> ;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(16) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

1. INSERT

🎯 INSERT INTO _ VALUES

특정 테이블의 특정 컬럼에 데이터 추가

✍ 입력

insert into person (id, name, age, sex)    # column 순서에 맞게 입력값 배치
values (1, '이효리', 43,'F');

select * from person;                     # 모든 데이터 조회

💻 출력

Query OK, 1 row affected (0.01 sec)

mysql> select * from person;
+------+--------+------+------+
| id   | name   | age  | sex  |
+------+--------+------+------+
|    1 | 이효리 |   43 | F    |
+------+--------+------+------+
1 row in set (0.01 sec)

📌 모든 column의 값 추가 시엔 column명 생략 가능
- 데이터를 column 순서에 맞게 입력해야함

📌 value와 values는 차이가 없다
- 어떤 것을 써도 단일, 다중 데이터 입력이 가능하나,
다른 DB와의 통합할 경우를 대비해 values로 사용하는 것이 좋음


2. SELECT

🎯 SELECT _ FROM

테이블 내의 특정 컬럼에 대한 데이터 조회

✍ 입력

select name, age, sex from person;


select * from person;

💻 출력

+--------+------+------+
| name   | age  | sex  |
+--------+------+------+
| 이효리 |   43 | F    |
+--------+------+------+
1 rows in set (0.00 sec)


+------+--------+------+------+
| id   | name   | age  | sex  |
+------+--------+------+------+
|    1 | 이효리 |   43 | F    |
+------+--------+------+------+
1 rows in set (0.00 sec)

📌 column data를 다른 column명으로 불러올 수 있다.
- SELECT columnname 다른이름 FROM tablename

📌 columnname의 대소문자를 변경해도 불러올 수 있다.
- SELECT명령문에서 불러올 columnname의 대소문자를 변경하더라도 해당 column의 data를 불러오는 것이 가능하다.(대소문 혼용 가능)
- 하지만 원본데이터의 columnname은 변경되지 않는다.

🎯 SELECT FROM WHERE

테이블 내에서 조건을 만족하는 데이터 조회

✍ 입력

select * from person where sex = 'F';


select * from person where sex = 'M';

💻 출력

+------+--------+------+------+
| id   | name   | age  | sex  |
+------+--------+------+------+
|    1 | 이효리 |   43 | F    |
+------+--------+------+------+
1 rows in set (0.00 sec)


Empty set (0.00 sec)

📌 여러 개의 조건 추가 가능
- where 절 내에서 and, or을 입력하여 조건 추가


3. UPDATE/DELETE

🎯 UPDATE SET WHERE

테이블 내의 데이터 수정

✍ 입력

update person
set age=23
where name = '이효리';

select * from person where name='이효리';

💻 출력

+------+--------+------+------+
| id   | name   | age  | sex  |
+------+--------+------+------+
|    1 | 이효리 |   23 | F    |
+------+--------+------+------+
1 row in set (0.00 sec)

📌 명령문 순서 변경 시 syntax error 발생
- update where set 순서로 변경 시 ERROR 1064 (42000): You have an error in your SQL syntax 오류 메세지 출력

🎯 DELETE FROM WHERE

테이블 내의 데이터 삭제

✍ 입력

delete from person
where name = '이효리';

select * from person;

💻 출력

Query OK, 1 row affected (0.03 sec)

Empty set (0.00 sec)

📌 NULL 데이터 삭제시 is NULL(null) 활용
- 데이터 값이 null인 행 삭제 시 where columnname is NULL 입력


4. ORDER BY

기초 실습 환경

✍ 생성

mysql> create table celeb(
    ->
    ->     ID int not null auto_increment primary key,
    ->     NAME varchar(32) not null default '',
    ->     BIRTHDAY date,
    ->     AGE int,
    ->     SEX CHAR,
    ->     JOB_TITLE varchar(32),
    ->     AGENCY varchar(32)
    ->
    -> );
    
desc celeb;

select * from celeb;

💻 완료

+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| ID        | int         | NO   | PRI | NULL    | auto_increment |
| NAME      | varchar(32) | NO   |     |         |                |
| BIRTHDAY  | date        | YES  |     | NULL    |                |
| AGE       | int         | YES  |     | NULL    |                |
| SEX       | char(1)     | YES  |     | NULL    |                |
| JOB_TITLE | varchar(32) | YES  |     | NULL    |                |
| AGENCY    | varchar(32) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

+----+--------+------------+------+------+------------------+------------------+
| ID | NAME   | BIRTHDAY   | AGE  | SEX  | JOB_TITLE        | AGENCY           |
+----+--------+------------+------+------+------------------+------------------+
|  1 | 아이유 | 1993-05-16 |   29 | F    | 가수, 텔런트     | EDAM엔터테이먼트 |
|  2 | 이미주 | 1994-09-23 |   28 | F    | 가수             | 울림엔터테이먼트 |
|  3 | 송강   | 1994-04-23 |   28 | M    | 텔런트           | 나무엑터스       |
|  4 | 강동원 | 1981-01-18 |   41 | M    | 영화배우, 텔런트 | YG엔터테이먼트   |
|  5 | 유재석 | 1972-08-14 |   50 | M    | MC, 개그맨       | 안테나           |
|  6 | 차승원 | 1970-06-07 |   48 | M    | 영화배우, 모델   | YG엔터테이먼트   |
|  7 | 이수현 | 1999-05-04 |   23 | F    | 가수             | YG엔터테이먼트   |
+----+--------+------------+------+------+------------------+------------------+
7 rows in set (0.00 sec)

🎯 ORDER BY ASC/DESC

SELECT문에서 데이터를 가져올 시 특정 컬럼을 기준으로 오름차순 혹은 내림차순 정렬

✍ 입력

select age, name from celeb
order by age (ASC);                  # default가 ASC

💻 출력

+------+--------+
| age  | name   |
+------+--------+
|   23 | 이수현 |
|   28 | 이미주 |
|   28 | 송강   |
|   29 | 아이유 |
|   41 | 강동원 |
|   48 | 차승원 |
|   50 | 유재석 |
+------+--------+
7 rows in set (0.00 sec)

📌 정렬 조건 추가 시 by 절에 정렬 조건 추가
- 위 예제에서 나이 오름차순 정렬 후 이름 내림차순으로 정렬 시
order by age (asc), name desc 입력 (asc는 생략 가능)
- 입력한 정렬 조건 순서로 정렬이 진행됨

profile
개발도상인 냄비짱
post-custom-banner

0개의 댓글