SQL作用:
独立完成数据库生命周期的全部活动,包括:
1.定义和修改、删除关系模式,定义和删除视图,插入数据,简历数据库;
2.对数据库中的数据进行查询和更新;
3.数据库重构和维护;
4.数据库安全性、完整性控制,以及事务的控制;
5.嵌入式SQL和动态SQL定义;
shema
模式:schema就是数据库对象的集合,这个集合包含了各种对象如:表、视图、存储过程、索引等。为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema。所以schema集合看上去像用户名。
如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是说每个数据库映射的user有每个schema(房间)的钥匙。
在MySQL中创建一个Schema和创建一个Database的效果好像是一样的,但是在sqlserver和orcal数据库中效果又是不同的。
在Oracle数据库中不能新建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决,在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。
定义模式:create schema <模式名(没有指定默认问用户名)> authorization<用户名>
删除模式:drop schema <模式名> <cascade | restrict>
cascade与restrict区别:选择cascade,表示在删除schema时吧该schema中所有的数据库对象全部删除;
选择restrict,表示如果该schema若已经定义了下属的数据库对象,则拒绝该删除语句执行;
Table
定义table:create table <表名>(<列名> <数据类型> [列级完整约束条件],
<列名> <数据类型> [列级完整约束条件],
......., [表级完整约束条件] );
修改表:alter table <表名>
add
drop
altert
删除:drop table <表名> [restrict | cascade]
索引
索引:使用索引的全部意义就是通过缩小一张表中需要查询的记录/行的数目来加快搜索的速度,即避免全表扫描;
记住:索引是一个数据结构;
索引是怎么提升性能的?
因为索引基本上是用来存储列值的数据结构,这使查找这些列值更加快速。如果索引使用最常用的数据结构-B-Tree-那么其中的数据是有序的。有序的列值可以极大的提升性能。下面解释原因。
假设我们在 Employee_Name这一列上创建一个B-Tree索引。这意味着当我们用之前的SQL查找姓名是‘Jesus’的雇员时,不需要再扫描全表。而是用索引查找去查找名字为‘Jesus’的雇员,因为索引已经按照按字母顺序排序。索引已经排序意味着查询一个名字会快很多,因为名字少字母为‘J’的员工都是排列在一起的。另外重要的一点是,索引同时存储了表中相应行的指针以获取其他列的数据。
基本原则是只如果表中某列在查询过程中使用的非常频繁,那就在该列上创建索引。
建立索引:create unique index <索引名> on <表名>( <列名> <次序> , <列名> <次序> , .....);
alter index <旧名> rename to<新名>;
drop index <索引名>;
查询分组group by
group by <列名1> having <条件表达式>
将查询结果按<列名1>的值进行分组,该属性值相等的元组为一组;若带having,则只有满足条件的才可输出;
视图:视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义;
单表查、模糊查、Oder by:自己看吧!
聚集函数:count统计
sum求和
avg就均值
max,min
记:where字句不能用聚集函数作为表达式;
集合查询:
union:并集去重
intersect:交集
except:差集