MS-SQL
- 데이터베이스 (환경)
- DBMS(Database Management System)
- 프로그램 + 환경
- 데이터베이스를 관리하는 시스템
- 데이터의 저장과 관리를 목적으로 하는 소프트웨어
- 데이터의 물리적인 저장 방식에 상관없이 일괄성 있는 작업 방식 제공
- 1.0 (1989년) ~ MS-SQL 2008(10.0) ~ MS-SQL 2008 R2(10.5)
데이터베이스
- 데이터(data) : 자료, datum의 복수형
- 업무에 필요한 데이터를 기억장치에 저장한뒤 가공 및 활용하는 모든 행동 필요한 기술을 총칭하는 단어
- 데이터베이스 조건
대용량 / 효율성 / 무결성 / 활용성 / 공유성 / 보안성
- 데이터를 관리하는 환경
- 데이터들의 집합
- 데이터 + 부가 기능
- 데이터 기록 물리적 단위 : DB(데이터베이스)
- 데이터베이스 생성 -> 테이블 생성(컬럼 정의) -> 데이터 입력 -> 출력, 수정, 삭제
DBMS 발전 순서
- 종이 -> 파일 시스템 -> SAM -> ISAM -> 계층형 -> 관계형(현재 우리가 사용중인 db) -> 객체지향형(OODB) : 오브젝트형
- 관계형 데이터베이스(현재 단계)
: RDBMS - Relational DataBase Menagement System
: Oracle, MS-SQL, DB2, Infomix, MySQL
: 데이터와 데이터간의 관계 중요시 ->
관리(접속) 인터페이스
- ODBC
- OLE DB
- ADO
- ADO.NET(클래스로 제공 받는다.) : 여러 환경에 상황이 있다. MS SQL, ORACLE, MY SQL : 중간 계층을 만들어 놓아 중간 계층에서 변환하여 읽어 DB의 사용언어 별로 해석 해준다.
SQL
- Structured Query Language
- 구조화된 질의 언어
- 데이터베이스에 질문을 해서 데이터를 입력, 수정, 삭제, 출력하는 프로그래밍 언어
- ANSI-SQL(표준 SQL)
- MS-SQL(T-SQL), Oracle(PL-SQL), DB2, Sybase, MySQL, Access
SQL 구문
- 데이터 조작, 관리, 기타작업
1. DDL(Data Definition Language)
- 데이터와 구조를 정의
- 데이터베이스 생성/삭제/수정, 테이블 생성/삭제/수정..
- 데이터베이스 설계자(DB관리자, 프로그래머)
2. DML(Data Manipulation Language)
- 데이터 입/출력, 검색, 수정, 삭제
- 데이터 조작
- 프로그래머 필수!!(DB관련자.., 프로그래머)
3. DCL(Data Control Language)
- 사용자 권한 관리, 보안
- 데이터베이스 관리자
Management Studio
- MS-SQL 서버에 접속해서 관리 및 조작할 수 있는 툴
- *.sql(텍스트파일) = SQL 구문의 집합
데이터베이스 생성
- DDL
- create database DB명;
테이블
- 데이터의 집합
- 테이블이 표현하는 대상을 엔티티(Entity)라고 표현
- 테이블의 세로줄을 필드(Field)라고 표현, 엔티티에 대한 개별 정보를 표현
- 테이블 안의 하나의 엔티티에 대한 정보의 집합을 레코드(Record)라고 하고 보통 행에 해당 함
명칭 - 표 - 한국 - 모델링
필드 - 컬럼(Column) - 열 - 어트리뷰트(Attribute)
레코드 - 로우(Row) - 행 - 튜플(Tuple)
데이터베이스 오브젝트
- 테이블, 제약조건, 인덱스
- 뷰
- 저장, 프로시저 등..
DB 오브젝트의 명명법
- 같은 범위내에 이름이 중복되면 안됨 - 하나의 DB안에 동일한 테이블명X, 하나의 테이블안에 동일한 컬럼명X
- 대소문자 구분X
- 길이는 128자 이내
- SQL 예약어 사용 불가
- 유니코드 사용 가능(한글 사용 가능)
- #과 @로 시작하는 이름은 사용X(기존 의미가 있음)
- 구조 생성(컬럼 생성) -> 하나의 열의 이름(성격), 자료형 선언
- 컬럼 생성 : 1. 컬럼명, 2. 자료형, 3. 크기, 4. 제약사항
- 자료형 : 숫자형, 문자형, 날짜시간형, 비텍스트형
확장자 : MDF(데이터 베이스의 수많은 테이블 모음, 수많은 데이터)
주소록테이블 생성
create table tblAddress
(
-- sql 주석
-- 컬럼을 정의하는 부분
-- 컬럼명 자료형 (길이) 제약사항
seq int not null,
name varchar(10) not null,
address varchar(100) not null,
tel varchar(15) null
)
테이블 스키마
--1. 어느DB에서명령을실행할지결정
--a. SSMS에서콤보박스로DB 변경
--b. use DB명
use SQLEx;
--ddl
--CREATE DATABASE
dbo.[Test]; : 원형
CREATE DATABASE
test;
DROP DATABASE
test;
-- 테이블생성
-- 열이름, 길이, 타입, 제약조건
-- 주소록테이블생성(선언)
-- SQL에선모든WhiteSpace(스페이스, 탭, 엔터)는동일하게취급
CREATE TABLE tblAddress2
(
--컬럼명자료형(낄이) 제약조건
name nvarchar(5) not null,
age int not null,
tel varchar(15) null,
)
DROP TABLE tblAddress2;
CREATE TABLE tblAddress2
(
--name nvarchar(5) not null constraint primary key,
name nvarchar(5) not null primary key,
nick nvarchar(10) null unique, --중복불가, 생략가능
psycho nvarchar(20) not null default(N'이상없음'),--Nvarchar일경우앞에N을붙여준다.
age int not null default(0)
);
INSERT INTO tblAddress2 values('홍길동', '대장', '이상없음', 0);
INSERT INTO tblAddress2 values('아무개', '', '결벽증', 20);
--INSERT INTO tblAddress2
values('하하하', '부하',
SELECT *
FROM tblAddress2;
--Check, ID 제약조건
CREATE TABLE tblAddress3
(
seq int not null identity(1,1) primary key,
name nvarchar(5) not null,
nick nvarchar(10) null unique,
psycho nvarchar(20) not null
)