前言
本文章是为本作者学习SQL server数据库记录所用,如果你觉得可以,也可以学习。
作者博客:https://chencan.ren/
七大语句
create:创建
alter:修改库 用来修改基本表,对表的结构进行的操作。字段、字段类型
drop:删除库
insert:插入数据
update: 更新表中数据 用来修改表中的数据。
delete:删除语句
select:查询
执行快捷键F5
检查语句快捷方式Ctrl+F5
选中光标所在行的快捷方式:Shift+Home
选中光标所在行上一行的快捷方式:Shift+↑
!!!!注意:!!!!
输入路径时没有写入权限:
1、将user(服务器名称)给全部控制权限;
2、everyone给全部权限
第一步,创建一个数据库
例:创建一个test的库,添加一个主文件和一个日志文件
create database ha //创建数据库,名称不要纯数字
on primary //开启主文件
(name = 'ha', //指定文件别名
filename = 'C:\ha.mdf', //库文件保存路径和物理名称
size=10mb, //文件起始容量
maxsize=50mb, //文件最大容量
filegrowth = 10%) //文件增长率
log on //建立数据库日志文件
(name = 'ha_log', //指定文件别名
filename = 'C:\ha_log.ldf', //库文件保存路径和物理名称
size=10mb, //文件起始容量
maxsize=50mb, //文件最大容量
filegrowth = 1mb //文件增长率
)
exec sp_databases:当前数据库已使用多少空间,单位k
exec sp_helpdb test:查看当前指定数据库用量
扩展数据库
例:将两个数据文件和一个事务日志文件添加到test数据库中
alter database test
add file
增加一个次要文件,若增加日志文件,为add log file
(name = 'test2',
filename = 'e:\test2.ndf',
此处为次要文件扩展名,若为日志文件,则扩展名是.ldf
size=10mb,
maxsize=50mb,
filegrowth = 1mb)
例:扩充数据库出初始容量和最大容量,任何文件都可以扩充
alter database test
modify file
(name='test', 扩充哪个文件就写哪个名字
size=50mb,
maxsize=100mb)
收缩数据库
use [test]
dbcc shrinkdatabase(N'test',80)
收缩数据库文件
use [test]
dbcc shrinkfile (N'test' , 10)
分离和附加
分离:不是删除。作用是数据库管理器不再管理此数据库,用户可以将物理文件进行复制、备份、移动等操作。管理器不会停止后台服务,不会影响其他数据库的使用。
use [master] 切换到其他数据库
exec master.dbo.sp_detach_db @dbname = N'ha'
附加:
use [master]
create database [ha] on
( filename = N'E:\ha.mdf' ),
( filename = N'E:\ha_log.ldf' )
for attach
删除数据库
use master
drop database ha
删除辅助库文件
alter database test
remove file 逻辑文件名
例:
alter database test
remove file test3
创建表
use 库名
create table 表名V
(字段名称1 数据类型1,
字段名称2 数据类型2)
例:(切换到要创建表的数据库)
use test
create table biao
(id int,
name char(10) )
数据类型
精准数字
整数型:数值为正整数或负整数。
int:4字节存储
bigint:8字节
smallint:2字节
tinyint:1字节存储0-255正整数
位数型
bit:0或1
小数型
decimal (8,2) 123456.78
numeric
货币型
money:8字节
smallmoney:4字节
近似数字:浮动数值,一个范围。
float:8字节
real:4字节
日期和时间
date:0000-01-01到9999-12-31,3字节
time:00:00:00--23:59:59,5字节
datetime:2019-09-28 10:00:00,8字节
日期和时间1753.01.01-9999.12.31
smalldatatime:1900.01.01到2079.06.06,4字节
字符串:以字符方式存储
char():存储固定长度的标准字符,最大8000字符。
varchar(): 可变换长度的字符,最大2的31次方个字符
test:大文本存储,可存储20亿个字符,占内存。
unicode字符串:国际通用性字符。混合字符。
nchar():4000字符
nvarchar():4000字符
ntest():10 亿字符
二进制字符:用于存储图片
binary:固定长度的二进制数值,8000字节
varbinary:可变长的二进制数值,8000字节
image:大文件,20亿字节(大图片,慢)
标识符
自增列
类型:数值类型(int,decimal)
标识:true(开启)false(关闭)
种子:第一行的值,默认为1
标识增量:下一个标识的增量,默认为1
主键约束:primary key
在一张表中,能够表示唯一性数据的字段。一张表中只能有一个主键,主键包含了唯一性与非空属性。
例:
create table biao2
(
id int primary key,
name char(10)
)
添加数据:(二次执行会报错)
insert into biao2 values (1,'zhangsan')
insert into biao2 values (1,'zhangsan')→报错,因为主键约束
查询数据:
select * from biao
唯一性约束:unique
指定字段中的数据是唯一的,一张表中可以有多个唯一性字段。
例:
create table biao3
(
id int primary key,
name char(10) unique
)
添加数据
insert into biao3 values (1,'zhangsan')
insert into biao3 values (2,'zhangsan1')
检查约束:check
用户定义输入的数值范围。
例:
create table biao2
(id int primary key,
name char(10) unique,
sex char(2) check(sex='男' or sex='女'),
age int check(age>=18 and age<50)
)
insert into biao2 values
(1,'zhangsan','男',20)
insert into biao2 values
(2,'zhangsan11','男',20)
insert into biao2 values
(3,'liyanghui','女',20)
insert into biao2 values
(4,'zhangsan12','男',55)
默认约束:default
当用户输入数据时,不指定字段,该字段自动填写数据。重复的字段,好用
create table biao3
(id int primary key,
name char(10) unique,
sex char(2) default '男',
age int check(age>=18 and age<50)
)
insert into biao3
(id,name,age)
values(4,'21zhangsan',31)
select * from biao3
外键约束:foreign key
当给第二张表输入数据时,数据内容必须在第一张表中出现。建立外键的字段需要指向另一张表中的主键。外键与被指定的主键数据类型要相同。
create table a
(
id int primary key,
zw char(20)
)
create table b
(
id int,
name char(10),
zwid int,
constraint fk_zw foreign key(zwid) references a(id)
)
添加数据:
insert into b values (1,'z1',1)→因为a中没有数据
所以:
先给表A添加数据
insert into a values (2,'yunwei')
再给表B添加数据
insert into b values (2,'z2',3)→报错,因为,表A没有3
再给表B添加数据
insert into b values (2,'z2',2)
非空约束:not null
指定的字段不能为空
create table biao6
(
id int not null,
name char(10) not null,
sex char(2) not null,
age int
)
添加数据:
insert into biao6 (age) values (20)→只加入了age字段,其他为空,违反非空约束
在原有表中新添加列
alter table 表名
add 新字段名 数据类型 约束
修改原有的字段类型
格式:
alter table 表名
alter column 原有的字段名 数据类型
例:alter table biao1
alter column id tinyint
修改字段数据类型(不建议修改)
1、如果被修改的字段没有任何数据,数据类型可以任意修改
2、如果被修改的字段中有数据,需要按照数据能够支持的类型进行修改
字段改名(不建议修改)
格式:exec sp_rename '表名.旧字段名','新字段名'
例:exec sp_rename 'biao1.id','ids'
删除字段
格式:
alter table 表名
drop column 字段名
例:
alter table biao1
drop column ids
创建表
例如,执行如下T-SQL语句即可创建表employee。
CREATE TABLE employee1
(
编号 int identity(1,1) not null,
姓名 nvarchar(50) not null,
身份证 varchar(18) primary key,
职务 nvarchar(50) not null,
出生日期 datetime not null,
基本工资 money not null check(基本工资>=0 and 基本工资<=100000),
)
其中:
‘identity(1,1)’ 表示该列为标识列,种子和增量都是1。
‘not null’ 表示该列不允许空值。
‘primary key’ 表示该列为主键列。
‘check()’ 表示为该列创建约束,括号内为约束条件。
删除外键、主键、检查、唯一性约束
alter table 表名 drop constraint 约束名
Comments | NOTHING