数据库笔记之三 SQL

SQL (Structured Query Language )

sql特点

综合统一 集数据定义语言DDL 数据操纵语言 DML 数据控制语言 DCL 事务控制语言 TCL 和数据查询语言DQL一体,语言风格统一。

高度非过程化  只需提出做些什么 而无需关注数据的物理存储细节 减轻用户负担 提高数据的独立性

面向集合的操作方式 非关系数据模型操作数据面向记录 而sql 关系型数据模型采用集合的操作方式 不仅操作对象 查找结果是元组的集合 而且一次的插入删除 更新也可以是元组的集合

sql分类

sql包括 数据定义 数据操纵 数据查询 数据控制 事务控制

数据定义语言data definition language  DDL用于定义数据库的数据库对象(逻辑结构)表 索引 视图 包括对象的创建 create 对象的结构的更改 alter table 和对象的删除drop

数据操纵语言 data manipulation language DML 主要用于表数据的更新 比如数据的插入 insert 数据的修改update 数据的删除delete

数据的查询语言 data query language 负责数据的获取 可以从单个或多个表中获取信息 select

数据控制语言data control language DQL 主要负责数据的存取权限控制 具体的操作包括 权限授予 grant 权限撤销 revoke 

事务控制语句 Transaction Control Language 用于控制事务 包括事物的提交 commit 事物的撤销 rollback 事务提交相当于更新数据事物的撤销相当于取消更新将数据复原

数据定义语言ddl 数据库对象有视图 表 索引  分别对应三级模式的外模式 模式 和内模式 sql中没有提供对视图和索引的修改操作 也就是说 只能对表进行修改 如对索引和试图进行修改需要先删除后创建

基本的表操作

关系数据库中的关系就是以表的形式出现的 

1 创建表 

create table emp( eno int  ,ename char(20)  , eage int , dept int );//创建一个员工表 

2修改表 修改表包括对表的列的 删除 增加 和列的类型的修改

alter table emp{ add phone char(int)};增加列

alter table emp{alter  column name char(40) };修改列的属性

alter table emp{ drop column phone };删除某列

3 删除表 drop table emp;删除员工表

索引操作 

创建索引是加快表的查询的手段 建立索引后 查询数据可以先根据条件读取索引的数据 进而获取表数据行所在的位置 即先找到数据行地址 然后直接获取数据 这样就无需对数据逐行进行筛选提高数据的查询效率

创建唯一索引 create unique index indexname on emp (eno);在员工表emp的员工编号列上创建一个唯一索引

create unique index indexname on emp(age DESC); 创建一个唯一索引且数据按从大到小排序

删除索引 drop unique  index indexname 

视图操作 

视图是从一个表或者多个表中导出的数据 他与基本表不同 只是一个虚假的表 他并不存储数据 只存定义的内容 只是将基本表的数据经过加工后显示给看 视图像是表的一个窗口 看到你需要的表的信息 而不需要的可以隐而不现。

create view emp as select ename eage from emp where age>30 and gender ='男';

创建一个视图 显示员工表中不同性别员工的平均年龄

create view vemp(gender ,avg)as select gender avg(age) from emp group by gender ;

删除视图 drop view  vemp

数据操纵语句 数据操纵语句dml是指对数据的增加 删除 修改 是对行进行操作 而数据定义语句ddl 是对列进行操作

分别有insert update 和delete 构成

嵌套查询

在查询语句中 有些值无法直接给出 但这些值可以通过另一个查询语句获得

这是可以将这个查询语句嵌套在徐亚这些值的地方 里面的叫子查询 外面的叫父查询

查询管理其他员工的员工的编号和员工姓名

select eno,ename from emp where eno in(select agr from emp)

查询工资大于所有部门平均工资的员工编号 员工姓名 和工资

select eno,ename esal from emp where esal >all(select avg (esal) from emp group by dno);

相关子查询 

select eno,ename,esal from emp outer where esal>(select avg(esal) from emp inner where inner.dno =outer.dno);

集合查询 

集合查询主要包括 union instersect except 参与集合操作的集合要有相同的结构 属性数量 属性类型 

查询选了课程c01但未选c02的学生学号

select sno from emp where cno='co1' except select sno from emp where cno ='c02'

交select sno from emp where cno ='c01' intersect select sno from emp where cno='c02'

并 select sno from emp where cno='c01'union select sno from emp where cno ='c02'

权限控制语句 权限控制语句是保障数据安全的一个重要方面 只有具有相关圈权限的数据库用户才可以在数据库中创建对象 

权限控制相关的语句只有两个 grant 和revoke 数据库中的权限一般分为两种 指在数据库中执行特殊语句的权限 这些语句包括create table create view create prodefure 

对象权限 指某个数据库对象上进行操作的权限 包括选择 select insert delete update 

权限授予 将创建表 创建视图的权限授予用户u1

grant create table ,create  view to u1;

将表emp 上的查询 插入 删除 和修改权限授予 其他用户

grant select update delete on emp to u1

权限回收 

撤销用户u1创建表创建视图的权限

revoke create table ,create view from u1

事物控制语句

事物时数据库中的一个逻辑操作单元 可包含多个操作 该单元作为一个整体运行  事物相关的控制语句有commit和rollback

猜你喜欢

转载自blog.csdn.net/qq_41722524/article/details/85181186