--創建資料庫使用默認的方式
create database 資料庫名稱
--創建一個完整的資料庫,帶有主檔案和日志檔案
create database 資料庫名稱 --邏輯名稱
on primary(
name='資料庫名稱', --物理名稱
filename='d:\名字.mdf',
size=10mb,
maxsize=unlimited,
filegrowth=10%) --若有多個檔案在)后面添加 ,
log on(
name='test_log',
filename='d:\名字.ldf',
size=1mb,
maxsize=5mb,
filegrowth=1mb)
go
--修改資料庫
--添加一個檔案組
alter database test
add filegroup 檔案組名稱
--向檔案組里添加檔案
alter database test
add file
(name='test_data2',
filename='d:\170508010430董志洋\test_data2.ndf',
size=5mb,
maxsize=100mb,
filegrowth=5mb),
(name='text_data3',
filename='d:\170508010430董志洋\text_data3.ndf',
size=5mb,
maxsize=100mb,
filegrowth=5mb)
to filegroup testgroup
go
--添加日志檔案
alter database test
add log file
(name='test_log2',
filename='d:\170508010430董志洋\test_log2.ldf',
size=1mb,
maxsize=10mb,
filegrowth=1mb)
go
--洗掉一個檔案組(只能洗掉空檔案組,要想洗掉帶有檔案的檔案組,就需要先把檔案刪光)
alter database test
remove filegroup textgroup
--洗掉一個檔案
alter database test
remove file test_data2
--洗掉資料庫
drop database 資料庫名稱 --強調:正在使用的當前資料庫不能洗掉
--擴大資料庫
alter database test
modify file
(name='test',
maxsize=unlimited,
filegrowth=15%)
go
--縮小資料庫
--收縮資料庫,保證該資料庫所有的檔案都有20%的可用空間
DBCC shrinkdatabase(test,20)
--收縮資料庫資料檔案 ,縮小到10mb
DBCC shrinkfile(test,10)
--附加資料庫
create database test
on
(filename='d:\test.mdf') --只需要有主檔案就行,位置沒有改變
for attach
--附加(資料庫檔案位置改變了)
create database zhangsan
on
(filename='d:\1\zhangsan_data1.mdf'),
(filename='d:\2\zhangsan_data2.ndf'),
(filename='d:\17\zhangsan_log.ldf')
for attach
--分離資料庫
use master
go
execute sp_detach_db 'test','true' --true為跳過‘更新統計資訊’,fslse為顯示
--創建表,欄位和約束
create table student --使用約束,讓每個學號數字都在九之間
(sno char(10) check (sno like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
primary key,
sname varchar(8) not null, --設定非空
sex char(2) default '男' check (sex in('男','女')), --默認是男,約束sex只能是男或女
scomegrade smallint check(scomegrade between 0 and 750), --約束分數在0到750之間
sbirthday date check(year(getdate())-year(sbirthday) between 15and 35), --計算入職年齡
snation bit default 'false', --設定是否少數民族的默認值為 否
smemo text, --文本
sphone char(11) unique, --設定唯一(不可重復)
semail varchar(50) unique)
--一個表里只有一個主鍵,可以有多個唯一
-- getdate()是獲取當前的日期
-- year(getdate())是獲取當前日期的年
--修改表的結構
--向學生表里添加家庭住址和郵政編碼欄位
alter table student add Stuaddress char(40) null,Zipcode char(6) not null
--修改表中的sdept欄位改為 varchar型別 長度為30不為空
alter table student
alter column sdept varchar(30) not null --column 是列
--將stuaddress列洗掉
alter table student drop column stuaddress
--創建選課表,具有主鍵和外鍵,將學生表和資訊表聯系到一起
create table sc
(sno char(10),
cno char(10),
grade tinyint,
primary key (sno,cno),
foreign key(sno) references student (sno) --外鍵
on update cascade -- 級聯 :修改一個表的資訊,和他有關聯的表的資訊全會修改
on delete cascade,
foreign key(cno) references course(cno)
on update no action --這個是禁止級聯
on delete no action,
)
--單個添加主鍵約束
alter table 表名 add constraint pk_cno primary key(欄位名); --pk_cno 為主鍵名
--洗掉主鍵約束
alter table 表名 drop constraint pk_cno;
--單個添加unique約束
alter table 表名 add constraint u_cname unique(欄位名);
--單個添加check約束 只能是男或女
alter table student add constraint ck_sex check(sex='男' or sex='女')
--洗掉check約束 若是要修改CHECK約束先要洗掉現有的約束再新創建
alter table 表名 drop constraint ck_sex;
--default默認約束 將sdept默認為計算機系
alter table student add constraint df_dept default '計算機系' for sdept
--洗掉default約束
alter table 表名 drop constraint df_dept;
--foreign key外鍵約束 在表score的cno欄位上 設定為表course上cno的外鍵
alter table score add constraint fk_cno foreign key(cno) references course(cno)
--洗掉foreign key 約束
alter table score drop constraint fk_cno
--禁用約束 禁用全部
alter table 表名
nocheck
constraint all
--啟用約束
alter table 表名 check constraint ck_sex
--使用系統存盤程序陳述句sp_rename,修改表的名稱
EXEC sp_rename '表名','新名字'
--使用系統存盤程序陳述句sp_rename,修改表中欄位的名稱
EXEC sp_rename '表名.老欄位名','新欄位名','column'
--洗掉表
drop table 表名
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/25135.html
標籤:SQL Server
