반응형
❕이 글을 통해...
CRUD : Create Read Update Delete
- CRUD 쿼리를 예제를 이해하고 사용할 수 있다.
- 쿼리의 다양한 조건(WHERE)과 정렬를 이해하고 사용할 수 있다.
❔주석
실행되지는 않으며, 설명을 작성하는 글
-- 앞에 '--'를 붙이면 뒤에 쓰는 글자는 인식하지 않습니다.
❔대소문자 구분
SQL은 대소문자를 구분하지 않습니다. 아무거나 사용해도 됩니다. 이 글에서는 가시성을 혼합했지만 구분 안 하고 사용해도 됩니다.
🚀기본 CRUD 쿼리
예제를 통해 기본 CRUD 쿼리인 Insert, Select, Update, Delete에 대해 알아보자.
CREATE, INSERT ➡ 추가 (CRUD의 Create)
DB 생성
-- 포맷: CREATE DATABASE [Database 이름]
CREATE DATABASE myDB
* DB를 생성했으면 선택해주자.
-- 포맷: USE [Database 이름]
USE myDB
Table 생성
-- 포맷: CREATE TABLE [Table 이름] (
-- [Column1 이름] [타입](크기),
-- [Column2 이름] [타입],
-- ...)
CREATE TABLE myTable (
myAge INT,
myName VARCHAR(10),
mySize INT
)
INSERT ➡ 데이터 생성
테이블에 데이터를 추가할 수 있는 형식이 3가지가 있다.
-- 포맷 : INSERT INTO [Table 이름] VALUES([value1], [value2], [value3])
-- Values의 개수가 Table의 Column개수와 동일해야 합니다.
INSERT INTO myTable VALUES(10, 'ojg', 100)
-- 포맷 : INSERT INTO [Table 이름] ([Column1 이름, Column2 이름]) VALUES([value1], [value2])
INSERT INTO myTable (myAge, myName) VALUES(11, 'ojg1')
-- 포맷 : INSERT [Table 이름] SET [Column1 이름] = [value1], [Column1 이름] = [value2]
INSERT myTable SET myAge = 13, myName = 'ojg2'
SELECT ➡ 검색(CRUD의 Read)
기본 포맷
SELECT [Column 이름] FROM [검색 위치, Table 또는 Database] [조건들]
-- Column 이름이 여러개 올 수 있으며,
-- *는 모든 Column을 검색하라는 의미
-- [조건]은 필수가 아닌 옵션
Database 검색
-- 모든 Database 리스트 출력
SELECT * FROM sys.sysdatabases
Table 검색
-- 모든 Table의 모든 정보 출력
SELECT * FROM sys.tables
-- 모든 Table 이름만 출력
SELECT name FROM sys.tables
Column 검색
--포맷 : SELECT * FROM [Table 이름]
SELECT * FROM myTable
--포맷 : SELECT [필드 이름] FROM myTable
SELECT myName FROM myTable
UPDATE ➡ 수정 (CRUD의 Update)
Column 수정
-- 포맷 : UPDATE [Table 이름] SET [Column 이름] = [값] WHERE {조건}
-- Column의 특정 조건일 때 수정
UPDATE myTable SET myAge = 3 WHERE myAge > 30
-- !주의! 조건이 없으면 Table의 해당 Column의 값이 전부 동일하게 수정된다.
UPDATE myTable SET myAge = 3
DELETE ➡ 삭제 (CRUD의 Delete)
Database 삭제
Database가 사용중이라서 삭제가 안되면 다른 Database를 use 한 후 해야 한다.
-- DROP DATABASE [DB 이름]
DROP DATABASE myDB
데이터 행(Row) 삭제
-- 포맷 : DELETE FROM [Table 이름] WHERE {조건}
-- Column의 특정 조건일 때 삭제
DELETE FROM myTable WHERE myAge > 30
-- !주의! 조건이 없으면 Table의 해당 데이터들이 전부 삭제된다.
DELETE FROM myTable
테이블 삭제
-- DROP TABLE [Table 이름]
DROP TABLE myTable
Column 추가, 삭제, 수정
Column 추가
-- 포맷: ALTER [Table 이름] ADD [Column 이름] [데이터형] [제약사항 등...]
ALTER TABLE myTable ADD myDescription VARCHAR(100)
Column 삭제
-- 포맷: ALTER TABLE [Table 이름] DROP [Column 이름]
ALTER TABLE myTable DROP column myName
PK, FK, UK, CK 등 제약 조건이 있는, 복사된, 인덱스로 사용하는 Column은 삭제할 수 없다
Column 수정
-- 포맷: ALTER TABLE [Table 이름] ALTER COLUMN [Column 이름] [데이터타입(크기)]
ALTER TABLE myTable ALTER COLUMN myAge int
WHERE ➡ 조건 검색
= ➡ 같을 때
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] = 3
SELECT * FROM myTable WHERE myAge = 3
< 또는 > ➡ 크기 비교(>=, <= 도 가능)
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] > 3
SELECT * FROM myTable WHERE myAge > 3
SELECT * FROM myTable WHERE myAge < 3
<> ➡ 다를 때
-- 포맷: SELECT * FROM [Table 이름] WHERE [column 이름] <> 3
SELECT * FROM myTable WHERE myAge <> 3
IS NULL ➡ NULL일 때 "= NULL"은 안되고 꼭 IS NULL을 써야 한다.
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] is null
SELECT * FROM myTable WHERE myAge IS NULL
BETWEEN [A] AND [B] ➡ A보다 크거나 같고 B보다 작거나 같을 때
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] BETWEEN [value1] AND [value2]
SELECT * FROM myTable WHERE myAge BETWEEN 3 AND 32
IN ➡ 여러 개 값 (OR과 비슷함)
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] IN(value1, value2, ...)
SELECT * FROM myTable WHERE myAge IN(3, 5, 6)
OR, AND ➡ 여러 조건
-- 포맷: SELECT * FROM [Table 이름] WHERE {조건 1} OR/AND {조건2} OR/AND {조건 ...}
SELECT * FROM myTable WHERE myAge < 10 OR myAge = 30
SELECT * FROM myTable WHERE myAge > 3 AND myAge <> 10
%, _ LIKE ➡ 패턴 조건 (~로 시작, 포함, ~로 끝남)
"%" 하고 "_"의 차이 : "%"는 모든 길이를 포함하고, "_"는 "_"의 개수에 따라 해당 개수에 맞는 조건만
같은 것을 찾는 게 아닌 비슷한 것을 찾는 것이므로 =이 아니라 LIKE이다.
%
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE '%A'
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE '%A%'
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE 'A%'
SELECT * FROM myTable WHERE myName LIKE '123%'
-- => ex: 1234, 12345, 123456, 123456789101232112312312
_
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE 'A_'
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE '____A_'
-- 포맷: SELECT * FROM [Table 이름] WHERE [Column 이름] LIKE 'A_______'
SELECT * FROM myTable WHERE myName LIKE '_0_0_'
-- => ex: 10101, 10102, 30201
ORDER BY ➡ 정렬
기본이 오름 차순(ASC), 내림차순으로 변경하려면 DESC를 붙여준다.
(MSSQL에서 NULL이 가장 작은 값, ORACLE은 반대)
-- 포맷: SELECT * FROM [Table 이름] WHERE {조건} ORDER BY [Column 이름]
SELECT * FROM myTable WHERE myAge > 10 ORDER BY myName DESC
SELECT * FROM myTable WHERE myAge > 10 ORDER BY myName
복수 정렬 가능, 앞에 써줄수록 우선순위가 높다.
-- 포맷: SELECT * FROM [Table 이름] WHERE {조건} ORDER BY [Column1 이름], [Column2 이름]
SELECT * FROM myTable WHERE myAge > 10 ORDER BY myName, mySize ASC
반응형
'개발 > Database' 카테고리의 다른 글
MSSQL 저장 프로시저 코드 조회 - 에러 발생 시 (0) | 2021.10.15 |
---|---|
MSSQL Join Union 10초만에 그림보고 쉽게 이해 (0) | 2021.10.14 |
MSSQL PK FK UK CK 란? 개념 이해 (0) | 2021.10.14 |
SQLBindParameter SQLBindCol 차이 (0) | 2021.10.14 |