정보처리기사

SQL, JOIN

Ski_ 2022. 10. 12. 16:16

SQL 정의어(DDL)

 

Create Table : 테이블 생성  

CREATE TABLE dbo.성적 ( 일련번호 int NOT NULL, 이름 varchar(6) NOT NULL, 점수 int NOT NULL )

Create View : 뷰 생성

CREATE VIEW [뷰명] AS SELECT [컬럼명] FROM [테이블명] WHERE [조건절]

인덱스 만드는 방법

CREATE INDEX idx_name ON student(name asc)

 

ALTER : 테이블 수정

ALTER TABLE table_name ADD COLUMN ex_column varchar(32) NOT NULL;

ALTER TABLE 학생 ADD 주소 VARCHAR(20) --학생 테이블에 주소 컬럼을 추가

ALTER TABLE 학생 DROP 주소 -- 주소 컬럼 제거

ALTER TABLE table_name1 RENAME table_name2;

SQL 제어어(DCL)

 

GRANT ~ ON ~ TO : 권한 부여

GRANT SELECT, DELECT ON STUDENT TO userA

REVOKE ~ ON ~ FROM : 권한 삭제

REVOKE SELECT, DELECT ON STUDENT FROM userA

COMMIT : 트랜잭션 수행 중 연산을 실제 DB에 반영

 

ROLLBACK : 트랜잭션 수행 중, 연산을 취소하는 명령


SQL 조작어(DML)

 

INSERT INTO ~: 행 삽입

INSERT INTO TABLE VALUES(a, b, c)

UPDATE ~ SET ~ : 행 갱신

UPDATE TABLE SET COLUMN = 'a' WHERE 조건

DELETE FROM ~ : 행 삭제

DELETE FROM TABLE WHERE 조건

DELECT FROM 학생 WHERE 이름 = '민수'

SELECT ~ FROM ~ : 행 검색

 

SELECT * FROM TABLE1 T1 JOIN TABLE2 ON T1.A = T2.B

SELECT 학과, COUNT(*) AS ‘학과별 튜플수’ FROM 학생 GROUP BY 학과 HAVING COUNT(*) > 1

SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적
       GROUP BY 과목이름 HAVING AVG(점수) >= 90 ORDER BY 점수 DESC

SELECT * FROM TABLE WHERE 조건 == 조건 AND 조건 == 조건
       GROUP BY 과목 HAVING (group by조건) ORDER BY DESC

SQL JOIN

INNER JOIN : 두 테이블 사이의 교집합 결과를 출력

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

LEFT JOIN : 조건을 만족하는 모든 왼쪽테이블 값을 출력

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

RIGHT JOIN : 조건을 만족하는 모든 오른쪽 테이블 값을 출력

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

CROSS JOIN, FULL OUTER JOIN : 두 테이블의 행을 곱해 모든 값을 출력

해당하는 열(Cardinality)의 값이 없을 경우 NULL을 출력한다.

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

참고 : https://www.w3schools.com/

반응형