이번 수업에서 SQL(Structured Query Language)을 통해 테이블 생성하고 데이터를 처리하는 기법들에 대해 학습하였다. SQL이란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. 곧 치르게 될 SQLD 시험을 위해서라도 DB와 관련된 개념을 잘 정리해 두자!
구조적 쿼리 언어(Structed Query Language)
데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어
실행 순서가 없는 비절차적 언어
DDL, Data Definition Language
DML, Data Manipulation Language
DCL, Data Control Language
SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 등으로 나뉠 수 있다. 예를 들어 테이블을 생성하거나 삭제하는 것 같이 DB의 구조를 다루는 언어는 DDL을 사용하고 데이터를 삽입, 삭제, 수정하려 할 때는 DML로 조작한다. 또한 GRANTS나 REVOKE 같이 특정 사용자에게 특정 권한을 주거나 제한할 경우에는 DCL을 사용할 수 있다.
SHOW DATABASES; // 존재하는 데이터베이스들을 보여줌
USE TEST_DB; // TEST_DB라는 데이터베이스를 사용하겠다.
select * from user; // 해당 테이블의 모든 튜플 조회
// user 테이블 생성
CREATE TABLE user(
id varchar(10) primary key not null, // 기본키 설정, null값 비허용
password varchar(20) not null,
age int unsigned
);
-- 컬럼을 추가하는 명령어
alter table user add gender enum('여자','남자');
-- 컬럼을 삭제하는 명령어
alter table user drop column age;
-- 컬럼을 수정하는 명령어
alter table user modify gender varchar(2) not null;
-- 테이블을 삭제하는 명령어
drop table user;
-- 2000년 01월 01일 이후에 태어난 회원 조회
select * from customer where birth >= '2000-01-01';
-- 2000년01월01 ~ 2005-01월01 사이에 태어난 회원 조회
select * from customer where birth between '2000-01-01' and '2005-01-01';
-- addr가 대한민국 서울, 미국 로스엔젤레스 둘 중 하나라면 조회
select * from customer where addr in ('대한민국 서울', '미국 로스엔젤레스');
-- addr가 대한민국을 포함한 회원 조회(like 이용)
select * from customer where addr like '%대한민국%';
-- 세 글자 이름으로 끝이 수로 끝나는 데이터 추출
select * from customer where custname like '__수';
-- 끝에서 두번째가 '해' 추출
select * from customer where custname like '%해_';
-- 이름이 null이 아니면 추출
select * from customer where not custname is null;
-- AND, OR, NOT 예시 --
select * from customer where addr like '%대한민국%' AND birth <= '2000-05-05';
select * from customer where addr like '%대한민국%' OR birth <= '2000-05-05';
-- 이름 기준으로 오름차순 정렬해서 보여줌
select * from customer order by custname ASC;
-- 이름 기준으로 내림차순 정렬해서 보여줌
select * from customer order by custname DESC;
-- update문
update customer set custname = '강해란' where custid = 'bunny';
-- delete문 오류(참조 무결성)
delete from customer where custid = 'wow123';
-- 오류발생 이유? 삭제하려 하는 데이터를 외래키로 사용하는 데이터가 있기 때문에(참조무결성제약조건 위배)
-- on delete옵션으로 cascade를 적용하면 부모 데이터 삭제시 자식데이터도 삭제

1. select * from user3 order by birthday asc;
2. select * from user3 where gender = 'M' order by name desc;
3. select id, name from user3 where birthday between '1990-01-01' and '1999-01-01';
4. select * from user3 where birthday like('%-06-%') order by birthday asc;
5. select * from user3 where gender = 'M' and birthday between '1970-01-01' and '1979-01-01';
6. select * from user3 order by age desc limit 3;
7. select * from user3 where age between 25 and 50;
8. update user3 set pw = '12345678' where id = 'hong1234';
9. delete from user3 where id = 'jungkrat';
정처기 취득을 위해 표준쿼리(ansi query)문법을 공부했던지라 합격 이후 곧바로 SQLD에도 도전해보았다. 하지만 웬걸 oracle이나 sql-server 기준으로 출제가 되다보니 헷갈리는게 너무 많았다. 결국 4점차이로 불합격.. 이번에는 착실히 준비하여 좋은 결과를 얻어야겠다!