|
Entity:实体,用来表示数据库管理的对象,例如用户、发帖、部门、出版社等,我们都称之为实体,其实说白了就是我们一直讲的表; 实体中都包含属性

第一章 数据库设计
1. E-R图,实体关系图
Entity:实体,用来表示数据库管理的对象,例如用户、发帖、部门、出版社等,我们都称之为实体,其实说白了就是我们一直讲的表; 实体中都包含属性,属性是用来描述实体的,比如用户实体的属性可以有姓名、年龄、性别的等,其实属性就是我们平时所说的列
Relationship:标识实体与实体之间的关系
2. E-R图的表示
3. 实体与实体之间的关系可以有:
a) 一对一:比如系和系主任、班长和班级等
b) 一对多:发帖和回帖、发帖和版块等
c) 多对一:它是一对多相反的效果
d) 多对多:电影和影星、学生和课程等
4. 数据库范式
a) 一范式: 必须保证每一个属性(列)不可再分
b) 二范式 在满足一范式的基础上,保证非键属性必须完全依赖于键属性
c) 三范式 在满足二范式的基础上,不可以出现传递依赖,比如订单号决定产品,产品决定价格,那么反过来说就是依赖
第二章 数据库的实现
在SQL Server中创建的数据库,会有三种文件:
1、 .mdf:主数据文件,这是必须有的,而且只能有一个
2、 .ndf:辅助数据文件,这不是必须的,他跟mdf一样用来存放数据的,他可以有多个
3、 .ldf:日志文件,这是必须有的,他可以有多个,用来记录你平时对数据库的操作都记录在日志文件中
1. 创建数据库的方式:
No.1
create database 数据库名称
go
上面是最快创建数据库的方式,系统会自动生成一个mdf和一个ldf
No.2
Create database 数据库名称
on
(
Name =’逻辑文件名’,
FileName = ‘物理路径’,
Size = 文件大小默认为mb,可以是mb/gb/tb,
MaxSize = 文件最大的大小,还可以写unlimited,(无限)
FileGrowth = 文件的增长方式,可以是nMB或n%
),
(
……
)
log on
(
Name = ‘逻辑文件名’,
FileName = ‘物理路径’,
Size = 文件大小默认为mb,可以是mb/gb.tb,
MaxSize = 文件最大的大小,
FileGrowth = 文件的增长方式,可以是nMB或n%
),
(
………
)
go
2. 删除数据库
use Master
go
if exists(
select * from sysdatabases
where name = ‘数据库名称’)
drop database 数据库名称
go
3. 创建表
create table 表名
(
列名1 数据类型 是否为空,
列名2 数据类型 是否为空,
列名3 数据类型 是否为空
…..
)
go
4. 删除表
if exists(
select * from sysobjects
where name = ‘表名称’)
drop table 表名称
go
5. 创建约束
5.1 主键约束
一张表只能有一个,创建好后该列是物理排序的而且不能有重复数据以及不能为null
alter table 表名
add constraint pk_名称 primary key(列名)
5.2 检查约束
对该列的数据可以进行检查
alter table 表名
add constraint ck_名称 check(约束规则)
5.3 默认值约束
对该列的数据可以产生一个默认值
alter table 表名
add constraint df_名称 default(值) for 列名
5.4 唯一约束
对该列的数据保证一个值只能出现一次
alter table 表名
add constraint uq_名称 unique(列名)
5.5 外键约束
对该列的数据保证与主键表的主键的值一致
alter table 表名
add constraint fk_名称 foreign key(外键列名) references 主键表名(主键列名)
6 删除约束
alter table 表名
drop constraint 约束名称
7. SQL SERVER的身份验证
验证分为两种:
SQL Server身份验证:比如我们平常使用的sa
Windows身份验证:比如我们平时用的windows验证,只要登录到windows就能进sqlserver
8. SQL Server安全模型
1. 登录,相当于你是否能进入小区大门 exec sp_addlogin ‘账号名称’, ‘密码’
2. 数据库用户,相当于是进入小区后你能否进入一栋楼 exec sp_grantdbaccess ‘账号名称’, ‘数据库用户名’
3. 授权,相当于进入一栋楼后能否进到一个家里 grant select, delete, insert, update on 表名 to 数据库用户名
grant create table to数据库用户名
第三章 T-SQL编程
变量
SQL Server的变量分为两种
1. 全局变量
这是微软已经写好的,我们不能定义,是拿来就用的,以@@开头
2. 局部变量
这是我们程序员可以去定义和使用的,以@开头
局部变量
declare @age int, @name varchar(100)
declare @sex bit
set @age = 20
set @name = ‘张三’
select @sex = Sex
from Students
where Name = @name
全局变量
@@error:返回上面的SQL语句是否执行成功,返回0代表成功,非0就是失败
@@identity:返回插入到表中的标识值
@@RowCount:返回影响的行数
IF语句
if (条件表达式)
begin
//sql代码
end
else
begin
//sql代码
end
WHILE语句
while(条件表达式)
begin
//sql代码
End
CASE语句
case
when 条件1 then 结果
when 条件2 then 结果
else 结果
end
Exp1:
select
姓名 = StuName,
性别 =
case
when Sex = 1 then ‘男’
else ‘女’
end,
学号 = StuId
From Students
Exp2:
select
姓名 = StuName,
成绩 =
case
when LabExam >= 60 then convert(varchar(10), LabExam)
else ‘不及格’
end,
学号 = StuId
From Students
Print语句
print ‘abc哈哈哈’ 正确
print 123 正确
print ‘abc’ + 123 错误:要把123用convert(varchar(10), 123)转换
第四章 T-SQL语句-2
增加数据
insert into 表名(列1, 列2, 列3,……)
values(值1, 值2, 值3,……..)
Exp1:
insert into Students(学号, 姓名, 年龄, 性别)
values(‘001101’, ‘王二’, 20, ‘男’)
修改数据
update表名
set
列1 = 值1,
列2 = 值2,
列3 = 值3,……..
where 条件
Exp1:
update Students
set
学号 = ‘888888’,
姓名 = ‘王五’,
年龄 = 90,
性别 = ‘女’
Exp2:
update Students
set
姓名 = ‘王五’,
年龄 = 90,
性别 = ‘女’
where 学号 = ‘001101’
删除数据
delete from 表名
where 条件
Exp1:
delete from Students
Exp2:
delete from Students
where 学号 = ‘001101’
查询数据
select * from 表名
select * from 表名
where 条件
select * from 表名
order by 列名1 asc|desc, 列名2 asc|desc
select * from 表名
where 条件
order by 列名1 asc|desc, 列名2 asc|desc
select * from 表名1
inner join 表名2 on 表名1.列名 = 表名2.列名
select * from 表名1
left outer join 表名2 on 表名1.列名 = 表名2.列名
select * from 表名1
left outer join 表名2 on 表名1.列名 = 表名2.列名
子查询
select * from 表名
where 列名 in
(
select 列名 from 表名
)
select * from 表名
where 列名 not in
(
select 列名 from 表名
)
|