728x90
SQL 개요
SQL (Structured Query Language)
- 데이터베이스에 데이터 삽입/삭제/수정/검색 방법
- 관계 대수나 관계 해석을 사용 ==> 일반사용자가 사용하기 어렵다. · 대안 : SQL 사용
- SQL
- 관계 데이터베이스를 위한 표준 질의어
- 사용자가 처리를 원하는 데이터가 무엇인지만 제시
- 데이터를 얻는 방법에 대하여 언급하지 않음
==> 비절차적 데이터 언어의 특성
SQL의 역사
- 1974년 SEQUEL (Structured English QUEry Language)에서 유래
- IBM 연구소의 연구용 관계 데이터베이스 관리시스템 (System R)을 위한 언어
- 이후 개발된 관계 데이터베이스 관리 시스템은 다른 질의어를 사용
- 1986년 미국 표준 연구소인 ANSI와 국제 표준화 기구인 ISO에서 SQL을 관계 데이터베이스의 표준 질의어로 채택하고 표준화 작업 진행
- 1986년 표준 SQL : SQL-86 또는 SQL1
- 1992년 표준 SQL : SQL-92 또는 SQL2
- 1999년 표준 SQL : SQL-99 또는 SQL3
SQL 사용 방법
- DBMS 내에서 대화식으로 질의
- C, C++, Java와 같은 언어로 작성한 프로그램에 삽입하여 사용
SQL의 분류
- 데이터정의어 (DDL, Data Definition Language)
- 테이블을 생성, 변경, 삭제하는 기능
- 데이터조작어 (DML, Data Manipulation Language)
- 테이블에 데이터를 삽입, 수정, 삭제, 검색하는 기능
- 데이터제어어 (DCL, Data Control Language)
- 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여, 취소하는 기능
- 데이터베이스 관리자가 주로 사용
SQL의 기능
- 주기능 : 검색을 위한 질의 작성용 비절차적 데이터 조작어
- 보조기능 : 데이터 정의 및 제어
MySQL 테이블 생성, AUTO_INCREMENT(자동증가)
실습용 데이터베이스
- A. Customer 테이블
- B. Items 테이블
- C. Orders 테이블
테이블 생성 – 속성 정의
- A. 테이블 생성시 정의할 사항
- ① 테이블 이름
- ② 속성 이름 및 데이터 타입, 제약 사항
- ③ 기본키, 대체키, 외래키의 정의
- ④ 데이터 무결성을 위한 제약조건 정의
- SQL 질의문
- 세미콜론( ; )으로 문장의 끝을 표시
- 대소문자 구분하지 않음
- B. 속성 정의
- 테이블을 구성하는 속성 정의
- 데이터 타입 정의
- NULL 값 허용 여부 정의
- 기본 값 필요 여부
- 테이블을 구성하는 속성 정의
- C. 속성의 데이터 타입
- D. NOT NULL
- 속성의 NULL 값을 허용하지 않음을 의미
- 반드시 값이 입력되어야 하는 속성에 사용
- 인터넷 상의 회원가입시 필수항목
- 예 : account VARCHAR(20) NOT NULL
- E. DEFAULT
- 속성의 기본 값을 지정
- DEFAULT를 지정하지 않고, 값이 입력되지 않은 경우 NULL값으로 자동 저장
- 예 : credit INT DEFAULT 0
- 예 : grade VARCHAR(10) DEFAULT ‘NEW’
- 문자열, 날짜 데이터 : 작은 따옴표로 묶어야 함
- 작은 따옴표 내의 문자열 : 대소문자 구분됨
- 예 :
- grade VARCHAR(10) DEFAULT ‘NEW’
- grade VARCHAR(10) DEFAULT ‘New’
- 예 :
- F. AUTO_INCREMENT
- 테이블에 새로운 투플이 삽입될 때, 자동으로 DBMS에서 유일한 번호를 생성
- AUTO_INCREMENT인 속성은 기본키로 지정되어야 함.
- 1부터 시작하며, 새로운 투플(레코드) 추가시 1씩 증가
- 형식 : 속성이름 INT NOT NULL AUTO_INCREMENT
- 다른 값부터 시작하도록 설정할 수 있다.
- 형식 : ALTER TABLE 테이블명 AUTO_INCREMENT=초기값
- 새로운 레코드를 삽입할 때, AUTO_INCREMENT로 지정된 속성값은 입력하지 않아도 됨
- AUTO_INCREMENT로 지정된 속성의 현재 값은 변경할 수 없음
- 레코드 삽입시 SQL 구조
- INSERT INTO 테이블명 ( 속성1, … 속성N ) values ( 속성값1, … 속성값N )
- AUTO_INCREMENT로 지정된 속성은 제외할 수 있음
- G. 실습용 데이터베이스 데이터 정의
- Customer 테이블
실습용 데이터베이스 데이터 정의 (Customer 테이블)
- 기본 테이블 생성
- 데이터 입력
- 데이터입력 : NOT NULL 속성 데이터만 입력시
- AUTO_INCREMENT 적용시
- AUTO_INCREMENT 의 초기값을 100으로 설정하기
- 테이블 생성 직후에 설정
- AUTO_INCREMENT 적용시 INSERT 오류
- AUTO_INCREMENT : 속성이름 리스트를 사용하지 않고 입력하기
- AUTO_INCREMENT 속성 값 = 숫자 이외의 모든 문자열이나 NULL을 속성 값으로 입력하면 DBMS는 자동으로 다음 숫자를 사용하여 투플을 삽입함
- AUTO_INCREMENT 속성 값 = 숫자를 사용하면, 입력한 숫자로 값이 지정됨
실습용 데이터베이스 데이터 정의 (Items 테이블)
- Orders 테이블
728x90
'프로그래밍 > Database' 카테고리의 다른 글
[Database] MySQL 테이블 변경 (0) | 2020.04.07 |
---|---|
기본키, 대체키, 외래키, 테이블 제약 조건 (0) | 2020.04.07 |
MySQL 기본 명령어 - 데이터베이스 및 사용자 계정 (0) | 2020.04.06 |
Windows(윈도우)에 MySQL 설치방법 (0) | 2020.04.06 |
[Database] 순수관계 연산자란? (3) (0) | 2020.04.06 |