SQL Server / 스키마 / 만들기, 조회하기, 수정하기, 삭제하기

스키마(Schema)를 이용하여 테이블을 분류하고 권한 관리를 할 수 있다.

스키마 만들기

  • a라는 이름의 스키마를 만든다.
create schema a;

스키마 조회하기

  • 스키마 정보를 출력한다.
select * from sys.schemas;

테이블 만들기

  • 스키마 지정 없이 테이블을 만들면 dbo 스키마가 붙는다.
create table client ( id int );
  • 스키마를 지정하고 만들면, 그 스키마에 테이블이 만들어진다.
create table a.client ( id int );
  • dbo.client와 a.client는 테이블 이름은 같지만 다른 테이블로 처리된다.

테이블의 스키마 변경하기

  • a.client의 스키마를 b로 변경한다. 즉, b.client로 만든다.
alter schema b transfer a.client;

스키마 삭제하기

  • a 스키마를 삭제한다. 만약 a에 속한 테이블이 있으면 삭제되지 않는다.
drop schema a;
같은 카테고리의 다른 글
SQL Server 2022 / Always On 가용성 그룹 만들기

SQL Server 2022 / Always On 가용성 그룹 만들기

Always On 가용성 그룹을 만들면 한 SQL Server에 장애가 생겼을 때 다른 SQL Server가 대신하도록 할 수 있다. Always On 가용성 그룹은 Windows Server의 장애 조치(Failover) 클러스터를 기반으로 하고, 장애 조치(Failover) 클러스터는 Active Directory 환경에서 사용할 수 있다. 즉, Always On 가용성 그룹을 만드는 것보다 그러한 환경을 구축하는 게 더 어려울 ...

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

테이블 만들기 client 테이블을 만든다. 열이 하나도 없으면 만들어지지 않으므로, 적어도 하나의 열은 같이 만들어야 한다. create table client ( id int ); 테이블 삭제하기 client 테이블을 삭제한다. drop table client; 테이블 이름 변경하기 테이블 client의 이름을 account로 변경한다. sp_rename client, account; 테이블 목록 조회하기 방법 1 select * from information_schema.tables; 방법 2 execute sp_tables @table_type = "'table'"; SSMS 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...

SQL Server / 제어문 / CASE

SQL Server / 제어문 / CASE

CASE 함수는 데이터의 값에 따라 특정 값을 부여할 때 사용한다. CASE로 시작하여 END로 끝나고, 조건은 WHEN, 부여할 값은 THEN으로 정의한다. 예를 들어 다음과 같은 점수 데이터가 있다고 하자. 20점 이하는 E, 20점 초과 40점 이하는 D, 40점 초과 60점 이하는 C, 60점 초과 80점 이하는 B, 80점 초과 100점 이하는 A를 주고 ...

SQL Server / SSMS / IntelliSense / 자동 완성 기능 사용하는 방법, 설정하는 방법

SQL Server / SSMS / IntelliSense / 자동 완성 기능 사용하는 방법, 설정하는 방법

텍스트 에디터의 경우 코드의 일부분을 입력했을 때 그 문자열을 포함한 코드 리스트를 보여주는 기능이 있다. 이러한 자동 완성 기능을 SSMS에서도 제공하고 있고, IntelliSense라고 한다. 원하는 것을 쉽게 찾고, 오타를 줄일 수 있는 유용한 기능이다. 예를 들어 from 뒤에 문자열을 입력하면 그와 관련된 것이 나오고, 상하 화살표를 이용해 선택한다. 선택한 것을 사용할 ...

SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SQL Server / SSMS / 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 설정 변경하는 방법

SSMS로 테이블 작업을 할 때 다음과 같은 메시지와 함께 저장이 되지 않는 경우가 있다. 변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 옵션을 설정했습니다. 테이블 열의 순서를 변경하는 등 특정 ...

SQL Server / Query / SELECT / 데이터 조회

SQL Server / Query / SELECT / 데이터 조회

예제로 사용한 데이터베이스는 AdventureWorks이다. SELECT로 원하는 데이터를 조회한다. SELECT FROM 기본 SELECT 뒤에는 조회할 열 이름을, FROM 뒤에는 조회할 테이블 이름을 입력한다. 모든 열을 조회한다면 *를 사용한다. HumanResources.Employee 테이블의 모든 열을 조회한다. select * from HumanResources.Employee ; HumanResources.Employee 테이블에서 BusinessEntityID, JobTitle, BirthDate, HireDate를 조회한다. select BusinessEntityID, JobTitle, BirthDate, HireDate from HumanResources.Employee ; TOP TOP으로 조회 개수를 정한다. 상위 10개를 ...

SQL Server / 스키마 / 만들기, 조회하기, 수정하기, 삭제하기

스키마(Schema)를 이용하여 테이블을 분류하고 권한 관리를 할 수 있다. 스키마 만들기 a라는 이름의 스키마를 만든다. create schema a; 스키마 조회하기 스키마 정보를 출력한다. select * from sys.schemas; 테이블 만들기 스키마 지정 없이 테이블을 만들면 dbo 스키마가 붙는다. create table client ( id int ); 스키마를 지정하고 만들면, 그 스키마에 테이블이 만들어진다. create table a.client ( id int ); dbo.client와 a.client는 테이블 이름은 ...

SQL Server / Query / JOIN

SQL Server / Query / JOIN

JOIN으로 여러 개의 테이블의 데이터를 연결하여 조회할 수 있다. 다음과 같은 두 개의 테이블이 있다고 하자. country에는 나라의 이름이, city에는 도시의 이름이 있다.  INNER JOIN country 테이블의 country_no와 city 테이블의 country_no가 같은 것을 연결한다. 두 테이블에 모두 존재하는 데이터를 출력한다. select country.country_name, city.city_name from country inner join city on country.country_no = city.country_no ; LEFT JOIN country 테이블의 country_no와 ...

SQL Server / 데이터베이스 / 만들기, 삭제하기, 수정하기, 조회하기

데이터베이스 만들기 데이터베이스는 create database로 만든다. shop이라는 이름의 데이터베이스를 만든다. create database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. create database "shop.shop"; create database ; 데이터베이스 삭제하기 데이터베이스는 drop database로 삭제한다. drop database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. drop database "shop.shop"; drop database ; 데이터베이스 사용하기 작업 대상이 되는 데이터베이스를 ...

SQL Server / Query / 메모

최근 날짜 가져오기 Name으로 그룹화한 후 최근 날짜를 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name 최근 날짜가 2020년인 것만 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name HAVING MAX( Date ) BETWEEN '2020-01-01' AND '2020-12-31' 모든 데이터베이스 출력하기 EXECUTE sp_helpdb;