优化MySchool数据库设计

时间:2024-06-15 11:33:56

第一章 数据库的设计

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

便可以得到存储过程中的值