MSSQL系列之二.二數據庫與表管理

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 分區方案(分區列)

































































































































































































































































































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章