본문 바로가기

SQL

[패스트캠퍼스] SQL 강의 : 데이터 삭제, 수정(DELETE, UPDATE)/ 제약 조건(CONSTRAINTS)/ 권한과 DCL(GRANT, REBOKE)/ 트랜잭션과 TCL(COMMIT, ROLLBACK, SAVEPOINT)

데이터 삭제하기 DELETE

1. 쿼리문법

DELETE FROM [테이블 이름]

WHERE 조건식;

 

2.DELETE 예제

DELETE FROM mypokemon

WHERE attack > 50;

 

예제 테이블

 


 

데이터 수정하기 UPDATE, SET


1. 쿼리문법

UPDATE [테이블 이름]

SET [컬럼이름] = [새 값]

WHERE 조건식;

 

2. UPDATE/ SET 예제

UPDATE mypokemon

SET type = 'normal'

WHERE name = 'chikorita'

 


제약조건
  • 데이터를 입력할 때 실행되는 데이터 입력 규칙
  • 테이블을 만들거나 변경하면서 설정한다 → CREATE TABLE 및 ALTER TABLE 구문 사용 가능
제약 의미
NOT NULL 이 컬럼에는 NULL값을 저장할 수 없다
UNIQUE 컬럼의 값들은 서로 다른 값을 가져야 한다
DEFAULT 컬럼에 입력값이 없을 시 기본값이 설정된다/ 기본값은 DEFAULT 제약조건을 쓸때 명시해야 함
PRIMARY KEY 이 컬럼은 기본키이다/ NOT NULL과 UNIQUE 특징을 모두 가진다
FOREIGN KEY 이 컬럼은 외래키이다/ 이 컬럼은 다른 테이블을 특정 컬럼을 참조한다

1. 쿼리문법

CREATE TABLE [테이블이름]

([컬럼이름] [데이터타입] [제약조건],

[컬럼이름] [데이터타입] [제약조건],

...

);

 

2. 제약조건 예시

CREATE TABLE new_mypokemon(

number INT PRIMARY KEY,

name VARCHAR(20) UNIQUE,

type VARCHAR(10) NOT NULL,

attack INT DEFAULT 0,

defense INT DEFAULT 100,

FOREIGN KEY(number) REFERENCES mypokemon(number)

);

 

*FOREIGN KEY는 참조하는 테이블의 PRIMARY KEY여야함/ mypokemon의 number 컬럼은 PRIMARY KEY여야한다


권한과 DCL

 

분류 종류 의미
DDL(Data Definition Language) CREATE
ALTER
DROP
RENAME
TRUNCATE
데이터정의어
DML(Data Mainpulation Language) SELECT
INSERT
UPDATE
DELETE
데이터조작어
DCL(Data Control Language) GRANT
REVOKE
데이터제어어
TCL(Transaction Control Language) COMMIT
ROLLBACK
SAVEPOINT
트랜잭션제어어

<권한>

  • root 사용자는 모든 데이터 접근 가능
  • 사용자별로 데이터 접근권한 다르게 가능 → 데이터베이스, 테이블 접근권한 및 어떤 기능을 사용할건지 사용자별 지정 가능

 

1. 사용자 확인하기

 

*MySAL 기본 데이터베이스인 mysql 데이터베이스 선택하기

USE mysql;

 

*사용자 목록조회하기

SELECT user, host FROM user;

 

2. 사용자 생성, 삭제하기

 

*사용자 생성하기

CREATE USER [사용자이름]@[ip주소];

 

*비밀번호와 함께 사용자 생성하기

CREATE USER [사용자이름]@[ip주소] IDENTIFIED BY '[사용자 비밀번호]';

 

*사용자 삭제하기

DROP USER [사용자이름];

 

3. 권한 부여하기

 

*권한부여하기

GRANT [권한] ON [데이터베이스이름].[테이블이름] TO [사용자이름]@[ip주소];

 

*권한확인하기

SHOW GRAND FOR [사용자이름]@[ip주소];

 

*권한삭제하기

REVOKE [권한] ON [데이터베이스이름].[테이블이름] FROM [사용자이름]@[ip주소];

 

*권한적용하기

FLUSH PRIVILEGES;

 

<권한 쿼리예시>

1. #newuser@%에게 mydb.mytb에 대한 모든 권한 부여하기

GRANT ALL PRIVILEGES ON mydb.mytb TO newuser@%;

*ip 주소가 %이면 해당 아이디를 가지는 모든 ip의 접근을 허용한다는 의미

 

2. #newuser@%에게 모든 데이터베이스, 모든 테이블에 대한 SELECT, INSERT권한 부여하기

GRAND SELECT, INSERT ON *.* TO newuser@%;

 


트랜잭션과 TCL

<트랜잭션>

데이터베이스의 데이터 상태를 바꾸는 작업 묶음

*트랜잭션 시작하기

START STRANSACTION;

 

*트랜잭션 확정하기

COMMIT;

 

*트랜잭션 이전으로 돌아가기

ROLLBACK;

 

<세이브포인트>

트랜잭션 내에 특정한 저장지점을 두는 것

*세이브포인트 만들기

SAVEPOINT [세이브포인트 이름];

 

*세이브포인트로 돌아가기

ROLL BACK TO [세이브포인트 이름];