1. 程式人生 > 其它 >基於SQLserver的SQL語句彙總

基於SQLserver的SQL語句彙總

實驗二:資料庫檔案操作

drop database S_T;
create database S_T;
-- 修改mdf
create database company
on
(
	name=company_data,
	filename='V:\學習檔案\資料庫\生成檔案\company_data.mdf',
	size=5MB,
	maxsize=15MB,
	filegrowth=1MB
)

-- 修改ndf
alter database company
add file
(
	NAME=company2_data,
 	FILENAME='V:\學習檔案\資料庫\生成檔案\company2_data.ndf',
	SIZE=1MB,
	MAXSIZE=5MB,
	FILEGROWTH=1MB
)
-- 修改ldf
alter database company
log on
(
	NAME=company_data_log,
 	FILENAME='V:\學習檔案\資料庫\生成檔案\company_data_log.ldf',
	SIZE=3MB,
	MAXSIZE=15MB,
	FILEGROWTH=2MB 
)

alter database company
add FILEGROUP TempGroup
alter database company
add file
(
	NAME=company3_data,
 	FILENAME='V:\學習檔案\資料庫\生成檔案\company3_data.ndf',
	SIZE=3MB,
	MAXSIZE=10MB,
	FILEGROWTH=1MB 
)to filegroup TempGroup


alter database company

remove file company2_data

-- 刪除資料庫
USE MASTER    
GO    
     
DECLARE @dbname SYSNAME    
SET @dbname = 'company' 
     
DECLARE @s NVARCHAR(1000)    
DECLARE tb CURSOR LOCAL   
FOR  
    SELECT s = 'kill   ' + CAST(spid AS VARCHAR)  
    FROM   MASTER..sysprocesses  
    WHERE  dbid = DB_ID(@dbname)    
     
OPEN   tb      
FETCH   NEXT   FROM   tb   INTO   @s    
WHILE @@fetch_status = 0  
BEGIN  
    EXEC (@s)   
    FETCH NEXT FROM tb INTO @s  
END    
CLOSE   tb    
DEALLOCATE   tb    
  
EXEC ('drop   database   [' + @dbname + ']')    

create database company

實驗三:資料表建立和修改

-- 刪除資料庫S_T
USE MASTER    
GO    
DECLARE @dbname SYSNAME    
SET @dbname = 'S_T' 
DECLARE @s NVARCHAR(1000)    
DECLARE tb CURSOR LOCAL   
FOR  
    SELECT s = 'kill   ' + CAST(spid AS VARCHAR)  
    FROM   MASTER..sysprocesses  
    WHERE  dbid = DB_ID(@dbname)    
     
OPEN   tb      
FETCH   NEXT   FROM   tb   INTO   @s    
WHILE @@fetch_status = 0  
BEGIN  
    EXEC (@s)   
    FETCH NEXT FROM tb INTO @s  
END    
CLOSE   tb    
DEALLOCATE   tb    
  
EXEC ('drop   database   [' + @dbname + ']')    
-- 建立資料庫S_T
create database S_T
use S_T
-- 1.	建立student表,設定Sno為主鍵;
-- 在Sno列上建立核查約束,要求學號各個位上只能取數字字元;
-- 在Ssex列上建立核查約束,要求性別只能取“男”或“女”;
-- 在Sage 列上建立核查約束,要求學生的年齡只能在14至38之間。
create table student(
	Sno char(5) not null primary key,
	Sname char(20) not null unique,
	Ssex char(2) not null check (Ssex='男' or Ssex='女'),
	Sage smallint not null check(Sage between 14 and 38),
	Sdept char(20) not null
)
-- 2.	建立course表,設定列Cno為主鍵;
-- 在Cno列上建立核查約束,要求課程號只能取數字字元。
use S_T
create table course(
	Cno char(4) not null primary key,
	Cname char(40) not null,
	Cpno char(4),
	Ccredit smallint not null
)
-- 3.	建立sc表,設定主鍵為Sno與Cno的組合;
-- 在Grade列上建立核查約束,限定成績只能在0-100。
use S_T
create table sc(
	Sno char(5) not null,
	Cno char(4) not null,
	primary key(Sno,Cno),
	Grade int check(Grade between 0 and 100)
)
-- 4.	修改course表,
-- 在表中為Cpno列新增一外來鍵約束Fk_Cpno,
-- 它參照了course表的主鍵Cno。
alter table course
add constraint Fk_Cpno foreign key (Cpno) references course(Cno)
-- 5.	修改sc表,在表中為Sno新增一外來鍵約束Fk_Sno,
-- 它參照了student表中的主鍵Sno;
-- 為Cno新增外來鍵約束Fk_Cno, 它參照了course表中的主鍵Cno。
alter table sc
add constraint Fk_Sno foreign key(Sno) references student(Sno)
alter table sc
add constraint Fk_Cno foreign key(Cno) references course(Cno)
-- ------------------------------------
-- 	針對company資料庫:
-- 刪除資料庫company
USE MASTER    
GO    
DECLARE @dbname SYSNAME    
SET @dbname = 'company' 
DECLARE @s NVARCHAR(1000)    
DECLARE tb CURSOR LOCAL   
FOR  
    SELECT s = 'kill   ' + CAST(spid AS VARCHAR)  
    FROM   MASTER..sysprocesses  
    WHERE  dbid = DB_ID(@dbname)    
     
OPEN   tb      
FETCH   NEXT   FROM   tb   INTO   @s    
WHILE @@fetch_status = 0  
BEGIN  
    EXEC (@s)   
    FETCH NEXT FROM tb INTO @s  
END    
CLOSE   tb    
DEALLOCATE   tb    
  
EXEC ('drop   database   [' + @dbname + ']')    
-- 建立資料庫company
create database company
use company
-- 1.	在資料庫company中建立以上五張表,並設定各表的主鍵。
create table employee(
	emp_no char(5) not null primary key,
	emp_name VARCHAR(10) not null,
	sex char(2) not null,
	dept VARCHAR(10) not null,
	title VARCHAR(10) not null,
	date_hired datetime not null,
	birthday datetime ,
	salary int not null,
	telephone VARCHAR(20),
	addr VARCHAR(50)
)
create table customer(
	cust_id char(5) not null primary key,
	cust_name VARCHAR(20) not null,
	addr VARCHAR(40) not null,
	tel_no VARCHAR(20) not null,
	zip char(6)
)
create table sales(
	order_no int not null primary key,
	cust_id char(5) not null,
	sale_id char(5) not null,
	tot_amt numeric(9,2) not null,
	order_date datetime not null
)
create table sale_item(
	order_no int not null ,
	prod_id char(5) not null ,
	qty int not null,
	unit_price numeric(7,2) not null,
	order_date datetime
	primary key(order_no,prod_id),
)
create table product(
	prod_id char(5) not null primary key,
	prod_name VARCHAR(20) not null
)
-- 2.	在銷售主表sales中新增欄位“發票號碼” invoice_no,char(10),NOT NULL。

alter table sales
add invoice_no char(10) not null
-- 3.	新增外來鍵約束:
-- 在銷售主表sales的業務員編號欄位sale_id上新增外來鍵約束,參照欄位為員工表employee中的欄位員工編號emp_no,約束名為FK_sale_id。
alter table sales
add constraint Fk_sale_id foreign key(sale_id) references employee(emp_no)

-- 在銷售主表sales的客戶號欄位cust_id上新增外來鍵約束,參照欄位為客戶表customer中的欄位客戶號cust_id,約束名為FK_cust_id。
alter table sales
add constraint Fk_cust_id foreign key(cust_id) references customer(cust_id)
-- 在銷售明細表sale_item的訂單編號欄位order_no上新增外來鍵約束,
-- 參照欄位為銷售主表sales中的欄位訂單編號order_no,
-- 約束名為FK_order_no。
alter table sale_item
add constraint Fk_order_no foreign key(order_no) references sales(order_no)

-- 在銷售明細表sale_item的產品編號欄位prod_id上新增外來鍵約束,
-- 參照欄位為產品名稱表product中的產品編號欄位prod_id,
-- 約束名為FK_prod_id。
alter table sale_item
add constraint Fk_prod_id foreign key(prod_id) references product(prod_id)
-- 4.	新增核查約束:
-- a) 將員工表employee中的薪水欄位salary的值限定在1000至10000間,
-- 約束名為CK_salary。
alter table employee
add constraint Ck_salary check(salary between 1000 and 10000)
-- b) 將員工表employee中的員工編號欄位emp_no設定為以“E”字母開頭,
-- 後面跟5位數的編號,約束名為CK_emp_no。
alter table employee
add constraint CK_emp_no check(LEFT(emp_no,1)='E' and len(emp_no)=5) 
-- c)	將員工表employee中的性別欄位設定這取值只能是“男”和“女”。
--約束名為CK_sex。
alter table employee
add constraint Ck_sex check(sex='男' or sex='女')
-- d)	將銷售主表sales中的發票號碼欄位invoice_no設定為以“I”字母開頭,
--後面跟9位數的編號,約束名為CK_inno。
alter table sales
add constraint Ck_inno check(LEFT(invoice_no,1)='I' and len(invoice_no)=10)

-- 5.為銷售主表sales中的欄位發票號碼invoice_no設定為唯一約束,
-- 約束名為UN_inno。
alter table sales
add constraint UN_no unique(invoice_no)

實驗四:資料表的查詢

就是不告訴你

本文來自部落格園,作者:{Zeker62},轉載請註明原文連結:https://www.cnblogs.com/Zeker62/p/15359681.html