[새싹x코딩온] 웹개발자 풀스텍 과정 7주차 회고/ SQL

ゆぬ·2023년 10월 25일
post-thumbnail

이번 수업에서 SQL(Structured Query Language)을 통해 테이블 생성하고 데이터를 처리하는 기법들에 대해 학습하였다. SQL이란 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. 곧 치르게 될 SQLD 시험을 위해서라도 DB와 관련된 개념을 잘 정리해 두자!

SQL이란?

  • 구조적 쿼리 언어(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을 사용할 수 있다.

SQL 주요 문법

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점차이로 불합격.. 이번에는 착실히 준비하여 좋은 결과를 얻어야겠다!

profile
얼마나 깊이 고민하느냐가 자신의 위치를 ​​결정한다

0개의 댓글