优化MySchool数据库设计
第一章 数据库的设计
1.E-R图中:
矩形:实体
椭圆:属性
菱形:关系
直线:连接实体,属性和关系
2.映射基数
一对多
多对一
多对多
3.范式:
第一范式:确保每列的原子性
第二范式:确保表中的每列都和主键相关
第三范式:确保表中的每列都和主键有直接关系,而不是间接关系
第二章 数据库的实现
1.创建数据库
use master
go
create database 数据库名
on
(
)
log on
(
)
go
2.删除数据库
drop database 数据库名
3.创建表
use 数据库名
go
create table 表名
(
列名 数据类型,
列名 数据类型,
..........
)
go
4.添加约束
alter table 表名
add constraint 约束名 约束类型
约束语句
第三章 SQL编程
1.局部变量
declare 变量名称 变量类型
局部变量以@开头
2.全局变量
@@error 最后一个错误的错误号
全局变量以@@开头
3.print 输出变量或字符串
4.cast和convert的数据类型转换
case( 变量 as 数据类型 )
convert( 数据类型,变量)
cast 和 convert不同:convert可以时间格式时间改变
5.if-else
if(条件) 条件语句
begin
代码块
end
else
begin
代码块
end
6.while循环语句
while(条件)
begin
代码块
end
7.case多分支语句
case
when 条件1 then 代码块
when 条件2 then 代码块
[else其他结果]
end
第四章 高级查询
1.简单子查询和not in 、in之间的区别
in(not in)返回的不止一条数据
简单子查询返回的则必须是一条数据
2.分页查询
select top 2 id from A where not in(select top 4 id from B)
3.相关子查询和非相关子查询的不同:
相关子查询的内部查询不止执行一次,而且执行一次便把结果返回给外部查询
第六章 事务、视图和索引
1.执行事务SQL语句
begin tran
开始事务
rollback tran
回滚事务
commit tran
提交事务
2.事务分类:
a.显式事务
b.隐式事务
c.自动提交事务
3.视图创建
create view 视图名称
as
查询语句
4.索引的分类:
唯一索引、主键索引、聚集索引、非聚集索引、复合索引、全文索引
5.创建索引
create 索引类型 index 索引名 on 表名(列名,[列名])
[with fillfactor=x]
x为0~100
表示为百分之几
第七章 存储过程
1.存储过程的优点
模块化程序设计、执行速度快,效率快、减少网络流量、具有良好的安全性
2.系统存储过程为sp_开头,扩展存储过程为xp_开头,自定义存储过程为usp_开头
3.创建自定义存储过程
create proc usp_
@参数 参数类型,
..........
as
SQL语句
4.想要从存储过程输出得到的值,则在参数类型加个output即可
create proc usp_
@参数 参数类型 output,
..........
as
declare @a 参数类型
exec usp_ @a output
print @a
便可以得到存储过程中的值