튜토리얼 Tutorials

정보처리기사 실기 기초 SQL 정리

Tap to restart 2020. 10. 14. 18:00

 

기초 SQL을 정리했다.

이걸로는 부족하고, 여러 출판사에서 나온 교재에서 기출 문제를 열심히 풀어봐야 한다.

기출 문제를 봤을 때, JOIN 등 어려운 것들보다는 기초에 가까운 것들이 나왔다.

 

깃허브 위키 페이지에 정리했다.

주소는 여기 자격증:정보처리:기초 SQL 정리

누워서 자기 전이나 아침에, 지하철 같은 곳에서 쉽게 암기할 수 있다.

 

과제

SQL 명령어

DDL

Data Define Language

DDL 종류

CREATE, ALTER, DROP, TRUNCATE 

사용자 id가 라이언인 스키마 기업을 만들라.

CREATE SCHEMA 기업 AUTHORIZATION 라이언;

A, B, AB, O 문자 2개로 표현되는 도메인 혈액형을 정의하라기본 혈액형은 A제약조건명은 제약조건_혈액형이다.

CREATE DOMAIN 혈액형 CHAR(2) DEFAULT A’ COSTRAINT 제약조건_혈액형 CHECK(VALUE IN(ABABO));

제품번호품명가격으로 구성된 제품’ 테이블을 만들어라.


제품번호는 기본키다

품명은 NULL이 올 수 없다.

제품번호는 문자10자다.

품명은 최대 문자 30자다.

가격은 숫자 8자다.

CREATE TABLE 제품

(제품번호 CHAR(10),

품명 VARCHAR(30) NOT NULL,

가격 NUMBER(8),

PRIMARY KEY 제품번호);

외래기 지정 시 참조 테이블의 튜플이 삭제되면 기본 테이블의 관련 튜플도 모두 삭제되는 옵션

ON DELETE CASCADE

참조 테이블 참조 속성 값이 변경되면 기본 테이블도 같이 변경되는 옵션

ON UPDATE CASCADE

CREATE TABLE에서 ON DELETE, ON UPDATE 옵션 종류

NO ACTION, CASCADE, SET NULL, SET DEFAULT

학생’ 테이블에서 학년이 1학년인 학생들의 학번과 이름을 1학년학생들이라는 뷰로 만들어라.

CREATE VIEW 1학년학생들(학번이름) AS SELECT 학번이름 FROM 학생 WHERE 학년 = 1;

학생’ 테이블에서 학년이 1학년과 2학년인 학생들의 학번과 이름을 저학년학생들이라는 뷰로 만들어라.

CREATE VIEW 저학년학생들(학번이름) AS SELECT 학번이름 FROM 학생 WHERE 학년 IN (1, 2);

학생’ 테이블에서 학번’ 속성에 대해 내림차순으로 정렬하여 학번_idx라는 이름으로 인덱스를 만들어라.

CREATE INDEX 학번_idx ON 학생(학번 DESC);

학생’ 테이블에서 최대 50문자로 주소’ 속성 추가

ALTER TABLE 학생 ADD 주소 VARCHAR(50);

학생’ 테이블의 주소’ 속성의 데이터 타입과 크기를 최대 40문자로 바꾸고 NULL 값 안 되도록 변경

ALTER TABLE 학생 ALTER 주소 VARCHAR(40) NOT NULL;

기업’ 데이터베이스 또는 스키마를 제거

DROP SCHEMA 기업;

DROP DATABASE 기업;

혈액형’ 도메인 제거

DROP DOMAIN 혈액형;

학생’ 테이블 제거

DROP TABLE 학생;

학생’ 테이블 제거학생 테이블 참조하는 모든 데이터도 함께 삭제

DROP TABLE 학생 CASCADE;

DCL

Data Control Language

DCL 종류

GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT 

GRANT

권한 부여 

grant 부여하다.

grant B to A B(물건)을 A사람에게 수여하다.

REVOKE

권한 취소

revoke 철회하다최소하다

사용자 ID 라이언에게 직원 테이블에 대한 모든 권한과 다른 사람에게 권한을 부여할 수 있는 권한까지 부여

GRANT ALL ON 직원 TO 라이언 WITH GRANT OPTION;

사용자 ID 베어에게 부여한 직원 테이블에 대한 권한 중 DELETE 권한을 다른 사람에게 부여할 수 있는 권한 취소

REVOKE GRANT OPTION FOR DELETE ON 직원 FROM 베어;

DML

Data Manipulation Language

DML의 유형

SELECT, INSERT, DELETE, UPDATE

학생 테이블에 이름 – 라이언학번 103 삽입

INSERT INTO 학생(이름학번) VALUES (라이언103);

학생 테이블에서 이름 라이언인 튜플 삭제

DELETE FROM 학생 WHERE 이름 라이언;

학생 테이블에서 이름이 라이언의 반을 4로 수정

UPDATE 학생 SET 반 = 4 WHERE 이름 라이언;

INSERT

INSERT INTO 테이블명(~) VALUES ~

DELETE

DELETE FROM 테이블명 WHERE ~

UPDATE

UPDATE 테이블명 SET ~ WHERE ~

SELECT

SELECT ~ FROM 테이블명 WHERE ~ GROUP BY ~ HAVING ~ ORDER BY ~ [ASC | DESC];

순서 기억할 것.

ORDER BY가 맨 뒤.

FROM 다음 바로 WHERE 그 다음 GROUP BY

학생 테이블에서 동주소만 검색동주소는 중복이 있을 경우 한번만 출력

SELECT DISTINCT 동주소 FROM 학생;

학생 테이블에서 학년이 6, 반이 1인 학생들의 모든 내용 검색

SELECT * FROM 학생 WHERE 학년 = 6 AND 반 = 1;

학생 테이블에서 이름이 으로 시작하는 학생들 검색

SELECT * FROM 학생 WHERE 이름 LIKE %;

점수 테이블에서 국어’ 기준으로 내림차순 정렬 검색

SELECT * FROM 점수 ORDER BY 국어 DESC;

점수 테이블에서 ’ 기준으로 오름차순국어’ 기준으로 내림차순 정렬 검색

SELECT * FROM 점수 ORDER BY 반 ASC, 국어 DESC;

학생 테이블에서 별로 학생수(학생들의 숫자)를 출력.

SELECT , COUNT(*) AS 학생수 FROM 학생 GROUP BY 반;

점수 테이블에서 반이 1인 학생들 국어’ 점수 평균 출력

SELECT AVG(국어) FROM 점수 WHERE 반 = 1;