create database mydb;
create database zerobase default character set utf8mb4;
use zerobase;
Database changed
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
| zerobase |
+--------------------+
drop database testdb;
use mysql;
select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
현재 PC에서만 접속 가능하고 비밀번호가 1234 인 사용자 생성
create user 'yun'@'localhost' identified by '1234'
외부에서 접속 가능하고 비밀번호가 1234인 사용자 생성
create user 'outyun'@'%' identifeid by '1234'
+-----------+------------------+
| host | user |
+-----------+------------------+
| % | outyun |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
| localhost | yun |
+-----------+------------------+
drop user 'yun'@'localhost';
drop user 'outyun'@'%';
show grants for 'yun'@'localhost';
+-----------------------------------------+
| Grants for yun@localhost |
+-----------------------------------------+
| GRANT USAGE ON *.* TO `yun`@`localhost` |
+-----------------------------------------+
grant all on zerobase.* to 'yun'@'localhost';
+-----------------------------------------------------------+
| Grants for yun@localhost |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO `yun`@`localhost` |
| GRANT ALL PRIVILEGES ON `zerobase`.* TO `yun`@`localhost` |
+-----------------------------------------------------------+
revoke all on zerobase.* from 'yun'@'localhost';
+-----------------------------------------+
| Grants for yun@localhost |
+-----------------------------------------+
| GRANT USAGE ON *.* TO `yun`@`localhost` |
+-----------------------------------------+
name : animal
컬럼 : name(varchar(16)), type(varchar(16))
create table animal(
name varchar(16),
type varchar(16)
);
show tables;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| animal |
| mytable |
+--------------------+
desc animal;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | De- fault | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(16) | YES | | NULL | |
| type | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
alter table mytable rename person;
+--------------------+
| Tables_in_zerobase |
+--------------------+
| animal |
| person |
+--------------------+
alter table person add column age_ double;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
| age_ | double | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
alter table person modify column age_ int;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
| age_ | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
alter table person chage column age_ age int
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
| age | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
alter table person drop column age;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
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 | |
+-------+-------------+------+-----+---------+-------+
insert into person (id, name, age, sex)
values (1, '이효리', 43, 'F');
+------+-----------+------+------+
| id | name | age | sex |
+------+-----------+------+------+
| 1 | 이효리 | 43 | F |
+------+-----------+------+------+
insert into person values (2, '이상순', 48, 'M');
select name, age from person;
+-----------+------+
| name | age |
+-----------+------+
| 이효리 | 43 |
| 이상순 | 48 |
+-----------+------+
select * from person where sex='F';
+------+-----------+------+------+
| id | name | age | sex |
+------+-----------+------+------+
| 1 | 이효리 | 43 | F |
+------+-----------+------+------+
updata person set age=23 where name='이효리';
+------+-----------+------+------+
| id | name | age | sex |
+------+-----------+------+------+
| 1 | 이효리 | 23 | F |
| 2 | 이상순 | 48 | M |
+------+-----------+------+------+
delete from table where name='이상순'
+------+-----------+------+------+
| id | name | age | sex |
+------+-----------+------+------+
| 1 | 이효리 | 23 | F |
+------+-----------+------+------+
desc 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 | |
+-----------+-------------+------+-----+---------+----------------+
select * from celeb;
+----+-----------+------------+------+------+-------------------------+--------------------------+
| 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 | 58 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+--------------------------+
이름과 나이를 나이순으로 조회
select age, name from celeb order by age;
+------+-----------+
| age | name |
+------+-----------+
| 23 | 이수현 |
| 28 | 이미주 |
| 28 | 송강 |
| 29 | 아이유 |
| 41 | 강동원 |
| 48 | 차승원 |
| 58 | 유재석 |
+------+-----------+
select name, age from celeb order by age desc;
+-----------+------+
| name | age |
+-----------+------+
| 유재석 | 58 |
| 차승원 | 48 |
| 강동원 | 41 |
| 아이유 | 29 |
| 이미주 | 28 |
| 송강 | 28 |
| 이수현 | 23 |
+-----------+------+
select name, age from celeb order by age desc, name asc;
+-----------+------+
| name | age |
+-----------+------+
| 유재석 | 58 |
| 차승원 | 48 |
| 강동원 | 41 |
| 아이유 | 29 |
| 송강 | 28 |
| 이미주 | 28 |
| 이수현 | 23 |
+-----------+------+
+-------+----------------------------------+
| 연산자 | 의미 |
+-------+----------------------------------+
| A=B | A와 B가 같은 |
| A>B | A가 B보다 큰 (초과) |
| A<B | A가 B보다 작은 (미만) |
| A>=B | A가 B보다 크거나 같은 (이상) |
| A<=B | A가 B보다 작거나 같은 (이하) |
| A<>B | A가 B보다 크거나 작은 (같지않은) |
| A!=B | A와 B가 같지않으 |
+-------+----------------------------------+
나이가 29 보다 큰 데이터 검색
select * from celeb where age > 29 order by age;
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나 |
+----+-----------+------------+------+------+-------------------------+----------------------+
이름이 아이유인 데이터 검색
select name, age, agency from celeb where name = '아이유' ;
+-----------+------+------------------------+
| name | age | agency |
+-----------+------+------------------------+
| 아이유 | 29 | EDAM엔터테이먼트 |
+-----------+------+------------------------+
성별이 남자인 데이터의 이름, 성별, 소속사 정보를 나이의 역순으로 정렬 뒤 소속사 순으로 정렬
select name, sex, agency from celeb where sex='M' order by age desc, agency;
+-----------+------+----------------------+
| name | sex | agency |
+-----------+------+----------------------+
| 유재석 | M | 안테나 |
| 차승원 | M | YG엔터테이먼트 |
| 강동원 | M | YG엔터테이먼트 |
| 송강 | M | 나무엑터스 |
+-----------+------+----------------------+
+----------+-----------------------------------+
| 연산자 | 의미 |
+----------+-----------------------------------+
| AND | 조건을 모두 만족하는 경우 TRUE |
| OR | 하나의 조건이라도 만족하는 경우 TRUE |
| NOT | 조건을 만족하지 않는 경우 TRUE |
| BETWEEN | 조건겂이 범위 사이에 있으면 TRUE |
| IN | 조건값이 목록에 있으면 TRUE |
| LIKE | 조건값이 패턴에 맞으면 TRUE |
+----------+-----------------------------------+
나이가 29세이고 성별이 여성인 데이터 검색
select * from celeb where sex ='F' and age =29;
+----+-----------+------------+------+------+-------------------+------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------+------------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+------------------------+
성별이 남자이고 나이가 40세 보다 큰 데이터를 이름의 역순으로 정렬
select * from celeb where sex='M' and age>40 order by name desc;
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+----------------------+
나이가 25세 보다 작거나 30세 보다 큰 데이터 검색
select * from celeb where age <25 or age>30;
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+----------------------+
나이가 29세보다 작고 여자이거나, 나이가 30세 보다 크고 남자인 데이터를 나이와 성별 순으로 정렬하여 검색
select * from celeb where (age <29 and sex ='F') or (age>30 and sex='M') order by age, sex;
+----+-----------+------------+------+------+-------------------------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+--------------------------+
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나 |
+----+-----------+------------+------+------+-------------------------+--------------------------+
소속사가 YG 면서 남자가 아니거나 직업이 가수면서 소속사가 YG가 아닌 데이터 검색
select * from celeb where (agency = 'YG엔터테이먼트' and not sex = 'M') or ( job_title ='가수' and not agency ='YG엔터테이먼트');
+----+-----------+------------+------+------+-----------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-----------+--------------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-----------+--------------------------+
생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
select * from celeb where (birthday >= 19900101 and not sex ='F') or ( birthday < 19800101 and not agency = '안테나');
+----+-----------+------------+------+------+----------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+----------------------+----------------------+
| 3 | 송강 | 1994-04-23 | 28 | M | 텔런트 | 나무엑터스 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
+----+-----------+------------+------+------+----------------------+----------------------+
나이가 20세에서 40세 사이의 데이터 검색
select * from celeb where age between 20 and 40;
+----+-----------+------------+------+------+-------------------+--------------------------+
| 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 | 텔런트 | 나무엑터스 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG면서 나이가 20세에서 45세 사이가 아닌 데이터 검색
select * from celeb where (birthday not between 19800101 and 19950101 and sex ='F') or (agency = 'YG엔터테이먼트' and not (age>=20 and age<=45));
+----+-----------+------------+------+------+----------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+----------------------+----------------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+----------------------+----------------------+
나이가 28세, 48세 중 하나인 데이터 검색
select * from celeb where age in (28, 48);
+----+-----------+------------+------+------+----------------------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+----------------------+--------------------------+
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 텔런트 | 나무엑터스 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
+----+-----------+------------+------+------+----------------------+--------------------------+
소속사가 나무엑터스, 안테나, 울림이 아니면서, 성별이 여자이거나 나이가 45세 이상인 데이터 검색
select * from celeb where (not agency in ('나무엑터스', '안테나', '울림엔터테이먼트')) and (sex
= 'F' or age>=45);
+----+-----------+------------+------+------+----------------------+------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+----------------------+------------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+----------------------+------------------------+
소속사 이름이 'YG엔터테이먼트' 검색
select * from celeb where agency like 'YG엔터테이먼트';
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+----------------------+
소속사 이름이 'YG'로 시작하는 데이터 검색
mysql> select * from celeb where agency like 'YG%';
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+----------------------+
작업명에 '가수'가 포함된 데이터 검색
mysql> select * from celeb where job_title like '%가수%';
+----+-----------+------------+------+------+-------------------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------+--------------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
소속사의 두번째 글자가 'G'인 데이터 검색
mysql> select * from celeb where agency like '_G%';
+----+-----------+------------+------+------+-------------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------------+----------------------+
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 텔런트 | YG엔터테이먼트 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------------+----------------------+
직업명이 '가'로 시작하고 최소 2글자 이상인 데이터 검색
mysql> select * from celeb where job_title like '가_%';
+----+-----------+------------+------+------+-------------------+--------------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+-------------------+--------------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 텔런트 | EDAM엔터테이먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테이먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테이먼트 |
+----+-----------+------------+------+------+-------------------+--------------------------+
직업명이 '영' 으로 시작하고 '모델'로 끝나는 데이터 검색
mysql> select * from celeb where job_title like '영%모델';
+----+-----------+------------+------+------+----------------------+----------------------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+----------------------+----------------------+
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테이먼트 |
+----+-----------+------------+------+------+----------------------+----------------------+
직업이 하나 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
select * from celeb where (job_title like '%,%') and not (job_title like '%영화배우%' or job_title like '%텔런트%');
+----+-----------+------------+------+------+---------------+-----------+
| ID | NAME | BIRTHDAY | AGE | SEX | JOB_TITLE | AGENCY |
+----+-----------+------------+------+------+---------------+-----------+
| 5 | 유재석 | 1972-08-14 | 58 | M | MC, 개그맨 | 안테나 |
+----+-----------+------------+------+------+---------------+-----------+