use MyDB
go
--DDL:CREATE,Alter,Drop:針對所有的數據庫對象,基本都是都有效.
Create database Soft--建立數據庫,路徑在SQL Server安裝路徑/data文件夾下
--格式:
/*create database 庫名
[on[Primary]
[<文件定義>[ ,...n ]]
[ , <文件組定義> [ ,...n ] ]
[log on[<文件定義>]]
文件定義:
(name='邏輯文件名',
filename='物理文件名',
size=初始大小,
maxsize=最大大小,
filegrowth=文件增長方式)
*/
if exists(select * from sys.databases where name='MyNewDb')
drop database MyNewDb--刪除數據庫
create database MyNewDb
on primary--主數據文件有一個,默認文件組
(
name='MyNewDb',
filename='e:/MyNewDb.mdf',
size=3Mb,
maxsize=10Mb,
filegrowth=1MB
)
,filegroup FileGroupS
( name='MyNewDb2',
filename='e:/MyNewDb2.ndf',
size=3Mb,
maxsize=UNLIMITED ,--最大值不受限制,無限增長,
filegrowth=1MB)
,(
name='MyNewDb3',
filename='e:/MyNewDb3.ndf',
size=3Mb,
maxsize=UNLIMITED ,
filegrowth=1MB)
log on
(
name='MyNewDb_Log',
filename='e:/MyNewDb_Log.ldf',
size=1Mb,
maxsize=10Mb,
filegrowth=1%
)
--查看數據庫的幫助信息
sp_helpdb MyNewDb
--修改數據庫的名稱:sp_renamedb 舊數據庫名,新數據庫名
sp_renamedb MyNewDb,MyDBDB
--修改數據庫alter database 庫名..相關定義
--向文件組FileGoups添加一個次要數據文件
alter database MyDBDB
add file
(
name='MyNewDb4',
filename='e:/MyNewDb4.ndf',
size=1Mb,
maxsize=10Mb,
filegrowth=1%
)
to FileGroup FileGroups
alter database MyDBDB
remove file MyNewDb2
--通過alter database 修改庫名
alter database MyDBDB
modify name=MYNewDB
--表管理:創建、修改、刪除;DDL:Create Alter Drop
use myDB--1.使用自己的數據庫.
go
Create table Customer--數據庫名.架構名.表名;myDB.dbo.Customer
( --字段名 數據類型[長度]
顧客編號 char(10),
顧客姓名 varchar(12),
顧客性別 char(2),--bit
顧客卡號 char(10),
顧客地址 varchar(20),
顧客聯繫方式 varchar(20)
)
sp_help Customer--查詢表的信息
sp_rename 顧客表,Customer
use myDB
go
--將顧客性別修改爲bit類型,修改列命令:alter table 表名 alter Column 列名[類型]
alter table Customer
alter Column 顧客性別 char(2)
--修改表,向表中增加一列,比如說增加備註列
alter table Customer
add 備註 varchar(200)
alter table Customer
add 身高 decimal(3,2),
體重 tinyint
--刪除列,:drop Column 列名
alter table Customer
drop column remark
--做作業4.40第一題.
--修改City列,將city列改爲varchar(12)
--增加MobilePhone列爲char(11)
--刪除FirstName,LastName列,增加一個姓名列.
--刪除表drop table 表名
drop table 轉換後的表
--數據的完整性:實體完整性約束:主鍵約束、唯一約束、標識列,針對行,來保證每行實體的有意義.
--建立帶主鍵的約束
Create table Customer--數據庫名.架構名.表名;myDB.dbo.Customer
( --字段名 數據類型[長度]
顧客編號 char(10) Constraint PK_Customer_顧客編號 Primary Key,--建立主鍵約束
顧客姓名 varchar(12)not null,--非空約束
顧客身份證 char(18)Constraint UQ_Customer_顧客身份證 unique,--唯一約束
顧客性別 char(2),--bit
顧客卡號 char(10),
顧客地址 varchar(20),
顧客聯繫方式 varchar(20)
)
--主鍵約束,唯一且不爲空;唯一約束,可以有一個爲空(null)
select * from Customer
Create table WangBaPc
(
Id int identity(1,1),--標識列.適用於整型。
--identity(標識種子,增長量n),從標識種子,每次增加n
Pc varchar(8),
class varchar(8)
)
--域完整性約束:針對表中的列來進行約束。有如下幾種:
--Not null、默認值、檢查約束、外鍵約束、數據類型.
--建立顧客銀行卡表.
Create table CustBank
(
顧客卡號 char(10)Constraint PK_CustBank_顧客卡號 Primary Key,
金額 money,
消費次數 int,
積分 int
)
select * from CustBank
--建立圖書信息表
Create table BookInfo
(
BId char(20) Constraint PK_BookInfo_BkId Primary key,
BName varchar(30)not null,--非空約束
BPulisher varchar(20) not null,
BPrice money,
BType char(4),
BBuyPerson varchar(12)Constraint DF_BookInfo_BBuyPerson default '張三丰'--默認值約束
)
--專門來看檢查約束
--建立銷售人員表
Create table SalesPerson
(
SID int identity(1,1)Constraint PK_SalesPerson_SID Primary key,
SName varchar(12)not null,--非空約束
SGender char(2)Constraint CK_SalesPerson_SGender Check(SGender='男' or SGender='女')
)
--作業:
--建立一個遊戲人員表
/*Create table Player
(
--id 爲標識列的主鍵,
--姓名 非空
--身份證 唯一約束
--性別 只能爲男、女
--身高 在0.30米與3.00米之間
--體重 在30KG到250KG之間
--屬相 中國十二生肖
--城市 默認來自鄭州
)
*/
Create Database HomeWork
go
if exists(select * from Sys.Objects)
drop table Player
Create table Player
(
id int identity(1,1)Constraint PK_Player_Id primary key,
姓名 varchar(8)not null,
身份證 char(18) Constraint UQ_Player_身份證 Unique,
性別 char(2) Constraint CK_Player_性別 Check(性別='男' or 性別='女'),
身高 decimal(3,2)Constraint CK_Player_身高 Check(身高>=0.3 and 身高<=3.0),
體重 tinyint Constraint CK_Player_體重 Check(體重>30 and 體重<250),
屬相 char(2) Constraint CK_Player_屬相 Check(屬相 in ('鼠','牛','虎','兔','龍','蛇','馬','羊','猴','雞','狗','豬')),
城市 varchar(12)Constraint DF_Player_城市 Default '鄭州'
)
sp_help Player
--建立超市物品表
--建立一個訂購表
use myDB
go
Create table Goods--物品表
(
Id int Identity(1,1)Constraint PK_Goods_Id Primary key,
TiaoXingMa char(13)Constraint UQ_Goods_TXM Unique,--條形碼
GName varchar(20)not null,--物品名稱
GPrice Money,
GWeight decimal(5,2)
)
Create table OrderGoods--訂購表
(
訂購編號 char(10)Constraint PK_OrderGoods_訂購編號 primary key,
GId int,--訂購物品的編號
訂購時間 smalldatetime Constraint DF_OrderGoods_訂購時間 Default getdate(),
訂購人 varchar(8)not null
)
select * from Goods
select * from OrderGoods
--在訂購表的GID列上建立外鍵約束,和主表Goods的ID列建立關係(即指向ID列)
alter table OrderGoods
Add Constraint FK_Goods_OrderGoods_Id Foreign Key(GID)
References Goods(ID)
--格式:修改表添加外鍵;外鍵表:子表;主表:父表
alter table 子表
Add Constraint FK_主表名_子表名 Foreign Key(外鍵列)
References 主表名(主表被依賴列,一般爲主表主鍵)
--建立主人表和僕人表
Create table 主人
(--主人:Master
MId char(8)Constraint PK_主人_MId Primary key,
MName varchar(8)not null
)
Create table 僕人
(--僕人:servant
SId char(8) Constraint 僕人_SId Primary Key,--僕人的編號
MId char(8) Constraint FK_主人_僕人_MID Foreign Key
References 主人(MID),--指定僕人的主人的編號
SName varchar(8)not null
)
--創建規則
Create Rule HeNanCity
as @City in('鄭州','洛陽','安陽','南陽','濮陽','信陽','鶴壁','焦作','新鄉','開封','商丘','周口','駐馬店','許昌','漯河','濟源')
--將Player的城市列綁定到規則HeNanCity
sp_bindrule 'HeNanCity','Player.城市'
Create Type 身高
from Decimal(3,2)
Create Table Person
(
id int identity(1,1),
Name varchar(10)not null,
P身高 身高
)
sp_help Person
insert into Person values('無用',2.2)
select * from Person
--use myDB
go
drop table go
drop table test
--建立一個表,字段ID,Name,Sex
Create table Test
(
Id int identity(1,1),--自動增長,不用插入數據
Name varchar(8) not null,
Sex char(2)
)
sp_help Test
--插入數據的格式:
insert into 表名(字段1,字段2,...) values(值1,值2,...)
insert into Test(Name,Sex) values ('張名','女')
insert into Test(Name,Sex) values('小鵬','女')
insert into Test(Name,Sex) values('濤妹','go')-- 不正確的數據
--查詢
select * from Test
--向表中添加約束,檢查約束,針對性別(男,女)
alter table Test
with noCheck--對錶中老的數據,不檢查
Add Constraint CK_Test_Sex Check(Sex in ('男','女'))
--自定義完整性:規則和自定義類型
--規則的格式:Create Rule 規則名 as @變量 表達式
Create Rule CityRule
As @HeNanCity in('鄭州','洛陽','安陽','開封','商丘','南陽','周口','信陽','駐馬店','焦作','新鄉','許昌')
--建立規則後的使用,必須將規則綁定到表中的列上
Create table Sut
(
XueHao char(8)Constraint PK_Stu_XH Primary key,
XM varchar(12)not null,
City char(16)
)
--修改表名
sp_rename 'Sut','STU'
select * from Stu
--向表中插入數據
insert into Stu(XueHao,XM,City) values('0401','漁利爲','鄭州')
insert into Stu(XueHao,XM,City) values('0402','張陽','南陽')
insert into Stu(XueHao,XM,City) values('0403','蕭成龍','信陽')
--將規則綁定到Stu的City列
sp_bindrule 'CityRule','Stu.City'--成功後會顯示:已將規則綁定到表的列。
--再測試輸入,不爲河南的城市的學生
insert into Stu(XueHao,XM,City) values('0406','康非龍','信陽')
insert into Stu(XueHao,XM,City) values('0404','鄧小萍','南京')
-----------------------------------------------------------------------
--自定義類型
--格式:Create Type 自定義類型名 from 數據類型[(長度)]
--創建自定義類型:相撲體重
Create type 相撲體重
from tinyint
--創建一個表,相撲運動員
Create table 相撲運動員
(
Id int identity(1,1)Constraint PK_Id Primary key,
Name varchar(20)not null,
Weight 相撲體重--相撲體重:自定義類型,範圍爲0-255
)
insert into 相撲運動員(Name,Weight) values('山本五十8',250)
insert into 相撲運動員(Name,Weight) values('純口火鳥',220)
insert into 相撲運動員(Name,Weight) values('井大門',300)
--作業:將前面我們建立的屬相設定爲規則,綁定到屬相列
--自定義類型身高,建立一個表的列類型爲身高
--*******************************************************************
--第一創建分區函數,跟着建立分區的文件組和文件,並建立對應關係.
--第二創建分區方案(架構)
--第三對錶實施分區
--
create partition function Fun_RateChngDate(datetime) --創建分區函數 RateChngDate
as range right for values('1996-01-01','2000-01-01','2004-01-01','2008-01-01')
------------------------------------------------------------------------------------
create partition scheme Sch_RateChangDate --創建創建分區方案 RateChangDate
as partition RateChngDate--指明分區方案基於的分區函數
to(Old,First,Second,Third,Fourth)--將分區方案建立在對應的文件組上
------------------------------------------------------------------------------------
create table EmpPayHistPart--僱員付薪記錄表
(
EmployeeId int,
RateChangeDate datetime,--分區列
Rate money,
RayFreQuency tinyint,
ModifileDate datetime
)on RateChngDate(RateChangeDate)--on 分區方案(分區列)