2020-07-15 SQL刷题笔记一
2020-07-15 本文已影响0人
_笑口常开
having 子句
- having子句既可包含聚合函数作用的字段也可包括普通的标量字段
- having子句必须于group by 子句同时使用,不能单独使用
- where在分组前过滤,having在分组后过滤,两者之间不冲突。
- group by 限定分组条件,即用按照那一列进行分组,相同列值被分为一组。
INSERT INTO 语句用于向表格中插入新的行。
INSERT INTO table_name VALUES (值1, 值2,....)
指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。
把所有的列插入新表
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
只把希望的列插入新表
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
select * into seniordrivers from drivers where drivedistanced >=5000
All Any Some 的区别
- All:对所有数据都满足条件,整个条件才成立;
- Any:只要有一条数据满足条件,整个条件成立;
- Some的作用和Any一样 .
SELECT Adep,SUM(Score)
FROM ATHLETE,SCORE
WHERE ATHLETE.Ano=SCORE.Ano
GROUP BY Adep
HAVING SUM(Score)>=ALL
(SELECT SUM(Score)
FROM ATHLETE,SCORE
WHERE ATHLETE.Ano=SCORE.Ano
GROUP BY Adep)
SQL 注入
- SQL注入的关键是单引号的闭合
- Sql注入是一种注入攻击,可以执行恶意sql语句
SQL 内容,主要分成四部分:
- 数据定义。
- DDL(Data Definition Language)数据库定义语言
- (SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
- DDL不需要commit.
- eg. CREATE ALTER DROP TRUNCATE COMMENT RENAME
- 数据操纵。
- DML(Data Manipulation Language)数据操纵语言
- (SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。
- DML需要commit.
- eg. SELECT INSERT UPDATE DELETE MERGE CALL EXPLAIN PLAN LOCK TABLE
- 数据控制。
- DCL(Data Control Language)数据库控制语言 授权,角色控制等
- (DCL)包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
- GRANT 授权, REVOKE 取消授权
- 嵌入式SQL的使用规定。
- TCL(Transaction Control Language)事务控制语言
- (TCL)涉及到SQL语句嵌入在宿主语言程序中使用的规则。
- SAVEPOINT 设置保存点, ROLLBACK 回滚, SET TRANSACTION
SQL 分类
- 数据查询语言(DQL):是由SELECT子句,FROM子句,WHERE子句组成的查询块
- 数据操纵语言(DML): SELECT(查询) INSERT(插入) UPDATE(更新) DELETE(删除)
- 数据定义语言(DDL):CREATE(创建数据库或表或索引)ALTER(修改表或者数据库)DROP(删除表或索引)
- 数据控制语言(DCL):GRANT(赋予用户权限) REVOKE(收回权限) DENY(禁止权限)
- 事务控制语言(TCL):SAVEPOINT (设置保存点)ROLLBACK (回滚) COMMIT(提交)