前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MSSQL系列之二.二数据库与表管理

MSSQL系列之二.二数据库与表管理

作者头像
用户9184480
发布2024-12-13 09:58:08
发布2024-12-13 09:58:08
860
举报
文章被收录于专栏:云计算linux云计算linux

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

------------------------------------------------------------------------------------

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档