当前位置:网站首页>数据库的复习--3.SQL语言
数据库的复习--3.SQL语言
2022-07-26 10:13:00 【Vegebun】
一.SQL
1.sql语言的分类:
(1)DDL(数据定义语言)eg:CREAT,ALERT,DROP
(2)DML(数据操纵语言)eg:INSERT,DELETE,UPDATE
(3)DQL(数据查询语言)eg:SELECT
(4)DCL(数据控制语言)eg:权限管理(GRANT.REVOKE),事务管理
2.基本类型
char(n):固定长度的字符串,用户指定长度
varchar(n):可变长的字符串,用户指定最大长度
int:整数类型,等价于Integer
smallint:小整数类型
numeric(p,d):定点数,精度由用户指定,表示有p位数字,其中d位在小数点右边
real,double precision:浮点数与双精度浮点数,精度与机器有关
float(n):精度至少n位浮点数
null: 每种类型都可以包含一个特殊值,即空值,可以申明属性值不为空,禁止加入空值
date:日期类型(关于时间的类型在不同的sql中可能不同)
3.修改基本表
用ALERT TABLE 其中具体的操作用MODIFY(修改属性),ADD(增加属性),DROP(删除属性)
4.删除基本表:用DROP
5.SQL定义语句:
(1)建立数据库:CREATE DATABASE 数据库名
(2)建立基本表:CREATE TABLE 表名 {列名,数据类型,完整性约束}
完整性约束包括:主键子句,检查子句,外键子句,not null
6.DELETE删除语句:DELETE FROM 表名[WHERE 表达式]
7.UPDATE修改语句 UPDATE 表名 SET 列名=表达式[WHERE 条件表达式]
二. 表的操作的基本知识
1.
SELECT 列名1,列名2,...
FROM 表1,表2...
WHERE 连接条件
(上述查询语句等价的关系代数是:先对FROM后面的关系进行笛卡尔积,然后根据WHERE进行选择,最后根据SELECT进行投影)
注意:
1.SQL不允许在属性中使用 "-",而应该使用"_",并且不区分字母的大小写,可以使用大写或者小写命名表,属性
2.SQL允许在关系以及SQL表达式中出现重复的元组,如果要强行去除,可以加上distinct关键字
3.select子句中还可以使用带有运算符的算术表达式,运算对象可以是常数或者元组的属性
4.SQL可使用as子句,为关系和属性进行重命名的机制,as既可以出现在select子句中,也可以出现在from子句中
eg:select name as instructor_name,course_id from instructor,teachers where....(重命名属性)
eg:select T.name,S.course_id from instructor as T,teachers as S where ....(重命名两个表,为了简洁)
eg:select distinct T.name from instructor as T , instructor as S where T.salary > S.salary and S.dept_name = 'a' (对一个表进行两次重命名,为了区分)
5.like 模糊查询(%,_)
6.排序 :使用order by 子句 ,升序是asc(默认),降序是desc
eg:select * from instructor order by salart desc,number asc
7.union是要么要么,intersect两者都,except剔除掉
8.聚集函数:avg,min,max,sum,count 其中sum和avg必须是数字集,但是其他运算符还可以作用在非数字数据类型的集合上,如字符串,注意:除了count(*)外的所有聚集函数都会忽略输入集合中的空值,空集的count运算值为0,其他所有的聚集运算在输入为空集的情况下返回一个空值
9.分组聚集 group by :子句中给出一个或者多个属性来构造分组,在group by 子句中的所有属性上取值相同的元组将被分在一组,另外。可以使用having(类似于where,只不过只是针对分组进行操作)对分组来进行选择
2.嵌套子查询
1.exist可以测试一个子查询中是否存在元组,子查询为空时返回true值
2.unique可以测试在一个子查询中是否存在重复的元组,如果没有重复的元组,将返回true
3.数据库的删除操作
delete from instructor where ... ...
4.数据库的插入操作
insert into (...) values (...)
insert into course(course_id,title,credit) values ('cs-232','base-system','5')
总结:SQL查询语句执行顺序:from->where->group->having->select->order by
三.表的连接查询(内连接和外连接)
1.内连接
(1)等值连接:表之间通过一个“等于”关系连接起来,产生一个连接临时表,然后对表进行处理产生最终的结果
(2)非等值连接:表之间的关系不是等值关系而是其他关系,通过指定的非等值关系,将两个表连接起来,产生一个临时表,然后对该临时表进行处理后生成最终的结果
(3)自连接:有时需要将同一个表进行连接,这种连接称为自连接,进行自连接就像两个表分开一样,可以把一个表的某行与同一个表中的另一行连接起来。
2.外连接:会返回FROM子句中提到的至少一个表或者视图的所有行,只要这些行符合任何WHERE或者搜索条件,将索引通过左外连接引用的坐标的所有行,以及通过右外连接引用的右表的所有行(左外连接,右外连接,全外连接)
(1)左外连接
注意:null也会放进去
(2)右外连接
(3)全外连接:保留不匹配信息
三.子查询
1.一般子查询:常用于SELECT语句的WHERE子句中
2.相关子查询
(3)带有EXISTS测试的子查询(exists一般用在WHERE子句中。其后紧跟一个SELECT子查询,从而构成一个条件,带有EXIST的子查询不反悔任何数据,只返回逻辑真和逻辑假)
四.sql控制语句(事务管理和数据保护)
1.授予权限:GRANT
格式:GRANT 权限 ON 对象 TO 用户 (WITH GRANT OPTION)
2.收回权限:REVOKE
五.视图
1.定义:是从一个或者多个基本表中导出的表,与基本表不同,是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据都仍然存放在基本表中,在对视图进行查询时要执行对应的SELECT语句
如果一个视图是从单个基本表中导出来的,并且只是去掉了基本表的某些行和列,但是保留了主码,我们称这类视图为行列子集视图
2.视图的作用:
·简化对用户的操作;
·使用户以多种角度看待同一数据;
·对于数据库的重构提供了一定程度的逻辑独立性;
·能对机密数据提供安全保护;
3.视图更新的限制:一个视图对应一个SELECT语句
SQL中对SELECT语句必须满足以下的规则:
- FROM子句只能包含一个关系R,不能再包含其他关系
- WHERE子句再子查询中不能使用关系R
- SELECT(没有DISTINCT)中的属性列表必须包含足够多的属性,以保证对视图的元组进行插入时,能够用null或者默认值来填充所有其他不属于该视图的属性
- 查询中不包含group by 或者 having子句
4.视图的创建与删除
(1)创建:
CREATE VIEW 视图名(列明序列)AS SELECT 查询语句
(2)删除视图
DROP VIEW 视图名
六.索引(为了加快查询的速度,可以通过sql语句机型创建删除索引,空间换时间)
1.索引的作用
- 提高查询的速度
- 提高连接,ORDER BY 和 GROUP BY执行的速度
- 查询优化过程依赖索引
- 强制实施的唯一性
2.索引类型
- 聚集索引:数据表记录中的物理顺序与索引顺序相同,即缩影顺序决定了表中记录行的存储顺序,记录都是经过排序的,所以每个表只能有一个聚集索引
- 非聚集索引:表中的每一列都可以建立自己的非聚集索引
- 唯一性索引:标识表中任何两个记录的索引值都不相同,与表的主键类似,它可以 确保索引列不包含重复的值
注意:再创建主键和唯一性约束的列上会自动创建一个唯一性索引,如果表中没有创建其他的聚集索引,则会自动创建聚集索引
3.创建索引
create index 索引名 on 表名
4.删除索引
DROP INDEX表名,索引名
边栏推荐
- 苹果独占鳌头,三星大举复兴,国产手机在高端市场颗粒无收
- Encapsulation of tabbarcontroller
- Okaleido ecological core equity Oka, all in fusion mining mode
- [MySQL database] a collection of basic MySQL operations - the basis of seeing (adding, deleting, modifying, and querying)
- Interview shock 68: why does TCP need three handshakes?
- Strange Towers of Hanoi|汉诺塔4柱问题
- Explain automatic packing and unpacking?
- Beginner of flask framework-04-flask blueprint and code separation
- Replay the snake game with C language (II) end
- Data communication foundation TCPIP reference model
猜你喜欢
Beginner of flask framework-04-flask blueprint and code separation
spolicy请求案例
regular expression
服务器内存故障预测居然可以这样做!
数通基础-STP原理
Unstoppable, pure domestic PCs have been in place, and the monopoly of the U.S. software and hardware system has been officially broken
Introduction to latex, EPS picture bounding box
Production of a-modal drag function in antui
Uniapp error 7 < Map >: marker ID should be a number
数通基础-网络基础知识
随机推荐
PMM (percona monitoring and management) installation record
Matlab Simulink realizes fuzzy PID control of time-delay temperature control system of central air conditioning
输入整数后输入整行字符串的解决方法
Data communication foundation STP principle
万字详解“用知识图谱驱动企业业绩增长”
El table implements adding / deleting rows, and a parameter changes accordingly
SQL Server 2008 R2 installation problems
Necessary for beginners: debug breakpoint debugging skills in idea and common breakpoint skills
Principle analysis and source code interpretation of service discovery
30 minutes to thoroughly understand the synchronized lock upgrade process
反射机制的原理是什么?
Installation and use of cocoapods
Leetcode 504. 七进制数
Flask framework beginner-03-template
Jpg to EPS
Set view dynamic picture
Strange Towers of Hanoi|汉诺塔4柱问题
Show default image when wechat applet image cannot be displayed
Vs2019 configuring opencv
Opencv image processing