- SQL语句执行顺序
1 from子句 组装来自不同数据源的数据
2 where子句 基于指定的条件对记录进行筛选
3 group by子句 将数据划分为多个分组
4 使用聚集函数进行计算
5 having子句筛选分组
6 计算所有表达式
7 select选出符合要求的数据
8 对结果进行排序并输出
- having和where的区别
都用于筛选。
having短语作用于组,从中选择满足条件的组;where子句作用于基本表或视图,从中选择满足条件的元组。
- 数据库规范
第一范式:数据库表的每一列都是不可分割的数据项,同一列不能有多个值
第二范式:每个非主属性完全函数依赖某个候选键。在第一范式的基础上,消除非主属性对码的部分函数依赖
第三范式:每个非主属性都不传递依赖于每个候选键。在第二范式的基础上,消除非主属性对码的传递函数依赖
BC范式:每个属性都不传递依赖于某个候选键。在第三范式的基础上,消除了主属性对码的部分和传递函数依赖
第四范式:在BC范式的基础上,消除非平凡且非函数依赖的多值依赖
- 索引和视图的区别
1 索引:
使数据库程序无需对整个表进行扫描,就可找到数据。
当查询数据时,系统先搜索索引,找到数据的指针,再直接通过指针从表中读取数据。
优点:查询快
缺点:占用内存;在表中执行insert、update、delete时,有额外操作维护索引
2 视图:
虚表,数据仍存放在基本表中,只是根据该视图查询数据。
优点:简化查询;安全保护机密数据
缺点:基本表结构变化,致使维护试图
- 常见SQL语言
1 创建数据库
create database <库名>;
2 删除数据库
drop database <库名>;
3 创建表
create table <表名>
(
id char(10) primary key,
name varchar(10),
sex char(1),
score float
);
4 修改基本表
4.1 添加一个字段
alter table <表名>
add dept varchar(20);
4.2 修改一个字段
alter table <表名>
modify score smallint;
4.3 删除一个字段
alter table <表名>
drop dept;
5 删除基本表
drop table <表名>;
6 添加一个元组
insert
into <表名>
values ("1014051334","twc","F",95);
7 删除一个元组
delete
from <表名>
where id="1014051334";
8 修改字段数值
update <表名>
set score=97
where id="1014051334";
9 查询表中数据
select * from student where score=97;