문과 코린이의, [C#] 기록/문과 코린이의, [SQL] 기록

[문과 코린이의 IT 기록장] MSSQL - 데이터베이스 변경 (Datatype Alteration, Table Structure , UPDATE, 제약조건, ISNULL example, 데이터베이스 생성/삭제, 유니코드 형식 데이터 입력)

벼리네 2022. 1. 20. 17:54
반응형

[문과 코린이의 IT 기록장] MSSQL - 데이터베이스 변경 (Datatype Alteration, Table Structure , UPDATE, 제약조건, ISNULL example, 데이터베이스 생성/삭제, 유니코드 형식 데이터 입력)

[문과 코린이의 IT 기록장] MSSQL - 데이터베이스 변경 (Datatype Alteration, Table Structure , UPDATE, 제약조건, ISNULL example, 데이터베이스 생성/삭제,  유니코드 형식 데이터 입력)

 


< 참고 강의 영상 >

MSSQL Server 2016 기반의 데이터베이스 입문에서 활용까지 Part.2 대시보드 - 인프런 | 강의 (inflearn.com)

 

MSSQL Server 2016 기반의 데이터베이스 입문에서 활용까지 Part.2 - 인프런 | 강의

데이터베이스 구축에서부터 테이블 생성, 각종 SQL 쿼리문을 사용해서 데이터베이스 내 데이터를 조작, 변경할 수 있습니다., MSSQL로 시작하는 데이터베이스 학습 -데이터를 다양하게 조작, 변경,

www.inflearn.com

2022.01.19 - [문과 코린이의, [SQL] 기록] - [문과 코린이의 IT 기록장] MSSQL - DB & Table 생성 (데이터베이스 만들기, 테이블 만들기)

 

[문과 코린이의 IT 기록장] MSSQL - DB & Table 생성 (데이터베이스 만들기, 테이블 만들기)

[문과 코린이의 IT 기록장] MSSQL - DB & Table 생성 (데이터베이스 만들기, 테이블 만들기) < 참고 영상 강의 > MSSQL Server 2016 기반의 데이터베이스 입문에서 활용까지 Part.1 - 인프런 | 강의..

vansoft1215.tistory.com

2022.01.19 - [문과 코린이의, [SQL] 기록] - [문과 코린이의 IT 기록장] MSSQL - SQL Server 데이터 형식 (SQL Server 데이터 형식, char vs varchar, nchar vs nvarchar, 정수 데이터 크기와 범위, Boolean, 날짜, 시간 데이터 형식)

 

[문과 코린이의 IT 기록장] MSSQL - SQL Server 데이터 형식 (SQL Server 데이터 형식, char vs varchar, nchar vs n

[문과 코린이의 IT 기록장] MSSQL - SQL Server 데이터 형식 (SQL Server 데이터 형식, char vs varchar, nchar vs nvarchar, 정수 데이터 크기와 범위, Boolean, 날짜, 시간 데이터..

vansoft1215.tistory.com

2022.01.20 - [문과 코린이의, [SQL] 기록] - [문과 코린이의 IT 기록장] MSSQL - 테이블/열 생성 및 삭제 (SQL 데이터베이스 언어, CREATE TABLE 쿼리, ALTER TABLE, 글꼴 변경, 동시에 여러개 열 추가 및 삭제 방법, RENAME COLUMN, 종속성 보기, Inner Join)

 

[문과 코린이의 IT 기록장] MSSQL - 테이블/열 생성 및 삭제 (SQL 데이터베이스 언어, CREATE TABLE 쿼리,

[문과 코린이의 IT 기록장] MSSQL - 테이블/열 생성 및 삭제 (SQL 데이터베이스 언어, CREATE TABLE 쿼리, ALTER TABLE, 글꼴 변경, 동시에 여러개 열 추가 및 삭제 방법, RENAME CO..

vansoft1215.tistory.com


1. Datatype Alteration

- 데이터 형식을 변경한다.

ALTER TABLE dbo.memberTbl
	ALTER COLUMN mem_point smallint;
    -- 데이터타입을 smallint로 바꿈

2. Table Structure 

- 테이블 구조 확인 : 테이블의 컬럼명, 데이터 형식 등을 살펴볼 수 있다.

 

1) 테이블 구조 확인 방법 1. EXEC sp_columns / EXEC sp_help

EXEC sp_columns 테이블명; 
 -- sp : 저장 프로시저 , EXEC : 실행해라
 -- 테이블에 대한 모든 정보들이 출력됨
EXEC sp_help 테이블명;
 -- 좀 더 세부적으로 정보들이 나옴.

sp_columns 사용
sp_help 실행

2) 테이블 구조 확인 방법 2. sys.columns  / sys.tables

SELECT * FROM sys.columns; -- DB 내에 모든 열들이 나옴 (조건 및 정렬을 걸어주는것이 좋음)
 ex. SELECT * FROM sys.columns ORDER BY name ASC;
 
 
SELECT * FROM sys.tables; -- 이 DB 내에 모든 테이블들이 나옴

 * 이것들은 뷰(조회용 가상테이블)에 있음 (시스템 테이블 X)

 

 

3) 테이블 구조 확인 방법 3. Information_schema.columns

information_schema.columns 사용한 테이블 정보 확인

- 시스템 뷰(조회용 가상 테이블) 쪽에서 확인이 가능하다.

 * 이를 활용해서 필요한 정보를 골라내 테이블 정보를 확인할 수 있다.

이 뷰 내에서 볼 수 있는 정보들

SELECT table_name, column_name, column_default, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
ORDER BY character_maximum_length DESC; -- 이를 기준으로 내림차순 정렬

결과 (데이터베이스 - TestDB로 쿼리 작동)


3. UPDATE

- 데이터(값)를 조작, 변경하는 쿼리

- 여러 행의 값을 동시에 수정 가능하다. 

 

1) 기본 구조

UPDATE [테이블명] SET [컬럼명] = 값[, 컬럼 = 값, ...][WHERE 조건];
-- 조건은 생략 가능

: WHERE조건절을 생략하면 모든 행의 값이 수정되므로 매우 주의해야 한다.

: 값 대신DEFAULT를 적으면, 테이블에 정의된 DEFAULT값으로 변경된다.

 

NULL로 설정된 값들을 업데이트 필요

 

2) NULL값 UPDATE

- 기존 레코드들에 존재하는 NULL값을, 한번에 변경하고자 할 때 사용한다.

 ex. 총 8개의 레코드 중, 2개의 레코드는 EXPERT라는 값이 입력되어 있는 경우. 나머지 6개 레코드의 NULL값을 변경해야 할 때 (그렇지만 8개의 레코드 모두 영향을 받음. 변화를 하지 않았을 뿐)

UPDATE [테이블명] SET [컬럼명] = ISNULL([컬럼명], '변경할 값');
-- ISNULL(컬럼명, 컬럼이 NULL값일 경우 대체값)
< ISNULL이란? >
- SQL Server 내장 함수
- 컬럼이 NULL값을 가지고 있는 경우, 다른 값으로 대체할 수 있음.

 

3) UPPER(), LOWER() UPDATE

- 대소문자 변경 함수

 cf) 참고

 

4) INITCAP()

- 영문 앞글자만 대문자로 바꿔주는 함수 ex. korea seoul -> Korea Seoul

- DBMS마다 지원 여부가 다름. (Oracle에는 존재O , but SQL Server에서는 존재 X)

- 따라서 SQL Server에서는, 사용자 정의 함수로 만들어서 사용하는 경우가 많다.

 


4. 제약조건

1) 제약조건 설정 (디폴트값)

 

2) 이 테이블(memberTbl)에 존재하는 제약조건들에 대해 확인.

EXEC sp_helpconstraint memberTbl;

 * 제약조건이 있으면 해당 컬럼은 삭제가 안됨 (제약조건을 먼저 삭제해준 후, 해당 컬럼을 삭제해줘야 함.

 

3) 제약조건 삭제

 * constraint_name의 제약조건을 복사 후, 위와 같이 삭제
제약조건이 삭제되고, PRIMARY KEY만 존재

 

4) 해당 컬럼 삭제


5. ISNULL example

- 특정 컬럼 검색NULL값이면, '값없음'으로 표시하여 검색하기. * 업데이트 X

SELECT ISNULL(컬럼명, '값없음') AS 컬럼별칭 FROM 테이블명;
-- 지정한 컬럼명 하나만 결과창에 나온다.

SELECT ISNULL(*, '값없음') AS 컬럼별칭 FROM 테이블명;
-- *(asterisk)와 함께 사용시 다른 컬럼들도 나오게 할 수 있다.

6. 데이터베이스 생성/삭제

1) 생성

a) AAA라는 데이터베이스를 생성

CREATE DATABASE AAA;

 

b) AAA라는 데이터베이스에서 작업

USE AAA;

 

c) AAATABLE 생성

CREATE TABLE AAATABLE (ID varchar(16) NULL, PW varchar(16) NULL, AGE TINYINT NULL);

 

d) AAATABLE 자료입력

INSERT INTO DBO.AAATABLE VALUES ('hongkildong', '123abc', 30);

 

e) AAATABLE 자료출력

SELECT ID AS 아이디, PW AS 비밀번호, AGE AS 나이 FROM DBO.AAATABLE;

 

2) 삭제

f) AAATABLE 삭제

DROP TABLE DBO.AAATABLE;

 

g) AAA 데이터베이스 삭제

DROP DATABASE AAA; 
-- ERROR 발생 이유 
-- AAA DB에 들어가있는데, AAA데이터베이스를 삭제하려고 하면 에러가 발생함.
-- 따라서 AAA DB에서 벗어나야 함 (바로 다음의 USE MASTER;를 사용하면 해결!)

 

h) 사용가능 DB영역을 MASTER로 변경

USE MASTER;

 

i) 다시 AAA 데이터베이스 삭제

DROP DATABASE AAA;

7. 유니코드 형식 데이터 입력

/* 데이터베이스 생성 */
CREATE DATABASE TestDB2;

/* 해당 데이터베이스에서 작업 */
USE TestDB2;

/* 테이블 생성 */
CREATE TABLE dbo.testTable(
	mem_num smallint NOT NULL,
    mem_nation	nvarchar(25) NOT NULL,
    mem_name nvarchar(30) NOT NULL,
    mem_birthday date,
    mem_income_tzx money -- money라는 데이터 타입 또한 존재
);

/* 테이블에 데이터 입력 */
INSERT TestDB2.dbo.testTable
VALUES
	(1, N‘한국', N’홍길동★', ‘1977-07-07', 1500.00),
    (2, N‘미국', N’Jackson❤', ‘1980-08-08', 2500.00),
    (3, N’태국', N’สวัสดี', ‘1982-12-25', 1700.00),
    (4, N’베트남', N’chào', ‘1990-11-11', 1400.00),
    (5, N’중국', N’你好', ‘1985-10-25', 1100.00),
    (6, N’일본', N’こんにちは', ‘1992-10-25', 2200.00);
    -- 유니코드 지원 컬럼으로 데이터타입을 만듦.

/* 테이블의 데이터 출력 */
SELECT * FROM TestDB2.dbo.testTable;

* 유니코드 형식의 SQL을 저장할 경우에는, 유니코드 형식으로 저장을 해줘야함. (저장할 때 안내 창 나옴)


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)

 

반응형