数据库学习笔记

发布于 2020-07-30  109 次阅读


前言

本文章是为本作者学习SQL server数据库记录所用,如果你觉得可以,也可以学习。

作者博客:https://chencan.ren/

作者网盘:https://p.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 约束名


粉色的花瓣,美丽地缠绕在身上。依在风里。