--建立數據庫使用默認的方式
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 表名