# root 계정으로 mysql 접속
mysql -u root -p
# mysql 종료
EXIT
# database 목록 확인
show databases;
# database 생성
create database testdb;
# databse로 이동
use testdb;
# database 삭제
drop database testdb;
# user 조회
# 사용자 정보는 mysql에서 관리하므로 mysql 데이터베이스로 이동 후 조회
use mysql;
select host, user from user;
# user 생성
# 현재 PC에서만 접속 가능한 사용자 생성
create user 'username'@'localhost' identified by 'password';
# 외부에서 접속 가능한 사용자 생성
create user 'username'@'%' identified by 'password';
# user 삭제
drop user 'username'@'localhost'
drop user 'username'@'%'
# 실습 환경 설정
create database testdb;
# user 생성
use mysql
create user 'username'@'localhost' identified by 'password';
# user 권한 확인
show grants for 'username'@'localhost';
# user 권한 부여
# all: testdb의 모든 권한 부여
grant all on testdb.* to 'username'@'localhost';
# user 권한 삭제
revoke all on testdb.* 'username'@'localhost';
수정된 내용이 확인되지 않으면 새로고침 해보자.
flush privileges;
# 실습 환경 설정
# 데이터베이스에서 사용할 기본 자료형은 utf8mb4(다국어 지원)
create database zerobase default character set utf8mb4;
# 테이블 생성
create table mytable(id int, name varchar(16));
# 테이블 목록 확인
show tables;
# 테이블 상세 정보 확인
desc mytable;
# 테이블 이름 변경
alter table mytable rename person;
# 컬럼 추가
alter table person add column agee double;
# 컬럼의 데이터 타입 변경
alter table person modify column agee int;
# 컬럼의 이름 변경
alter table person change column agee age int;
# 컬럼 삭제
alter table person drop column age;
# 테이블 삭제
drop table person;
입력한 컬럼 이름 순서와 값의 순서가 일치하도록 해야 한다.
insert into person (id, name, age, sex)
values (1, 'jenny', 20, 'F');
# 모든 컬럼 값을 추가할 때는 컬럼 이름 생략 가능
insert into person
values (1, 'jenny', 20, 'F');
select * from person;
select * from person where sex='F';
select * from person where age=20;
update person set age=30 where name='jenny';
where절을 넣지 않으면 모든 데이터의 age 값이 30으로 변경된다.
delete from person where name='tom';
where절을 넣지 않으면 테이블 내 전체 데이터가 삭제된다.
# 실습 환경 설정
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(16),
AGENCY varchar(32)
);
ASC = 오름차순 (기본값)
DESC = 내림차순
select age, name from celeb order by age asc;
select age, name from celeb order by age desc;
select age, name from celeb order by age, name;
select age, name from celeb order by age desc, name asc;