SQL Server Management Studio 是用于管理SQL Server基础架构的集成环境。
•Data: 数据 用文字、符号描述现实生活中的物体(对现实生活的描述)
•DB: DataBase 数据库 存储数据的仓库, 由表和关系组成
•DBMS: DataBase Management System 数据库管理系统
•对数据库进行建立,维护,使用的软件
•DBA: DataBase Administrator 操作数据库的人
系统数据库
master:保存系统主要的数据
model:保存系统模块
msdb:保存警报和作业数据
tempdb:保存临时数据表与存储过程
Resource:资源文件,存储所有系统对象
数据库文件
mdf:主数据文件 只能1个
ldf:日志文件 至少1个
ndf:次数据文件 可有可无
数据库的操作
复制:通过分离,脱机
移动:通过分离
删除:通过分离
打开数据库服务
打开服务:
net start mssqlserver
关闭服务:
net stop mssqlserver
常见错误
- 拒绝访问
命令提示符—>右键—>管理员运行
- 服务名无效
打开服务(win+r services.msc) 找到SQL Server
右键属性
建库建表建约束
1、创建数据库
右键数据库—>新建数据库
数据库初始大小是指新建数据库时初始文件的大小,自动增长是指数据文件快到设置的容量时自动增大。
2、创建表
双击打开创建的数据库,右键表—>新建
3、创建约束
3.1. not null非空
在字段中选择是否允许null值
没有 √ 代表不允许为空
3.2. identity标识列
选择要设置的字段—>打开标识规范—>选择种子与增量
标识列不允许录入值,值自动生成,只能是整数(int)类型,种子:起始数据,增量:每次增加的值
3.3. primary key 主键约束
选择要设置的字段—>右键—>设置主键
主键的作用是可以唯一标识每行数据,主键列不能为空,主键列的值是唯一存在的
主键的设置是有原则的:
1.作为主键的列必须逻辑上不能重复(如姓名就不适用因为有重复的情况)
2.作为主键的列必须有很高的稳定性(年龄不适合,每年的都会增加1,手机号码也可以换)
3.作为主键的列必须有 (原子性)(爱好不适合,可以拆分成多个)
一个表可以没有主键或者只有1个主键,不可能出现多个。
3.4. foreign key 外键约束
打开要建外键的表设计器(从表)—>右键—>关系
连接主外键关系时,数据类型必须一致,主表字段必须为主键
点击添加—>可修改名称(FK_表名_字段)—>点击表和列规范
设置外键字段(从表字段)—>设置主表—>设置主表字段
3.5. unique唯一约束
选择需要设置的字段—>右击—>索引/键
保证实体唯一性,要求该列必须是唯一的,允许为空,但是只能出现一个空值
添加—>可修改名称(IX_表名 _字段)—>类型选择—>唯一键
3.6. default默认约束
点击需要设置默认的字段—>列属性中设置默认值
设置该列的默认值
3.7. check检查约束
右击选择check
约束
限制某列的取值范围,录入时检查是否合适
增删改操作
1、新增数据
insert into 表名(字段) values(值)
insert into --新增到
Student --表
(LoginId,LoginPwd,StudentName,Sex,ClassId,Phone,Address,Comment,UserStateId) --字段
Values --默认值
('5012','qwe123','何涛','男',1,'13215177344','湖南长沙','学生',1) --值
2、删除数据
delete 删除行数据
delete from 表名 where 条件表达式
--不跟条件,删除所有数据
delete from Class
--删除班级Id为31的记录
delete from Class where ClassId=31
--删除班级名为Y2109的记录
delete from Class where ClassName='Y2109'
--删除年级Id大于3的记录
delete from Class where GradeID>=3
补充:
drop:
删除表,包括内容和定义,释放空间
drop table 表名
truncate:
删除内容,释放空间,保留表结构
truncate table 表名
注意:truncate不能删除行数据,用于清空表数据
delete:
删除表中行数据
delete from 表名
执行速度:drop>truncate>delete
3、修改数据
update 表名 set 字段=值 where 条件
--不加条件则修改所有
update Class set ClassName='YY'
--根据班级Id修改
update Class set ClassName='YY' where ClassId=30
--根据年级Id修改
update Class set ClassName='YY' where GradeID=2