본문 바로가기

전공 과목 시험정리/DB(MS,MY)

시험 정리

SQL 기본구문 시험문제 (140 ~ 195)

Create
Insert 총 6문제
Delete
Update
–> SQL 기본구문

올바르게 쓸수 있는지?

CREATE문 설명
create table [table_name](
[table_name] [자료형] [option]
.
.
.
)

자료형들
int –> 정수형
char –> 정수형
varchar –> 가변길이 문자열

Option
not null (반드시 입력받아야함. NULL이 될 수 없음)
primary key (다른 데이터와 중복 불가) (Ex. 주민번호, 학번)
identity(x,y) (x부터 y씩 자동증가)

INSERT문 설명
방법 1
insert into [table_name] values(”,”,”)

방법2
insert into [table_name] (name,age)
values(‘홍길동’,20)

SELECT문 설명
select [가져올 열이름] from [table_name] [Option]
(가져올 열이름은 *로 전체지정 가능)

Option
where [option]
order by [열] [asc,desc]
[원래 열] as [바꿀 열 이름] –> 출력시에 이름만 변경됨. 데이터 베이스상의 이름이 아주 바뀌는것이 아님.

Join 3문제

146페이지
INNER JOIN 볼것.

create view [view_name]
AS
[구문]

후에,
select

Union 1문제

150페이지
union
두 쿼리의 결과를 합쳐서 보여준다.
단, 중복되는 결과는 하나만 보여준다.

union all
두 쿼리의 결과를 합쳐서 보여주는 것은 union 과 같지만,
중복되는 결과는 무시하고 모두 보여준다. (중복되는 값이 두번 보여짐)

View 3문제
긴 쿼리문을 단축시켜놓기 위해서 쓰는것.
(C언어의 define 같이)

Procedure 4문제
create procedure userp_birthday5 //프로시저 정의
@birthday1 char(10), // birthday1 변수를 선언한다. 앞에 @가 있는것은 변수.
@out_id int output //
as
select @out_id=id
from ch6_member
where birthday=@birthday1

declare @id int// id 를 선언

프로시저 호출시
exec userp_birthday5 2, @id output //프로시저 호출은 exec 구문 이용.
select @id

Trigger 3문제
// 특정 구문이 실행되면, 지정한 구문을 실행한다.
create trigger [Trigger_name] on [table_name]
after insert //insert 가 실행되고 나면
as print(‘트리거 출력’) //” 트리거 출력” 을 출력

Cursor 안나옴.

int char_to_int(char b)
{
int a = atoi(b);
return a;
}

int main()
{
int a;
a = char_to_int(‘a’);
}

—-건이 정리—-

create table ” ______”
id (int, char , varchar)
option – (not null, primary key – 기본키 서로 겹치면 안됨(데이터 식별), identity(자동증가))
id int not null identitiy,
name varchar(30) not null
———————————————————————————————–
insert into “colum” , values(“—-“, “—–“)
insert into “table”, (name age) (“myname”, 20)
두개를 반듯이 넣어야함
——————————————————————————————
select * from “table” where name = “fds”
order by asc (오름차순) desc(내림차순)

select * from “google” as yahoo(별칭지정)
yanoo.name yahoo.age <- 옵션지정 가능

————————————————————————————–
join (그냥 join쓰면 inner join,하고 같음)
inner join, outer join
——————————————————————————–
union 중복 제외 자료 조회 union all 중복 포함 모든 자료
형식이랑 열의 갯수가 같아야함
——————————————————-
프로시져 함수 같은것
create PROCEDURE userp_birthday

—- 교과서 DB 구문 —-

———-Create———–

USE SQLEXAMPLE_DB
GO
CREATE TABLE dbo.TEST_TABLE(
test_column1 int IDENTITY(1,1) NOT NULL PRIMARY KEY,
test_column2 varchar(50) NOT NULL,
test_column3 varchar(20) NOT NULL,
test_column4 char(10) NULL,
test_column5 int NULL
)
GO

IDENTITY(1,1)는 1부터 1씩 자동증가.
자주 삭제되는 열이 있을 경우 증가값 사이에 간격이 생길 수 있음.
간격이 발생하지 않도록 하거나, 기존 간격을 매우려면
IDENTITY를 사용하지 않거나, SET IDENTITY_INSERT를 ON 으로 설정.
(명시적으로 값을 입력하기 전에 간격이 있는지 확인해야 함.)

dbo (DataBaseOwner) 는 데이터베이스 내에 모든 동작을 수행할 수 있는 권한을 갖는 사용자.

int 와 char 는 입력 받을 값의 형태를 미리 명시 해주는 것.

varchar(50/20) 은 우선 50이나 20의 크기를 주지만, 앞에 var 옵션을 줌으로서 만약 준 크기보다 적은 값이 들어올 경우,
그에 따라 차지하는 크기가 자동으로 줄어든다.

test_column1 int IDENTITY(1,1) NOT NULL PRIMARY KEY, 에서

IDENTITY(1,1) 은 위에서 썼듯이 1부터 1증가하는 값을 자동으로 가짐.
NOT NULL 은 NULL이 아니란 의미로, 꼭 값이 들어가야 함.
PRIMARY KEY 는 다른 행 (test_column2,test_column3 등)과 겹치지 않아야 한다는 옵션.

———-Insert———–

방법1

USE SQLEXAMPLE_DB
GO

CREATE TABLE dbo.CH4_MEMBER(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
NAME VARCHAR(30),
AGE INT,
S CHAR(4),
ADDR VARCHAR(100),
BIRTHDAY CHAR(10),
ETC TEXT) //TEXT 문자열을 넣을 때 주는 옵션.
GO

INSERT INTO CH4_MEMBER(NAME,AGE,S,ADDR,BIRTHDAY,ETC)
VALUES(‘강마루’,19,’남’,’인천시’,’3′,”)

포인트.
테이블을 만들고 값을 넣을 때,
BIRTHDAY 와 같이 char로 옵션을 주었을 경우 넣는 값이 정수형이라도 문자열 처럼 ‘ 로 묶어야 한다.
하지만 기존에 옵션을 AGE와 같이 int로 주었을 경우 정수값을 넣을때 ‘ 로 묶지않고 정수만 쓴다.

방법2

USE SQLEXAMPLE_DB
GO

CREATE TABLE dbo.CH4_PIVOT_TABLE(
YEAR SMALLINT,
PART CHAR(1),
QUARTER SMALLINT,
AMOUNT DECIMAL(3,1))

포인트
SMALLINT 와 INT 의 차이

INT : -2^31(-2,147,483,648) ~ 2^31 – 1(2,147,483,647)
4 Bytes 차지

SMALLINT : 2^15(-32,768)~2^15 – 1(32,767)
2 Bytes 차지

'전공 과목 시험정리 > DB(MS,MY)' 카테고리의 다른 글

시험정리 3  (0) 2015.01.11
시험정리 2  (0) 2015.01.11
20140616 기초 쿼리 정리  (0) 2015.01.11