SQL语句小结

范式:

1.第一范式(1NF):属性都是不可分割的数据项。
2.第二范式(2NF):1NF条件下,不存在部分依赖(都依赖或间接依赖于主键)。
3.第三范式(3NF):2NF条件下,非主键不存在传递依赖(都直接依赖于主键)。
4.巴斯范式(BCNF):3NF条件下,主键不存在传递依赖。
简单查询基本语法格式:

select [ALL|distinct]
[into 新表名]
from 表名/视图名
[where <条件表达式>]
[group by <列名>
having <条件表达式>]
[order by <列名> [ASC|DESC]]

连接查询:

1.内连接

select 列名... from 表 别名,表 别名 [where <条件表达式>] 
select 列名... from 表名1 join 表名2 on 表名1.列名=表名2.列名

2.联合查询

select ......
union [All] //All->包括重复行
select ......

子查询:

1.IN或NOT IN

select sno,sname from t_student where sno in(select sno from t_class)

2.比较运算符子查询

select ... from student where sage>(select AVG(sage) from student)

3.ANY或ALL

//ANY:大于任意一个(大于最小)
//ALL:大于任何一个(大于最大)
select sname,sage from student where sage>ANY(select sage from student where .....)

4.EXISTS/NOT EXISTS查询

//返回真假=>查询course中满足course.sno存在于sc.sno的行
select * from course 
where exists(select * from sc where course.sno=sc.sno)

索引:

create [unique][clustered|nonclustered] index 索引名
on {表|视图} ([ASC|DESC]...)

视图:

create view 视图名[(列名表)]
[with encryption]   //加密
AS
select 语句
[with check option] //设权限
grant [select,insert,update,delete] on <表名> to <用户>  //将<表名>的[select...]赋予<用户>

操作汇总

1.关系表操作(数据操作):insert、delete、update、select。
2.结构操作(数据库、数据表等结构):create、drop、alter。

//创建数据库
create database <数据库名>
//创建表
create table <数据表名> 
//添加列
alter table <表名> add <列名> <数据类型>
//删除列
alter table <表名> drop <列名> 
//修改列
alter table <表名> alter column <列名> <数据类型>
//修改约束
alter table <表名> add/drop constraint 约束名 [约束]
//增加
alter database <数据库名> add log file(...) 
//修改
alter database <数据库名> modify file(...)
//删除
alter database <数据库名> remove file <文件名> 

约束:

1.空值约束:NULL
2.主键约束:primary key
3.外键约束:foreign key
4.唯一值约束:unique
5.检查约束:check
6.默认约束:default

SQL编程

//定义变量。定义可连续,多个逗号隔开。
declare @<变量名> <变量类型>
//变量赋值
set @<变量名> = <>
//使用变量
select @<变量名> as <别名>

//例子:
declare @para char(10)
set @para=(select sname from student where ...)
select @para as 变量名

存储过程

//创建一个存储过程,procedure可简写成proc
create procedure <存储过程名称> [变量]
as
select 语句
GO
exec <存储过程名称>

//例子
if exists(select * from sys.procedures where name='存储过程名称')
drop proc <存储过程名称>
GO
create proc <名称> [变量][output]  //output:作为输出变量
as
set [变量] ......//变量操作
//输出打印变量
print [输出变量] //输出变量:定义时加上output标签的变量


//查看存储过程的文本内容
exec sp_helptext <存储过程名称>
//存储过程改名
sp_rename <原名>,<新名称>

触发器

//创建触发器
create trigger <触发器名称>
on <表名>
after [insert,delete,...] //在......结果之后执行下面语句
as
	print '输出数据'    //代码块,事件执行
	[rollback] //回滚
end

//查看<表>的触发器
exec sp_helptrigger <表名> 
//查看内容
exec sp_helptext <触发器名称> 
//删除触发器
drop trigger <触发器名称>

你可能感兴趣的:(MySQL数据库,数据库查询)