基於SQLserver的SQL語句彙總
阿新 • • 發佈:2021-10-01
實驗二:資料庫檔案操作
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