[SQL] MSSQL 08~11

SUNGJIN KIM·2023년 8월 1일

SQL

목록 보기
3/8
post-thumbnail

오늘의 목표

SQL 강의 듣기 (8~11강)
과제 및 요약 내용 정리하기


SQL (Structured Query Language)

  • 구조화된 질의 언어
  • R-DBMS를 관리하고 이용하는데 사용되는 언어
Data Definition Language (DDL)Data Manipulation Language (DML)
CREATESELECT
ALTERINSERT
DROPUPDATE
TRUNCATEDELETE

용어 설명 및 내용 정리

  • ‘*’ : 모든 파일을 칭할 때 사용
  • 열 이름을 쓸때는 대괄호로 쓰는게 안전
  • 정렬 시에는 order by column (desc) 사용

[과제] 다음을 조회해보세요.

  1. 결혼한 사람 전체 리스트, 생일 순
  2. Address 가 ‘서울’인 사람의 ID, 이름, 이름순
  3. Id가 1이 아닌 모든 사람의 전체 리스트
/* 결혼한 사람 전체 리스트, 생일순 */
SELECT * from Contacts where IsMarried = 1 ORDER BY birthday;

/* Address 가 ‘서울특별시’인 사람의 ID, 이름, 이름순 */
SELECT [ID],[Name] from Contacts where [Address] = '서울특별시' ORDER BY Name;

/* id가 1이 아닌 사람 */
SELECT * from Contacts where id != 1;

[해결] 한국어로 검색 시 검색되지 않는 경우

  • 검색이 계속 되지 않아서 확인 시, 쿼리가 한국어로 되어있지 않아서였고, 이를 변경함으로써 해결하였다.
/* 한국어 변경 */
ALTER DATABASE Addressbook SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE Addressbook COLLATE Korean_Wansung_CI_AS;
ALTER DATABASE Addressbook SET MULTI_USER;

/* 한국어 확인 */
EXEC sp_helpdb 'Addressbook'
GO

연산자 (Operators)

AND/OR

  • and : 두 조건이 부합하는 경우
  • or : 두 조건 중 하나가 부합하는 경우
/* 조건이 2개인 경우 */
SELECT * from Contacts where IsMarried = 1 or Birthday >= '1998-01-01';

/* 조건이 2개인 경우 */
SELECT * from Contacts where IsMarried = 0 and Birthday >= '1997-01-01';

Between

  • A 사이에서 B 까지
/* between 사용하기 */
select * from Contacts where Birthday between '1996-01-01' and '1997-12-31';

In

  • in ( a,b,c) : a,b,c 중에 하나인 경우
/* In 사용하기 */
select * from Contacts where ID in (1,3,5);

select * from Contacts where [Address] in ('서울특별시','부산광역시');

LIKE

  • ~와 같은, ~와 비슷한
  • 비슷한 문자열을 찾을때 사용
  • 일반적으로 검색 사이트에서 검색어를 찾을 때 사용
/* LIKE 사용하기 */
SELECT * from Contacts where [PhoneNumber] like '0157%'

SELECT * from Contacts where [PhoneNumber] like '%39%'

NULL

  • null값 검색
/* NULL 찾기 */
SELECT * from Contacts where PostalCode is null;

SELECT * from Contacts where PostalCode is not null;

[과제] 다음을 조회해보세요.

  1. 미혼이면서 서울에 사는 사람
  2. 전화번호 중에, '2'가 있으면서 이름에 '이'자가 들어가는 사람
/* 과제 미혼이면서 서울에 사는 사람 */
SELECT * from Contacts where IsMarried=0 and [Address]='서울특별시';

/* 2, 이름 이 */
select * from Contacts where [PhoneNumber] LIKE '%2%' and [Name] LIKE '이%';

데이터 삽입, 수정, 삭제 (CRUD Operations)

INSERT

  • 데이터를 삽입할 때 사용
/* 좋아하는 아이돌 리스트 추가 */
INSERT into [Contacts] ([Name],[PhoneNumber],[Address],[PostalCode],[Memo],[IsMarried],[Birthday]) values('김성규','015-3321-9809','전라북도','10033',null,0,'1989-04-28');

INSERT INTO

  • values 를 사용하는 것이 아닌 어떤 select의 결과 (집합)을 넣을 때 사용
/* insert select */
Insert into [Contacts] ([Name],[PhoneNumber]) select 'Copy of' + [Name], 'Copy of'+[PhoneNumber] from [Contacts] where [ID] >= 11;

UPDATE

  • 수정할 때 사용
/* Update */
update Contacts set [PostalCode]='10032', [IsMarried]=1 where [ID]=3;

befort >

after >

DELETE

  • 삭제 할 떄 사용
/* delete */
delete from [Contacts] where [Name] like 'Copy of%';

profile
#QA #woonmong

0개의 댓글