Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

kang's study

SQL server 명령어 본문

[학습 공간]/[SQL]

SQL server 명령어

보끔밥0302 2022. 12. 27. 01:36

< 데이터 베이스 구축 >

1> 테이블 생성

데이터 형식 (SQL server)

문자 ① CHAR(n) – 고정형 ② VARCHAR(n) – 가변형

숫자 ① INT DECIMAL(자리수, 소수점)

날짜 ① DATE DATETIME

use bookstore; # 데이터 베이스 연결

CREATE TABLE 고객 (_이름, 데이터_형식);

 

▶ 괄호 안에 제약 조건: 1. NULL 2. PRIMARY KEY 3. FOREIGN KEY 4. other than

1. NULL

 

2. 기본키 ( NOT NULL, no duplication) PRIMARY KEY

기본키 이름 지정:

① 열_이름 INT CONSTRAINT PK_고객_고객번호 PRIMARY KEY

or ② 열_이름 INT NOT NULL

,PRIMARY KEY(고객번호)

테이블 수정: ALTER TABLE 고객

기본키 삭제:

ALTER TABLE 고객

DROP CONSTRAINT PK_고객_고객번호;

기본키 추가:

ALTER TABLE 고객

ADD CONSTRAINT PK_고객_고객번호 PRIMARY KEY(고객번호);

 

3. 외래키:

,FOREIGN KEY(고객번호) REFERENCES 고객(고객번호)

 

4. 기타 제약 조건:

UNIQUE

CONSTRAINT U_고객_주민등록번호 UNIQUE

*IDENTITY – 기본 키 제약조건과 함께 사용되어 고유한 행 식별자 역할

하나의 테이블에 하나의 IDENTITY

_이름 INT IDENTITY(1,1)

DEFAULT – 하나의 기본값

CONSTRAINT DF_고객_고객명 DEFAULT ‘무명

CHECK – 데이터 범위나 조건을 지정

CONSTRAINT CK_고객_상태 CHECK (상태 IN (‘신규’, ‘기존’, ‘이탈’))

RULE – CHECK와 같으나 바인딩 해야함

CREATE RULE r상태

AS

@상태 IN (‘신규’, ‘기존’, ‘이탈’);

sp_bindrule r상태, ‘고객.상태

 

2> 테이블 구조 변경

1. 열 추가

ALTER TABLE 고객

ADD 주소 VARCHAR(50);

 

, NULL 대신 다른 기본값을 할당하려면

ALTER TABLE 고객

ADD 입력일자 DATETIME NULL

CONSTRAINT 입력일자_기본값 DEFAULT getData() WITH VALUES;

 

2. 열 삭제 (완전 삭제)

기본 값이 있다면 먼저 삭제 해야함

ALTER TABLE 고객

DROP CONSTRAINT 입력일자_기본값;

 

ALTER TABLE 고객

DROP COLUMN 입력일자;

 

3. 열 변경

ALTER TABLE 테이블_이름

ALTER COLUMN (_이름 데이터_형식 [DEFAULT] [NULL]);

 

3> 테이블 제거 (복구 안 됨)

DROP TABLE 테이블_이름;

  

< 데이터 관리 >

1> 데이터 입력

1. 정보를 확인: (실무에서 잘 사용하진 않음)

SELECT COLUMN_NAME, ORDINAL_POSITION, DATA_TYPE, IS_NULLABLE

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME = ‘테이블_이름’;

 

2. 데이터 입력:

INSERT INTO 출판사(출판사명, 출판사번호, 전화번호, 담당자)

VALUES (‘로드북출판’, 1, ‘031-200-0000’, ‘홍길동’);

 

데이터 확인:

SELECT * FROM 출판사;

 

여러 행을 동시에 입력:

INSERT INTO 출판사_경기

SELECT * FROM 출판사 WHERE 전화번호 LIKE ‘031%’;

 

2> 데이터 수정

UPDATE 출판사

SET 담당자 = ‘이승기

WHERE 출판사번호=2;

 

3> 데이터 삭제

DELETE FROM 출판사

WHERE 출판사번호=1;

 

< 데이터 검색 >

1> SELECT 명령문: 질의어(query)

1. 모든 열을 검색: SELECT * FROM 회원;

2. 특정 열만 검색: SELECT 회원명, 등급, 주소 FROM 회원;

3. 별명을 기술: SELECT 회원명 AS 회원이름, 주소 AS ‘현 주소지’ FROM 회원;

4. 중복 행 제거: SELECT DISTINCT 등급 FROM 회원;

 

2> WHERE(조건)

SELECT 회원명, 등급, FROM 회원

WHERE 등급 = ‘정회원’ AND ≥ 160;

WHERE절 명령어:

WHERE _이름 BETWEEN … AND

WHERE _이름 IN / NOT IN

WHERE _이름 LIKE ‘와일드 카드’ → _: 임의의 한 개, %: 0개 이상, []: 범위의 한 개, [^]: 범위에 없는 한 개

WHERE _이름 IS NULL, IS NOT NULL

3> ORDER BY(정렬)

SELECT * FROM 회원

ORDER BY DESC;

 

4> 서브 쿼리

서브 쿼리에 ORDER BY절을 사용할 수 없다는 점을 꼭 기억

 

SELECT 회원번호, 회원명, 주소, 몸무게

FROM 회원

WHERE 회원번호 IN (SELECT 회원번호 FROM 회원 WHERE 몸무게 = 45)

 

5> 요약정보

1. 집단함수: COUNT(), SUM(), AVG(), MAX(), MIN()

 

2. 그룹화: 동일한 값의 행들을 한 그룹으로 묶음

GROUP BY절에 명시하지 않은 열SELECT절에 혼자 포함되거나 집단함수와 함께 명시하여 사용하면 에러 발생

 

3. 그룹 검색 조건: 반드시 GROUP BY절과 함께 사용

GROUP BY절의 결과인 그룹을 제한한다.

GROUP BY 주문 번호

HAVING COUNT(*) ≥ 2

● WHERE절은 FROM절에서 지정한 테이블을 대상

● HAVING절은 GROUP BY절에 의해 생성된 그룹을 대상

 

6> join: 여러 개 테이블에서의 데이터 검색

N개의 테이블을 조인하기 위해서는 WHERE절에 반드시 N-1개의 조인 조건절을 필요

 

SELECT a.출판사명 AS ‘출판사 이름’, b.도서명 AS ‘책 이름

FROM 출판사 AS a, 도서 AS b

WHERE a.출판사번호 = b.출판사번호

ORDER BY a.출판사번호;

 

Comments