sql server(一)

一.数据库安装

安装SQL Server2019
卸载SQL Server2019

二.数据库的创建

2.1 工具创建

在这里插入图片描述

2.2 T-SQL创建

master:系统数据库,它记录了SQL Server系统的所有系统级信息,还记录了所有其他数据库的存在,数据库文件的位置,SQL Server的初始化信息。

use master --选择要操作的数据库
go--批处理命令

--创建数据库
create database TestNewBase --数据库名称
on primary --主文件组
(
   name='TestNewBase',--数据库主要数据文件的逻辑名
   filename='J:\workspaces\01.SQL-study\TestNewBase.mdf',--主要数据文件的路径(绝对路径)
   size=5MB,--数据库主要文件的初始大小
   filegrowth=1MB--文件的增量
)
log on --创建日志文件
(
   name='TestNewBase_log',--数据库日志文件的逻辑名
   filename='J:\workspaces\01.SQL-study\TestNewBase_log.ldf',--日志文件的路径(绝对路径)
   size=1MB,--数据库日志文件的初始大小
   filegrowth=10%--日志文件的增量
)
go

删除数据库

--删除数据库
drop database TestNewBase
go

三.数据库基础知识

3.1 数据库组成

  1. 数据库文件
1)主要数据文件  
存放数据和数据库的初始化信息。每个数据库有且只能一个主要数据文件。.mdf  扩展名。
2)次要数据文件   
存放除了主要数据文件以外的所有数据的文件。次要数据文件并不是必须的,可以没有。
如果有的话,可以是一个,也可以有多个。.ndf 扩展名
3)事务日志文件  
存放用于恢复数据库的所有日志信息。每个数据库至少要有一个日志文件,也可以有多个。默认.ldf 扩展名。
  1. 数据库对象
1.表  
包含数据库中所有数据的对象,行和列组成 ,用于组织和存储数据。
2.字段 
表中的列  一个表可以有多个列,自己的属性:数据类型(决定了该字段存储哪种类型的数据),大小(长度)
3.视图  
表(虚拟表)一张或多张表中导出的表   用户查看数据的一种方式,结构和数据是建立在对表的查询基础之上的。
4.索引 
为了给用户提供一种快速访问数据的途径,索引是依赖于表而建立,检索数据时,不用对整个表进行扫描,可以快速找到所需的数据。
5.存储过程 
是一组为了完成特定功能的SQL语句的集合(可以有查询、插入、修改、删除),编译后, 存储在数据库中,以名称进行调用, 当调用执行时,这些操作就会被执行。
6.触发器 
在数据库中,属于用户定义的SQL事务命令集合,针对于表来说,当对表执行增删改操作时,命令就会自动触发而去执行。
7.约束 
对数据表的列,进行的一种限制。可以更好的规范表中的列。
8.缺省值 
对表中的列可以指定一个默认值,当进行插入时,如果没有为 这个列插入值,那么就会自动以预先设置默认值进行自动补充。

3.2 数据类型分类

① 数值型
1)整型数据类型:bigint int smallint tinyint
在这里插入图片描述
2)浮点型:

float 近似数值  存在精度损失  
real 近似数值 = float(24)
decimal 精确数值  不存在精度损失       
decimal(18,2)

在这里插入图片描述

3)货币类型:money smallmoney  

在这里插入图片描述
4)二进制数据类型 : bit binary varbinary(n) varbinary(max) image
在这里插入图片描述

② 字符型

前面带n,存储中文汉字还是英文或数字,长度都是1,存储大小2个字节,
不带n,英文或数字,就是1个长度,中文就是两个长度

char 				固定长度 		8000
varchar(n) 			可变长度字符串  	8000
nvarchar(n) 			可变长度字符串  	8000
varchar(max) 		可变长度字符串  
text        		可变长度字符串  	2GB

在这里插入图片描述

③ 日期型

datetime  		精确度高,
datetime2  		精度更高,100纳秒
smalldatetime  	精度1分钟  时间范围小
date  			存储日期  
time 			存储时间

在这里插入图片描述

④ 其他类型

uniqueidentifier  guid 全球唯一标识符

四. 数据表创建

4.1 工具创建表

一个表中,需要一个列来唯一标识一条数据。
① 主键:唯一标识一条数据。
值 不能重复 不能为空
在这里插入图片描述
② 标识列
一个列设置成标识列,它就不能再手动插入,插入时,自动生成的。类型必须是不带小数的数值型 整型
标识列:标识种子 第一条记录标识列的值 100 增量 3
删除了数据,再插入,就会出现不连续 缺点

③ 创建外键
一般在两个表之间要建立关联时候,创建
一个列创建为外键,它在另一个表必须是主键
一个表里可以有多个外键,也可以没有,一个表只能有一个主键,也可以没主键,但一般都会设置一个主键。
UserInfos 外键表
DeptInfos 主键表
两个表一旦建立外键关系,外键表里的对应的外键列,它的值必须是它对应的主键表里的主键值,如果插入一个不存在 的值,是插入不进去的。
在这里插入图片描述

4.2 T-SQL创建表

use testDB
go
--创建表
create table ProductInfos
(
   Id int identity(1001,1) primary key  not null,  --标识种子,增量
   ProNo varchar(50) not null,--产品号 非空
   ProName nvarchar(50) not null,--产品名 非空
   TypeId int not null,--产品类别 非空
   Price decimal(18,2) default (0.00) not null,--价格 默认值 非空
   ProCount int default (0) null--数量 默认值
)
go

create table ProductType
(
  TypeId int identity(1,1) primary key not null,--产品类别号 主键
  TypeName nvarchar(20) not null--产品类别名
)
go

删除表

--删除表
drop table ProductInfos
go

4.3 T-SQL修改表

use testDB
go

--创建表之后,进行修改
--不删除原来的表,进行修改

--添加一列 ProRemark   
alter table ProductInfos add ProRemark nvarchar(max) null

--删除一列 ProRemark
alter table ProductInfos drop column ProRemark

--修改一列
alter table ProductInfos alter column ProNo nvarchar(50) null

--修改列名  一般慎用
--exec sp_rename '表名.旧列名','新列名','column'
--exec sp_rename 'ProductInfos.ProCount','Count','column'
注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。

4.4 表创建约束

① 主键 Primary Key约束
唯一性、非空,不能修改

② 外键 Foreign Key约束
加强两个表的一列或多列数据之间的连接的。 先建立主表的主键,然后再定义从表中的外键。只有主表中的主键才能被从表用来作为外键使用。主表限制了从表更新和插入的操作。当删除主表中的某条数据,应该是先删除从表中相关的数据,再删除主表。

③ Unique约束
唯一性约束 确保表中的一列数据没有相同的值。与主键约束相似。主键只能有一个,但一个表中可以定义多个唯一约束。唯一键可以为NULL,但主键不可以
在这里插入图片描述

④ Check约束
通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。
在这里插入图片描述

⑤ Default约束
默认值约束。用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果没有设置默认值,系统就会默认为NULL。

4.5 T-SQL创建约束

创建表时添加约束

use testDB
go
--创建表
create table ProductInfos
(
   Id int identity(1001,1) primary key  not null,  --标识种子,增量
   --唯一性 约束
   ProNo varchar(50) unique not null,
   ProName nvarchar(20) not null,
   --外键  foreign key references 主表(列名)
   TypeId int not null foreign key references ProductType(TypeId) ,
   --检查  check(Price<10000)
   Price decimal(18,2) check(Price<10000) default (0.00) not null,
   -- 默认 default (0)
   ProCount int default (0) null,
)
go

创建表完成后再创建约束

--在建表完成后,创建约束 
create table ProductInfos
(
   Id int identity(1001,1)  not null,  --标识种子,增量
   ProNo varchar(50)  not null,
   ProName nvarchar(20) not null,
   TypeId int not null ,
   Price decimal(18,2)  not null,
   ProCount int  null
)
go

--主键  Id
alter table ProductInfos add constraint PK_ProductInfos primary key(Id)

--外键  TypeId
alter table ProductInfos add constraint FK_ProductInfos foreign key (TypeId) references ProductType(TypeId)

--unique约束  ProNo
alter table ProductInfos add constraint IX_ProductInfos_ProNo unique(ProNo)

--unique ProNo+ProName
alter table ProductInfos add constraint IX_ProductInfos_ProNo unique(ProNo,ProName)

--check约束
alter table ProductInfos add constraint CK_ProductInfos_Price check(Price<10000)

--default约束
alter table ProductInfos add constraint DF_ProCount default (0) for ProCount
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值