본문 바로가기

SQL/교육,실습

SQL데이터 분석 첫걸음 교육(고급 기능)

사실 이번 day의 제목이 알아두면 좋은 고급 기능이라는데 

사실 sqld 공부하면서 너무 익혀뒀던 기능들이라 

익숙하기도 했고 그 동안의 실습이 기본적이긴 했구나 라는 생각을 하게 되었다.

하지만 sqld 공부할 때에는 직접 손으로 쿼리를 작성하면서 하지는 않았기에 

직접 실습할 때에는 마냥 쉽지는 않았던 거 같다.

 

본론으로 들어와서 이번 실습에서 여러 기능을 소개해 주었는데

 

첫번째로는 데이터 수정하기 이다.

생각해보니 막상 이전 실습에서는 원하는 데이터를 가져오는 것에 집중했지 수정하는 실습은 거의 안했었다.

물론 배우긴 했었지만 실습은 따로 없었다.

바로 UPDATE SET WHER 절인데 

 

쿼리 양식

UPDATE [테이블 이름]

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

WHERE 조건식;

 

으로 UPDATE 뒤에 바꿀 컬럼이 있는 테이블을 입력

SET절에 바꿀 컬럼과 새로운 값을 입력

WHERE 절에서 조건을 입력한다.

 

예제

UPDATE pokemon.mypokemon

SET type = ‘normal’

WHERE name = ‘chikorita’;

예제 결과

위의 사진같이 변경이 가능하다.

 

두번째로 제약 조건이다.

제약조건은 데이터를 입력할 때 실행되는 데이터 입력 규칙이다.

테이블을 만들거나 변경하면서 설정하는데 CREATE TABLE 및 ALTER TABLE 구문에 사용된다.

 

제약 조건의 종류로는 다음과 같이 있다.

제약 조건 종류

 제약 조건과 함께 테이블 만들기를 해 볼 것이다.

쿼리 양식은 다음과 같다.

제약 조건 활용 쿼리 양식

양식을 활용하여 예제를 보면

제약 조건 활용 예제 쿼리

다음과 같이 테이블을 생성할 때 각 쿼리마다 제약조건을 걸어준 모습을 볼 수 있다.

여기서 FOREIGN KEY(외래키)는 참조하는 테이블의 PRIMARY KEY여야 한다.

 

세번째는 DCL이다.

DCL은 SQL 분류로

Data Control Language 로 데이터 제어어 라고 한다.

종류로는 GRANT, REVOKE 가 있다.

 

GRANT : 권한을 부여하는 명령

REVOKE : 권한을 회수하는 명령

 

GRANT, REVOKE 의 쿼리 문법을 알아보자

 

GRANT의 쿼리 문법

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

 

문법을 활용하여 예시 쿼리를 보자면

 

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

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

여기서 추가로 알아둘 것이 ip주소가 %면, 해당 아이디를 가지는 모든 ip에서의 접근을 허용한다는 의미이다.

 

REVOKE의 쿼리 문법

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

GRANT와 FROM을 제외하고는 같은 문법을 사용한다.

 

예시 쿼리를 보자면

REVOKE SELECT, INSERT ON *.* FROM newuser@%;

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

 

추가로

권한 확인하기와

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

권한 적용하기도 있다.

FLUSH PRIVILEGES;

 

4번째는 TCL이다.

DCL은 SQL 분류로

Transaction Control Language 로 트랜잭션 제어어 라고 한다.

종류로는 COMMIT, ROLLBACK, SAVEPOINT 가 있다.

 

COMMIT :  트랜잭션 확정하기

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

SAVEPOINT : 트랜잭션 내 특정한 저장 지점

 

TCL의 쿼리 문법은 DCL과 달리 간단하다.

 

#트랜잭션 시작하기 : START TRANSACTION;

#트랜잭션 확정하기 : COMMIT;

#트랜잭션 이전으로 돌아가기 : ROLLBACK;

#세이브포인트 만들기 : SAVEPOINT [세이브포인트 이름];

#세이브포인트로 돌아가기 : ROLLBACK TO [세이브포인트 이름];