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

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


目录
相关文章
|
6月前
|
安全 JavaScript Java
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
62 0
|
3月前
|
Linux 数据库 数据安全/隐私保护
|
2月前
|
SQL 存储 数据库
MSSQL遍历数据库根据列值查询数据
【9月更文挑战第12天】在 SQL Server 中,可以通过游标或临时表遍历数据库并根据列值查询数据。示例展示了如何创建临时表存储数据库名,并通过循环遍历这些名称来执行特定查询。需替换 `YourTableName`、`YourColumnName` 和 `YourValue` 为实际值。此方法要求有足够权限访问各数据库。若无跨库权限,需分别执行查询。
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
190 1
|
5月前
|
NoSQL Redis 数据库
docker-compose 自动管理 数据库
docker-compose 自动管理 数据库
140 3
|
4月前
|
SQL 存储 数据库
MSSQL数据库性能调优实战:索引、查询与并发控制的深度剖析
在数据库管理领域,Microsoft SQL Server(MSSQL)的性能调优是保障业务高效运行的核心任务
|
6月前
|
存储 数据可视化 关系型数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库
|
6月前
|
JavaScript 小程序 Java
土家风景文化|基于SSM+vue的土家风景文化管理平台的设计与实现(源码+数据库+文档)
土家风景文化|基于SSM+vue的土家风景文化管理平台的设计与实现(源码+数据库+文档)
47 0
|
6月前
|
JavaScript Java 关系型数据库
木里风景文化|基于SSM+vue的木里风景文化管理平台的设计与实现(源码+数据库+文档)
木里风景文化|基于SSM+vue的木里风景文化管理平台的设计与实现(源码+数据库+文档)
38 0
|
6月前
|
小程序 JavaScript 关系型数据库
实习生管理|基于SprinBoot+vue的微信小程序的实习生管理系统(源码+数据库+文档)
实习生管理|基于SprinBoot+vue的微信小程序的实习生管理系统(源码+数据库+文档)
57 0