SQL基本概念:
SQL是Structured Query Language的缩写,是一种在数据库管理系统中查询或对数据库里面的数据进行更改的语言。
关系型的数据库管理系统主要有:
非关系型数据库管理系统主要有:
一、数据定义语言DDL(Data Definaition Language)
SQL数据定义语言主要用来定义逻辑结构,包括定义基表、视图和索引
删除表 定义表 修改表
二、数据查询语句DQL(Data Query Language)
SQL的数据查询语句主要用来对数据库各个数据对象进行查询
三、数据操纵语言DML(Data Manipulation Language)
SQL的数据操纵语言,用于改变数据库中的数据,包括插入、删除、修改
四、数据控制功能DCL(Data Control Language)
SQL的数据控制语言,对表和视图的授权,完整性规则的描述以及事物开始和结束等控制语句
sql语言的功能:数据查询、数据定义、数据操纵、数据控制
SQL语言的特点:
基本概念
基本表:
概念:本身独立存在的表
关系:基本表与关系--一对一
基本表与存储文件--多对一
基本表与索引--一对多
视图:
概念:从一个或多个基本表中导出的表
数据库中只存放视图的定义不存放视图的数据
数据定义:
一个关系数据库管理系统的实例中可以建多个数据库,一个数据库可以建多个模式,一个模式包含多个表 视图 索引
模式定义:
定义:CREATE SCHEMA<模式名>AUTHORIZATION<用户名>
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库 对象,例如基本表、视图、索引
删除:DROP SCHEMA<模式名><CASCADE|RESTRICT>
分类:CASCADE级联:想删除该模式及模式中所有数据库对象
RESTRICT:模式中有数据库对象 拒绝删除
表定义:
定义:约束:列级完整性约束、表级完整性约束
在定义表时,会将表的定义及约束放在数据字典中
create table(<列名><数据类型>[列级完整性约束条件]......,<表级完整性约束条件>)
修改:alter table
ADD DROP ALTER
删除:cascade:删除基本表和相关依赖对象
restrict:当表里有视图 触发器 存储过程 函数时 拒绝删除
索引定义:
引入索引的目的:
优点:加快查询速度,加速定位查询内容
保证行的唯一性
缺点:需要占用一定的存储空间
使用索引可以提高数据查询速度,但会降低数据更新速度
索引的分类:
顺序文件上的索引、B+树索引、散列索引、位图索引
索引的建立:
create unique/cluster index 索引名 on 表名 列名 以及他的次序等等
原则:索引可以建立在该表的一列或多列上
可以指定索引值的排列顺序asc/desc
类型:unique: 每个索引值只对应唯一的数据记录--可以是空值
cluster(聚簇索引): 将索引对象按照索引项上的值是否相同来存储
注意:一个表只能建立一个聚簇索引
建立聚簇索引后,插入新的记录将导致物理顺序发生变化
建立聚簇索引后更新表中的非主属性值不会引起记录的物理顺序发生变化
必须先删除所有聚集表才能删除聚集
索引的修改:
索引的删除:
注意:在where子句中出现频率较高的列应该尽量创建索引
索引属于内模式 视图属于外模式
索引的个数是受限制的
索引可以用来提供多种存取路径
数据字典:
是关系数据库管理系统内部的一组表,记录了数据库中所有的定义信息,用户对数据库的操作权限 统计信息等
注意:模式和视图不存在修改操作,只能删除再重建
数据查询:
语句:select ...(all/distinct) ...from ....where
group by having
order by
查询: 单表查询:选择表中若干列select:查询指定列、查询全部列、查询经计算的值(目标表达 式、可以通过指定列名来改变查询结果的列标题)
选择表中若干组:消除重复行distinct 、
查询满足条件的元组:比较大小
确定范围:between and
not between and
确定集合:in、not in
字符匹配:like
空值查询:is null \is not null
order by
group by:分组的目的是为了细化聚集函数作用的对象
例如:
group by having :
注意:不能用于where只能用于having
where和having的区别:作用对象不同
where子句作用于基本表或视图 选择满足给定条件的元组
having短语作用于组 选择给定条件的组
数据更新:
插入数据:INSERT INTO tablename(字段1、字段2....) VALUES(值1、值2...)
或者默认值的顺序:INSERT INTO tablename VALUES(值1、值2..)
修改数据:UPDATE tablename SET WHERE 条件
删除数据:DELETE FROM 表名 WHERE
视图定义:从基本表导出的表,为了让用户看得简单
分类:
行列子集视图:从单个表导出,并且只是去掉了某些行和某些列但保留了主码。一般可更新
分组视图:带有聚集函数和group by子句的查询来定义视图
建立:
(图中有错,应该是with check option 而不是opinion)
不能在视图上建立基本表
删除视图:
删除基本表,其视图不能用了,但还存放于数据字典中,需要通过drop view才能将视图从数据字典中删除
使用cascade删除视图以及所有由他导出的视图
引用视图的优点:
简化用户的查询操作,又不增加数据的存储空间