기초 실습 환경
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)
특정 테이블의 특정 컬럼에 데이터 추가
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로 사용하는 것이 좋음
테이블 내의 특정 컬럼에 대한 데이터 조회
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 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을 입력하여 조건 추가
테이블 내의 데이터 수정
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 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 입력
기초 실습 환경
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)
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는 생략 가능)
- 입력한 정렬 조건 순서로 정렬이 진행됨