Post

SQL_1 (권한관리, 생성, 삭제)

🙅‍♂️휴대폰으로 볼 때 혹시 글자나 숫자가 화면에 다 안나오면, 휴대폰 가로로 돌리시면 됩니다




1
2
3
4
5
6
7
8
9
10
11
12
<목차>
0. 들어가며
1. Database & SQL
2. 실행
3. DB관리
4. user 관리
5. user 권한 관리
6. table 생성
7. insert
8. update
9. delete
10. orderby


0. 들어가며

SQL 1~8까지 전부 제로베이스 데이터스쿨 강의를 듣고 작성했습니다.





1. Database & SQL

sql을 알기 전에 Database, DBMS, RDB를 우선 알아야합니다.
Database
여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체.

DBMS:
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어

RDB:
서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

SQL

데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

  • 데이터 정의 언어 (DDL: Data Definition Language): CREATE, ALTER, DROP 등의 명령어
  • 데이터 조작 언어 (DML: Data Manipulation Language): INSERT, UPDATE, DELETE, SELECT 등의 명령어
  • 데이터 제어 언어 (DCL: Data Control Language): GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어



2. 실행

https://dev.mysql.com/downloads/installer/
아래 큰 파일 설치 후에 windows 버튼 누릅니다 —> mysql command line client
그 다음 MySQL 8.0 Command Line Client에서 비밀번호를 입력합니다
이후 저는 Line Client와 workbench 두 곳에서 실습하였습니다

Desktop View Desktop View




3. DB관리

1
2
# 로그인(Line Client 창)
mysql -u root -p

3-1) 내가 가진 db 보기

1
show databases;

3-2) DB 생성

1
2
3
4
# utf8mb4 --> 다국어, 😉지원
create database db이름 default character set utf8mb4;
⬇️
create database zerobase default character set utf8mb4;

3-3) DB제거

1
2
3
drop database db이름;
⬇️
drop database zerobase;

3-4) DB사용

1
2
3
use db이름;
⬇️
use zerobase;






4. user 관리

show databases;를 입력하면 mysql이 나올텐데 사용자 정보는 mysql에서 관리합니다
그러므로 use mysql; 부터 입력하고 시작합니다

4-1) 로컬사용자 생성

1
2
3
create user '이름'@'localhost' identified by '비밀번호';
⬇️
create user 'joonk2'@'localhost' identified by '1234';

4-2) 외부사용자 생성

1
2
3
create user '이름'@'%' identified by '비밀번호';
⬇️
create user 'admin'@'%' identified by '1234';

4-3) user 조회

사용자 정보는 mysql 에서 관리하므로 일단 mysql 데이터베이스로 이동 후 조회

1
2
3
4
5
use db이름;
select host, user from user;
⬇️
use zerobase;
select host, user from user;

4-4) local host 제거

1
2
3
drop user '이름'@'localhost';
⬇️
drop user 'joonk2'@'localhost';

4-5) 외부접속자 제거

1
2
3
drop user '이름'@'%';
⬇️
drop user 'admin'@'%';







5. user 권한 관리

5-1) 권한 확인(로컬)

1
2
3
show grants for '이름'@'localhost';
⬇️
show grants for 'joonk2'@'localhost';

5-2) 권한 부여 (로컬)

1
2
3
grant all on db이름.* to '이름'@'localhost'
⬇️
grant all on zerobase.* to '이름'@'localhost'

5-3) 새로고침

1
flush privileges;

5-4) 권한 삭제

1
2
3
revoke all on db이름.* from '이름'@'localhost';
⬇️
revoke all on zerobase.* from 'joonk2'@'localhost';







6. table 생성

use db이름; 먼저 입력하고 시작합니다!

6-1) table 생성

1
2
3
4
5
6
7
8
9
10
# id(int) name(varchar(16) 컬럼을 가지는 music 테이블 생성
create table 테이블명(id int, name varchar(16));
⬇️
create table test1(id int, name varchar(16));

# 테이블 목록 확인
show tables;

# 테이블 상세정보 확인
desc test1;

6-2) table 이름 변경

1
2
3
alter table 테이블명 rename 변경할 테이블명;
⬇️
alter table test1 rename person;

6-3) 컬럼추가

테이블에 먼저 접근할 것, 그리고 변경후 확인

1
2
3
4
5
6
# (double) 컬럼
alter table 테이블명 add column 컬럼명 double;
desc 테이블;
⬇️
alter table person add column age double;
desc person;

6-4) 컬럼 dtype, 컬럼명 변경

테이블에 먼저 접근할 것, 그리고 변경후 확인

1
2
3
4
5
6
7
alter table 테이블명 modify column 컬럼명 dtype;
alter table 테이블명 change column 컬럼명 바꿀컬럼명 dtype;
desc 테이블명;
⬇️
alter table person modify column age int;
alter table person change column age 나이 int;
desc person;

6-5) 컬럼, 테이블 삭제

테이블에 먼저 접근할 것, 그리고 변경후 확인

1
2
3
4
5
6
7
8
9
alter table 테이블명 drop column 컬럼명;
desc 테이블명;
drop table 테이블명;
show tables;
⬇️
alter table person drop column 나이;
desc person;
drop table person;
show tables;







7. insert

선행 과정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 사용할 db 생성
create database db이름;

# db사용
use db이름;

#table 확인
show tables;

# person테이블 생성
create table person
(
id int,
name varchar(16),
age int,
sex char
);

# 확인
desc person;

7-1) insert

1
2
3
4
5
# insert (자료구조 같은 형식)
insert into person(id, name, age, sex) values (1, 'John', 30, 'M');
insert into person(id, name, age, sex) values (2, 'lory', 29, 'F');
insert into person(id, name, age, sex) values (3, 'mike', 31, 'M');
insert into person(id, name, age, sex) values (4, 'Alice', 32, 'F');

7-2) 실습

1
2
3
4
5
6
7
8
9
10
11
# `person` table 모든  선택
select * from person;

# `person`에서 3개만 추출(name, age, sex) 
select name, age, sex from person;

# `person`에서 여성만 추출
select * from person where sex ='F'; 

# `person`에서 age >= 31 조회
select * from person where age >= 31;







8. update

1
2
3
4
update 테이블명 set 바꿀값 where 조건
⬇️
# `person` table에서 john 나이 50으로 변경
update person set age=50 where name='John';





9. delete

1
2
3
4
delete from 테이블명 where 조건
⬇️
# 이름='John' delete
delete from person where name = 'John';





10. orderby

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
------------------------기본 셋팅--------------------------------
# `celab` table 생성
create table celab (
    id int not null auto_increment primary key,
    name varchar(32) not null default '',
    birthday date,
    age int,
    sex char(1),
    job_title varchar(32),
    agency varchar(32)
);

# `아이유` ~ `이수현` 넣기
INSERT INTO celab VALUES (1, '아이유', '1993-05-16', 29, 'F', '가수, 연예인', 'EDAM엔터테인먼트');
INSERT INTO celab VALUES (2, '이미주', '1994-09-23', 28, 'F', '가수', '울림엔터테인먼트');
INSERT INTO celab VALUES (3, '송강', '1994-03-23', 28, 'M', '배우', '나무엑터스');
INSERT INTO celab VALUES(4, '강동원', '1981-01-18', 41, 'M', '배우', 'YG엔터테인먼트');
INSERT INTO celab VALUES(5, '유재석', '1972-08-14', 50, 'M', 'MC, 코미디언', '안테나 엔터테인먼트');
INSERT INTO celab VALUES(6, '차승원', '1970-06-07', 48, 'M', '영화배우, 모델', 'YH엔터테인먼트');
INSERT INTO celab VALUES(7, '이수현', '1999-05-04', 23, 'F', '가수', 'YG엔터테인먼트');

#  만들어졌는지 확인
select * from celab;
1
2
3
4
5
6
7
8
9
10
11
12
13
------------------------------ order by ---------------------------------

# celab 테이블에서 age, name 추출해 age 오름차순 기준으로 정렬
SELECT age, name from celab order by age ASC;

# celab 테이블에서 age, name 추출해 age 내림차순, name 오름차순으로 정렬
SELECT age, name FROM celab ORDER BY age DESC, name ASC;

# celeb 테이블에서 이름, 생년월일, 성별, 소속사를  추출하고 소속사 순으로 정렬
SELECT name, birthday, sex, agency from celab ORDER BY agency ASC;

# celeb 테이블에서 이름, 나이, 직업, 소속사를  추출하고 소속사 , 나이 역순으로 정렬
SELECT name, age, job_title, agency from celab ORDER BY agency ASC, age DESC;
This post is licensed under CC BY 4.0 by the author.
3D GIF