SQL语言(Structured Query Language,结构化查询语言)
是用于管理关系型数据库系统的标准化语言。SQL语言可分为以下几类:
- 数据查询语言(Data Query Language,DQL):DQL用于从数据库中获取所需的数据。它的主要命令是SELECT,用于选择特定列或表中的所有数据。DQL允许用户根据特定条件筛选数据,例如使用WHERE子句来定义过滤条件。
- 数据定义语言(Data Definition Language,DDL):DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、ALTER和DROP等。DDL语句用于定义数据库的结构,例如创建表、定义列和约束等。
- 数据操作语言(Data Manipulation Language,DML):DML用于在数据库中插入、更新和删除数据。主要命令包括INSERT、UPDATE和DELETE。DML允许用户向表中插入新记录、更新现有记录或删除特定记录。
- 数据控制语言(Data Control Language,DCL):DCL用于授予或撤销用户对数据库对象的访问权限,并管理数据库的安全性。主要命令包括GRANT和REVOKE,用于授予和撤销访问权限。DCL还可以用于管理用户账户、角色和权限。
这些分类是为了清晰地区分SQL语言的不同功能和目的。DQL主要用于查询和检索数据,DDL用于定义数据库结构,DML用于操作数据,而DCL用于管理数据库访问权限和安全性。通过这种分类,SQL语言提供了一种简洁、统一的方法来操作和管理关系型数据库系统。
DQL
DQL有哪些,列举所有语法
DQL(数据查询语言)是SQL语言中用于从数据库中检索数据的部分。以下是DQL的一些常见语法:
- SELECT:用于选择要从数据库中检索的列。 SELECT 列名 FROM 表名;
- WHERE:用于在查询中指定条件,筛选满足条件的数据。 SELECT 列名 FROM 表名 WHERE 条件;
- DISTINCT:用于返回唯一的值,消除结果集中的重复行。 SELECT DISTINCT 列名 FROM 表名;
- ORDER BY:用于对结果进行排序,默认升序排列。 SELECT 列名 FROM 表名 ORDER BY 列名 ASC/DESC;
- LIMIT:用于限制结果集的行数。 SELECT 列名 FROM 表名 LIMIT 行数;
- GROUP BY:用于将结果集按照指定列进行分组。 SELECT 列名 FROM 表名 GROUP BY 列名;
- HAVING:用于在GROUP BY后的结果集上进行进一步的筛选。 SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 条件;
- JOIN:用于在多个表之间建立关系,通过指定连接条件来获取相关数据。 SELECT 列名 FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;
- UNION:用于将两个或多个SELECT语句的结果合并成一个结果集。 SELECT 列名 FROM 表名1 UNION SELECT 列名 FROM 表名2;
- COUNT:用于计算满足条件的行数。 SELECT COUNT(*) FROM 表名;
- AVG:用于计算满足条件的列的平均值。 SELECT AVG(列名) FROM 表名;
- SUM:用于计算满足条件的列的总和。 SELECT SUM(列名) FROM 表名;
- MIN:用于计算满足条件的列的最小值。 SELECT MIN(列名) FROM 表名;
- MAX:用于计算满足条件的列的最大值。 SELECT MAX(列名) FROM 表名;
- EXISTS:用于检查子查询是否返回结果。 SELECT * FROM 表名 WHERE EXISTS (子查询);
- IN:用于在查询中设置多个可能的值。 SELECT 列名 FROM 表名 WHERE 列名 IN (值1, 值2, 值3);
- LIKE:用于在查询中模糊匹配数据。 SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';
- BETWEEN:用于指定范围条件。 SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
- AS:用于给查询结果的列或表取别名。 SELECT 列名 AS 别名 FROM 表名;
- NULL:用于检查列中是否包含NULL值。 SELECT 列名 FROM 表名 WHERE 列名 IS NULL;
- AS:用于在查询中创建别名,使结果更易读或在查询中使用别名进行计算。 SELECT 列名 AS 别名 FROM 表名;
- EXISTS:用于检查子查询返回的结果是否存在。 SELECT * FROM 表名 WHERE EXISTS (子查询);
- LIKE:用于在查询中进行模式匹配。 SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';
- NOT:用于否定一个条件。 SELECT 列名 FROM 表名 WHERE NOT 条件;
- ALL:用于比较一个值和子查询返回的所有值。 SELECT 列名 FROM 表名 WHERE 列名 操作符 ALL (子查询);
- ANY/SOME:用于比较一个值和子查询返回的任意一个值。 SELECT 列名 FROM 表名 WHERE 列名 操作符 ANY/SOME (子查询);
- EXISTS和NOT EXISTS:用于检查子查询返回的结果是否存在或不存在。 SELECT * FROM 表名 WHERE EXISTS (子查询); SELECT * FROM 表名 WHERE NOT EXISTS (子查询);
- BETWEEN AND:用于指定一个范围的值。 SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
- CONCAT:用于将两个或多个字符串连接在一起。 SELECT CONCAT(列1, 列2) AS 别名 FROM 表名;
- UPPER/LOWER:用于将字符串转换为大写/小写。 SELECT UPPER(列名) FROM 表名; SELECT LOWER(列名) FROM 表名;
- COUNT DISTINCT:用于计算满足条件的不重复值的数量。 SELECT COUNT(DISTINCT 列名) FROM 表名;
- CASE:用于在查询结果中执行条件逻辑。 SELECT 列名, CASE WHEN 条件 THEN 结果1 ELSE 结果2 END AS 别名 FROM 表名;
- SUBSTRING:用于提取字符串的子串。 SELECT SUBSTRING(列名, 开始位置, 长度) FROM 表名;
- COALESCE:用于返回第一个非NULL值。 SELECT COALESCE(列名1, 列名2, 列名3) FROM 表名;
- LENGTH:用于获取字符串的长度。 SELECT LENGTH(列名) FROM 表名;
- TRIM:用于去除字符串两端的空格。 SELECT TRIM(列名) FROM 表名;
- ROUND:用于对数值进行四舍五入。 SELECT ROUND(列名, 小数位数) FROM 表名;
- DATE:用于获取日期的部分,如年、月、日。 SELECT DATE(日期列) FROM 表名;
- NOW:用于获取当前日期和时间。 SELECT NOW() FROM 表名;
- CASE WHEN ELSE END:用于执行条件逻辑。 SELECT 列名, CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ELSE 结果3 END AS 别名 FROM 表名;
- GROUP BY ROLLUP:用于生成多层次的汇总行。 SELECT 列名1, 列名2, SUM(列名3) FROM 表名 GROUP BY ROLLUP (列名1, 列名2);
- OFFSET FETCH:用于分页查询结果。 SELECT 列名 FROM 表名 OFFSET 起始位置 ROWS FETCH NEXT 获取行数 ROWS ONLY;
- CROSS JOIN:用于获取两个表的笛卡尔积。 SELECT 列名 FROM 表名1 CROSS JOIN 表名2;
- UNION ALL:用于合并两个或多个SELECT语句的结果,包括重复的行。 SELECT 列名 FROM 表名1 UNION ALL SELECT 列名 FROM 表名2;
- INTERSECT:用于获取两个或多个SELECT语句结果集之间的交集。 SELECT 列名 FROM 表名1 INTERSECT SELECT 列名 FROM 表名2;
- EXCEPT/ MINUS:用于获取第一个SELECT语句结果集相对于第二个SELECT语句结果集的差集。 SELECT 列名 FROM 表名1 EXCEPT/MINUS SELECT 列名 FROM 表名2;
- EXISTS/NOT EXISTS:用于检查子查询返回的结果是否存在或不存在。 SELECT * FROM 表名 WHERE EXISTS (子查询); SELECT * FROM 表名 WHERE NOT EXISTS (子查询);
- OVER():用于执行窗口函数,对查询结果进行分组和排序。 SELECT 列名, 窗口函数() OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
- GROUP_CONCAT:用于将多个行的值拼接为一个字符串。 SELECT 列名, GROUP_CONCAT(列名) FROM 表名 GROUP BY 列名;
- ROW_NUMBER:为查询结果的每一行分配一个唯一的行号。 SELECT ROW_NUMBER() OVER (ORDER BY 列名) AS 行号, 列名 FROM 表名;
- TOP:用于获取查询结果的前几行记录。 SELECT TOP (n) 列名 FROM 表名;
- FIRST:用于获取查询结果的第一行记录。 SELECT FIRST(n) 列名 FROM 表名;
- LAST:用于获取查询结果的最后一行记录。 SELECT LAST(n) 列名 FROM 表名;
- SAMPLE:用于从查询结果中随机获取一部分记录。 SELECT SAMPLE(n) 列名 FROM 表名;
- PIVOT:用于将行数据转换为列数据。 SELECT 列名1, [列名2], [列名3] FROM 表名 PIVOT (聚合函数(列名) FOR 列名2 IN ([列名2], [列名3])) AS 别名;
- UNPIVOT:用于将列数据转换为行数据。 SELECT 列名1, 列名2, 列名3 FROM 表名 UNPIVOT (值列名 FOR 列名2 IN ([列名2], [列名3])) AS 别名;
- CROSS APPLY:用于将右表的每一行与左表的行进行组合。 SELECT 列名 FROM 表名1 CROSS APPLY (SELECT 列名 FROM 表名2) AS 别名;
- OUTER APPLY:用于将右表的每一行与左表的行进行组合,包括未匹配的行。 SELECT 列名 FROM 表名1 OUTER APPLY (SELECT 列名 FROM 表名2) AS 别名;
- FOR XML:用于将查询结果转换为XML格式。 SELECT 列名 FROM 表名 FOR XML AUTO|RAW|EXPLICIT;
- XMLQUERY:用于在XML数据上执行XPath查询。 SELECT 列名 FROM 表名 WHERE XMLQUERY('XPath表达式' PASSING 列名 RETURNING CONTENT);
- OFFSET FETCH:用于分页查询结果。 SELECT 列名 FROM 表名 ORDER BY 列名 OFFSET 偏移量 ROWS FETCH FIRST 行数 ROWS ONLY;
- MATCH AGAINST:用于全文搜索。 SELECT 列名 FROM 表名 WHERE MATCH(列名) AGAINST('搜索词');
- DATE_FORMAT:用于将日期格式化为指定的字符串格式。 SELECT DATE_FORMAT(日期列名, '格式字符串') FROM 表名;
- BINARY:用于区分大小写进行比较。 SELECT 列名 FROM 表名 WHERE BINARY 列名 = '字符串';
- JSON_VALUE:用于提取JSON数据中的值。 SELECT 列名->'$.键' FROM 表名;
- OUTER JOIN:用于返回左表和右表的匹配记录以及左表和右表单独的非匹配记录。 SELECT 列名 FROM 表名1 LEFT|RIGHT|FULL OUTER JOIN 表名2 ON 表名1.列名 = 表名2.列名;
- ROWS BETWEEN:用于在窗口函数中指定行范围。 SELECT 列名, SUM(列名) OVER (PARTITION BY 列名 ORDER BY 列名 ROWS BETWEEN n PRECEDING AND m FOLLOWING) FROM 表名;
- LEAD:用于在结果集中获取指定行后的值。 SELECT 列名, LEAD(列名, n) OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
- LAG:用于在结果集中获取指定行前的值。 SELECT 列名, LAG(列名, n) OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
- XMLAGG:用于将多行的XML数据聚合为单个XML值。 SELECT XMLAGG(XMLELEMENT(E, 列名)) FROM 表名;
- SESSION_USER:用于获取当前会话用户的用户名。 SELECT SESSION_USER FROM 表名;
- DATABASE:用于获取当前数据库的名称。 SELECT DATABASE FROM 表名;
- RANK:用于为结果集中的行分配排名。 SELECT 列名, RANK() OVER (ORDER BY 列名) FROM 表名;
- NTILE:用于将结果集划分为指定数量的桶,并为每个桶分配一个编号。 SELECT 列名, NTILE(n) OVER (ORDER BY 列名) FROM 表名;
- FORMAT:用于将数值格式化为指定的字符串格式。 SELECT FORMAT(数值, '格式字符串') FROM 表名;
- BIT_LENGTH:用于获取位(bit)的长度。 SELECT BIT_LENGTH(列名) FROM 表名;
- SOUNDEX:用于计算字符串的SOUNDEX值,用于模糊匹配。 SELECT SOUNDEX(列名) FROM 表名;
- VAR_SAMP:用于计算样本方差。 SELECT VAR_SAMP(列名) FROM 表名;
- STDDEV_POP:用于计算总体标准差。 SELECT STDDEV_POP(列名) FROM 表名;
- RAND:用于生成随机数。 SELECT RAND() FROM 表名;
- COVAR_POP:用于计算总体协方差。 SELECT COVAR_POP(列1, 列2) FROM 表名;
- TRUNCATE:用于截断数值到指定的小数位数。 SELECT TRUNCATE(列名, 小数位数) FROM 表名;
- CURRENT_TIMESTAMP:用于获取当前的日期和时间。 SELECT CURRENT_TIMESTAMP FROM 表名;
- GETDATE:用于获取当前的日期和时间(针对特定数据库系统)。 SELECT GETDATE() FROM 表名;
非常抱歉之前的回答还是没有满足您的要求。以下是更多的DQL语法示例:
- DATEADD:用于在日期上添加指定的时间间隔。 SELECT DATEADD(时间间隔, 数量, 日期列名) FROM 表名;
- DATEDIFF:用于计算两个日期之间的时间间隔。 SELECT DATEDIFF(时间间隔, 开始日期, 结束日期) FROM 表名;
- INITCAP:用于将字符串的每个单词的首字母大写。 SELECT INITCAP(列名) FROM 表名;
- REGEXP_LIKE:用于在正则表达式模式下进行匹配。 SELECT 列名 FROM 表名 WHERE REGEXP_LIKE(列名, '正则表达式');
- XMLAGG:用于将多个行的XML数据聚合为单个XML值。 SELECT XMLAGG(XMLELEMENT(E, 列名)) FROM 表名;
- DECODE:用于执行条件判断并返回对应的值。 SELECT DECODE(列名, '值1', '结果1', '值2', '结果2', '结果3') FROM 表名;
- TRIM:用于去除字符串开头和结尾的指定字符。 SELECT TRIM(字符 FROM 列名) FROM 表名;
- HAVING COUNT:用于筛选GROUP BY的结果。 SELECT 列名, COUNT() FROM 表名 GROUP BY 列名 HAVING COUNT() > n;
- ROW_NUMBER() OVER (PARTITION BY 列名 ORDER BY 列名) AS 别名:用于对分组后的结果进行编号。 SELECT 列名, ROW_NUMBER() OVER (PARTITION BY 列名 ORDER BY 列名) AS 别名 FROM 表名;
- EXISTS (SELECT 1 FROM 表名 WHERE 条件):用于检查子查询返回的结果是否存在。 SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 表名 WHERE 条件);
- EXTRACT:用于从日期或时间值中提取指定的部分(年、月、日等)。 SELECT EXTRACT(部分 FROM 日期列名) FROM 表名;
- ROLLUP:用于生成多层次的汇总行,按照指定的列进行分组。 SELECT 列名1, 列名2, SUM(列名3) FROM 表名 GROUP BY ROLLUP (列名1, 列名2);
- REVERSE:用于将字符串反转。 SELECT REVERSE(列名) FROM 表名;
- LISTAGG:用于将多个行的值拼接为一个字符串,可以指定分隔符。 SELECT 列名, LISTAGG(列名, '分隔符') WITHIN GROUP (ORDER BY 排序列名) FROM 表名 GROUP BY 列名;
- CUME_DIST:用于计算当前行在分组中的累计分布比例。 SELECT 列名, CUME_DIST() OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
- LEAD和LAG(带偏移量):用于在结果集中获取指定行前后的值,可以指定偏移量。
SELECT 列名, LEAD(列名, 偏移量) OVER (ORDER BY 排序列名) FROM 表名; SELECT 列名, LAG(列名, 偏移量) OVER (ORDER BY 排序列名) FROM 表名;
- PERCENT_RANK:用于计算当前行在分组中的百分比排名。
SELECT 列名, PERCENT_RANK() OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
- STR_TO_DATE:用于将字符串转换为日期格式。
SELECT STR_TO_DATE(字符串, '格式') FROM 表名;
- COALESCE:用于返回参数中的第一个非NULL值。
SELECT COALESCE(列名1, 列名2, 列名3) FROM 表名;
- INITCAP:用于将字符串的每个单词的首字母大写。
SELECT INITCAP(列名) FROM 表名;
- XMLFOREST:用于将多列数据封装为XML元素。
SELECT XMLFOREST(列名1 AS 元素名1, 列名2 AS 元素名2) FROM 表名;
- FLOOR:用于向下取整。
SELECT FLOOR(列名) FROM 表名;
- CEILING:用于向上取整。
SELECT CEILING(列名) FROM 表名;
- STRING_AGG:用于将多个行的值拼接为一个字符串,可以指定分隔符。
SELECT STRING_AGG(列名, '分隔符') FROM 表名;
- DATE_TRUNC:用于将日期截断为指定的单位。
SELECT DATE_TRUNC('单位', 日期列名) FROM 表名;
- ARRAY_AGG:用于将多个行的值聚合为一个数组。
SELECT ARRAY_AGG(列名) FROM 表名;
- TRIM:用于去除字符串前后指定的字符。
SELECT TRIM(指定字符 FROM 列名) FROM 表名;
- XMLQUERY:用于执行XPath查询并返回结果。
SELECT XMLQUERY('XPath表达式' PASSING 列名 RETURNING CONTENT) FROM 表名;
- JSON_ARRAY:用于创建JSON数组。
SELECT JSON_ARRAY(列名1, 列名2) FROM 表名;
- SESSIONTIMEZONE:获取当前会话的时区。
SELECT SESSIONTIMEZONE FROM DUAL;
- DECODE:用于执行条件判断并返回对应值。
SELECT DECODE(列名, '条件1', '结果1', '条件2', '结果2', '结果3') FROM 表名;
- EXP:用于计算指定数值的指数。
SELECT EXP(数值) FROM 表名;
- POWER:用于计算指定数值的幂。
SELECT POWER(数值, 幂) FROM 表名;
- SQRT:用于计算指定数值的平方根。
SELECT SQRT(数值) FROM 表名;
- REPLACE:用于替换字符串中的指定字符。
SELECT REPLACE(列名, '要替换的字符', '替换后的字符') FROM 表名;
- PATINDEX:用于在字符串中查找指定模式的起始位置。
SELECT PATINDEX('模式', 列名) FROM 表名;
- LEAST:用于返回参数中的最小值。
SELECT LEAST(列名1, 列名2, 列名3) FROM 表名;
- GREATEST:用于返回参数中的最大值。
SELECT GREATEST(列名1, 列名2, 列名3) FROM 表名;
- NVL:用于将NULL值替换为指定的非NULL值。
SELECT NVL(列名, 替代值) FROM 表名;
- INITRANS:设置表的初始事务并发数。
ALTER TABLE 表名 INITRANS 数字;
- MAXTRANS:设置表的最大事务并发数。
ALTER TABLE 表名 MAXTRANS 数字;
- SAVEPOINT:创建一个命名的保存点,用于回滚到特定的工作点。
SAVEPOINT 保存点名称;
- ROLLBACK TO SAVEPOINT:回滚到指定的保存点。
ROLLBACK TO SAVEPOINT 保存点名称;
- DATE_PART:从日期或时间值中提取指定的部分,类似于EXTRACT。
SELECT DATE_PART('部分', 日期列名) FROM 表名;
- ARRAY_INSERT:在数组中插入一个元素。
SELECT ARRAY_INSERT(数组, 索引, 元素) FROM 表名;
- LOG:计算指定数值的自然对数。
SELECT LOG(数值) FROM 表名;
- CAST:用于将一个数据类型转换为另一个数据类型。
SELECT CAST(列名 AS 目标数据类型) FROM 表名;
- FIRST_VALUE:用于获取分组中的第一个值。
SELECT 列名, FIRST_VALUE(列名) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
- STRING_SPLIT:用于将一个字符串拆分为多个子字符串。
SELECT value FROM STRING_SPLIT(源字符串, 分隔符);
- OVERLAPS:用于检查两个时间范围是否有重叠。
SELECT * FROM 表名 WHERE (开始时间, 结束时间) OVERLAPS ('2022-01-01', '2022-01-31');
- CONCAT_WS:用于将多个字符串连接在一起,使用指定的分隔符。
SELECT CONCAT_WS(分隔符, 列名1, 列名2) FROM 表名;
- JSON_QUERY:用于在JSON数据中执行SQL样式的查询。
SELECT JSON_QUERY(列名, '查询路径') FROM 表名;
- NEXTVAL:用于获取序列的下一个值。
SELECT NEXTVAL('序列名称');
- FILTER:用于在聚合函数中应用筛选条件。
SELECT 列名, SUM(列名) FILTER (WHERE 条件) FROM 表名 GROUP BY 列名;
- REGEXP_REPLACE:用于在字符串中替换匹配正则表达式的部分。
SELECT REGEXP_REPLACE(列名, '正则表达式', '替换字符串') FROM 表名;
- OFFSET:用于跳过查询结果的前几行。
SELECT 列名 FROM 表名 OFFSET 行数;
- NTH_VALUE:用于获取分组中的第N个值。
SELECT 列名, NTH_VALUE(列名, N) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
- LAST_VALUE:用于获取分组中的最后一个值。
SELECT 列名, LAST_VALUE(列名) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
- LEAD和LAG(带偏移量和默认值):用于在结果集中获取指定行前后的值,可以指定偏移量和默认值。
SELECT 列名, LEAD(列名, 偏移量, 默认值) OVER (ORDER BY 排序列名) FROM 表名; SELECT 列名, LAG(列名, 偏移量, 默认值) OVER (ORDER BY 排序列名) FROM 表名;
FORMAT:用于将日期、数值或货币格式化为指定的格式。SELECT FORMAT(列名, '格式') FROM 表名;
DML
- INSERT语句:用于向数据库表中插入新的行或记录。
- UPDATE语句:用于修改数据库表中已存在的行或记录的数据。
- DELETE语句:用于从数据库表中删除指定的行或记录。
- SELECT语句:虽然SELECT属于DQL(数据查询语言),但也可以用于检索数据和查询结果集,它可以用于选择特定的列、过滤条件、排序、聚合等操作。
DDL
列举 中所有的ddl语言并列举用法就像这种SELECT FORMAT(列名, '格式') FROM 表名;
在SQL中,DDL(数据定义语言)用于定义和管理数据库对象,例如表、视图、索引等。以下是常见的DDL语言及其用法:
DDL(数据定义语言)命令:
- CREATE TABLE
- ALTER TABLE
- CREATE VIEW
- DROP VIEW
- CREATE INDEX
- DROP INDEX
- CREATE DATABASE
- ALTER DATABASE
- DROP DATABASE
- CREATE SCHEMA
- ALTER SCHEMA
- DROP SCHEMA
- CREATE PROCEDURE
- ALTER PROCEDURE
- DROP PROCEDURE
- CREATE FUNCTION
- ALTER FUNCTION
- DROP FUNCTION
- CREATE TRIGGER
- ALTER TRIGGER
- DROP TRIGGER
- CREATE DOMAIN
- ALTER DOMAIN
- DROP DOMAIN
- CREATE USER
- ALTER USER
- DROP USER
- GRANT
- REVOKE
- CREATE ROLE
- ALTER ROLE
- DROP ROLE
- CREATE CONSTRAINT
- ALTER CONSTRAINT
- DROP CONSTRAINT
- CREATE DATABASE LINK
- DROP DATABASE LINK
- CREATE COLLATION
- DROP COLLATION
- CREATE ASSERTION
- DROP ASSERTION
- CREATE TRUNCATE
- ALTER TRUNCATE
- DROP TRUNCATE
- CREATE EVENT
- ALTER EVENT
- DROP EVENT
- CREATE TABLE:用于创建表格 CREATE TABLE 表名 (
列名1 数据类型1,
列名2 数据类型2,
...
);
- ALTER TABLE:用于修改现有表的结构 ALTER TABLE 表名 ADD 列名 数据类型; -- 添加列 ALTER COLUMN 列名 SET 数据类型; -- 修改列数据类型 DROP COLUMN 列名; -- 删除列
- DROP TABLE:用于删除表 DROP TABLE 表名;
- CREATE VIEW:用于创建视图 CREATE VIEW 视图名 AS SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
- DROP VIEW:用于删除视图 DROP VIEW 视图名;
- CREATE INDEX:用于创建索引 CREATE INDEX 索引名 ON 表名 (列名1, 列名2, ...);
- DROP INDEX:用于删除索引 DROP INDEX 索引名;
- CREATE DATABASE:用于创建数据库 CREATE DATABASE 数据库名;
- ALTER DATABASE:用于修改数据库属性 ALTER DATABASE 数据库名 SET 属性 = 值;
- DROP DATABASE:用于删除数据库 DROP DATABASE 数据库名;
- CREATE SCHEMA:用于创建模式 CREATE SCHEMA 模式名;
- ALTER SCHEMA:用于修改模式的属性 ALTER SCHEMA 模式名 SET 属性 = 值;
- DROP SCHEMA:用于删除模式 DROP SCHEMA 模式名;
- CREATE PROCEDURE:用于创建存储过程 CREATE PROCEDURE 存储过程名 [参数列表] AS BEGIN
-- 存储过程的具体代码
END;
- ALTER PROCEDURE:用于修改存储过程 ALTER PROCEDURE 存储过程名 [参数列表] AS BEGIN
-- 修改后的存储过程代码
END;
- DROP PROCEDURE:用于删除存储过程 DROP PROCEDURE 存储过程名;
- CREATE FUNCTION:用于创建函数 CREATE FUNCTION 函数名 ([参数列表]) RETURNS 返回值类型 AS BEGIN
-- 函数的具体代码
END;
- ALTER FUNCTION:用于修改函数 ALTER FUNCTION 函数名 ([参数列表]) RETURNS 返回值类型 AS BEGIN
-- 修改后的函数代码
END;
- DROP FUNCTION:用于删除函数 DROP FUNCTION 函数名;
- CREATE TRIGGER:用于创建触发器,它是一种特殊类型的存储过程,当特定事件发生时自动执行代码。 CREATE TRIGGER 触发器名 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名 FOR EACH ROW BEGIN
-- 触发器的代码
END;
- ALTER TRIGGER:用于修改触发器的定义。 ALTER TRIGGER 触发器名 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名 FOR EACH ROW BEGIN
-- 修改后的触发器代码
END;
- DROP TRIGGER:用于删除触发器。 DROP TRIGGER 触发器名;
- CREATE USER:用于创建数据库用户或登录帐户。 CREATE USER 用户名 [IDENTIFIED BY 密码]
- ALTER USER:用于修改数据库用户的属性。 ALTER USER 用户名 [ALTER 属性 = 值]
- DROP USER:用于删除数据库用户或登录帐户。 DROP USER 用户名;
- GRANT:用于授予角色或用户对数据库对象的某些权限。 GRANT 权限列表 ON 对象名 TO 用户名/角色名;
- REVOKE:用于撤销用户或角色对数据库对象的权限。 REVOKE 权限列表 ON 对象名 FROM 用户名/角色名;
- CREATE DOMAIN:用于创建数据域,即自定义数据类型。 CREATE DOMAIN 数据域名 AS 数据类型 [DEFAULT 默认值];
- ALTER DOMAIN:用于修改数据域的定义。 ALTER DOMAIN 数据域名 [SET DEFAULT 默认值];
- DROP DOMAIN:用于删除数据域。 DROP DOMAIN 数据域名;
- CREATE SYNONYM:用于创建同义词,为一个对象定义一个替代名称。 CREATE SYNONYM 同义词名 FOR 对象名;
- DROP SYNONYM:用于删除同义词。 DROP SYNONYM 同义词名;
- COMMENT:用于给数据库对象添加注释。 COMMENT ON OBJECT 对象名 IS '注释内容';
- RENAME:用于重命名数据库对象。 RENAME 对象类型 旧对象名 TO 新对象名;
- ALTER AUTHORIZATION:用于更改数据库对象的所有者。 ALTER AUTHORIZATION 对象类型 对象名 TO 新所有者;
- CREATE ROLE:用于创建角色,角色是一组权限和属性的集合,可以授予给用户。 CREATE ROLE 角色名;
- ALTER ROLE:用于修改角色的属性。 ALTER ROLE 角色名 [ALTER 属性 = 值];
- DROP ROLE:用于删除角色。 DROP ROLE 角色名;
- CREATE CONSTRAINT:用于创建约束,限制表中数据的完整性。 CREATE CONSTRAINT 约束名 CHECK (条件)
- ALTER CONSTRAINT:用于修改约束的定义。 ALTER CONSTRAINT 约束名 [ALTER 条件];
- DROP CONSTRAINT:用于删除约束。 DROP CONSTRAINT 约束名;
- CREATE DATABASE LINK:用于创建数据库链接,允许访问其他数据库的对象。 CREATE DATABASE LINK 链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '远程数据库连接信息';
- DROP DATABASE LINK:用于删除数据库链接。 DROP DATABASE LINK 链接名;
- CREATE DOMAIN:用于创建用户自定义的数据类型。 CREATE DOMAIN 数据类型名称 AS 数据类型;
- ALTER DOMAIN:用于修改已创建的用户自定义数据类型的定义。 ALTER DOMAIN 数据类型名称 [SET 属性 = 值];
- DROP DOMAIN:用于删除用户自定义的数据类型。 DROP DOMAIN 数据类型名称;
- CREATE ASSERTION:用于创建断言,即用于定义表中数据的约束。 CREATE ASSERTION 断言名称 CHECK (条件);
- DROP ASSERTION:用于删除断言。 DROP ASSERTION 断言名称;
- CREATE COLLATION:用于创建字符串比较规则。 CREATE COLLATION 排序规则名称 (
PROVIDER = 提供商名称,
LOCALE = 语言环境,
...
);
- DROP COLLATION:用于删除字符串比较规则。 DROP COLLATION 排序规则名称;
- CREATE TRIGGER:用于创建触发器。触发器在指定的事件发生时自动执行一系列操作。 CREATE TRIGGER 触发器名称 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名称 [FOR EACH ROW] [触发事件] BEGIN
-- 触发器的具体操作
END;
- ALTER TRIGGER:用于修改现有的触发器的定义。 ALTER TRIGGER 触发器名称 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名称 [FOR EACH ROW] [触发事件] BEGIN
-- 修改后的触发器操作
END;
- DROP TRIGGER:用于删除触发器。 DROP TRIGGER 触发器名称;
- CREATE ASSERTION:用于创建断言,约束表中的数据。 CREATE ASSERTION 断言名称 CHECK (条件);
- DROP ASSERTION:用于删除断言。 DROP ASSERTION 断言名称;
- GRANT:用于向用户或角色授予特定的权限。 GRANT 权限列表 ON 对象名称 TO 用户名/角色名;
- REVOKE:用于撤销用户或角色对特定对象的权限。 REVOKE 权限列表 ON 对象名称 FROM 用户名/角色名;
- CREATE EVENT:用于创建事件,即在指定时间执行的计划任务。 CREATE EVENT 事件名称 ON SCHEDULE [时间安排] DO [事件操作];
- ALTER EVENT:用于修改现有事件的定义。 ALTER EVENT 事件名称 ON SCHEDULE [时间安排] DO [修改后的事件操作];
- DROP EVENT:用于删除事件。 DROP EVENT 事件名称;
- CREATE TRUNCATE:用于创建截断表的操作。 CREATE TRUNCATE 表名称;
- ALTER TRUNCATE:用于修改截断表的定义。 ALTER TRUNCATE 表名称;
- DROP TRUNCATE:用于删除截断表的操作。 DROP TRUNCATE 表名称;
- CREATE PACKAGE:用于创建包,包含一组相关的过程、函数、游标和变量。 CREATE PACKAGE 包名 AS
-- 包的声明部分(类型、函数、过程等)
END 包名;
- ALTER PACKAGE:用于修改包的定义。 ALTER PACKAGE 包名 COMPILE;
- DROP PACKAGE:用于删除包。 DROP PACKAGE 包名;
- CREATE PIPELINE FUNCTION:用于创建管道函数,返回用于流式处理的结果。 CREATE OR REPLACE FUNCTION 函数名 (参数列表) RETURN 类型 PIPELINED IS
-- 管道函数的实现
END;
- ALTER PIPELINE FUNCTION:用于修改管道函数的定义。 ALTER FUNCTION 函数名 COMPILE;
- DROP PIPELINE FUNCTION:用于删除管道函数。 DROP FUNCTION 函数名;
DCL
DCL (Data Control Language) 是 SQL 中用于授权和权限管理的一组语言。以下是一些常见的 DCL 语言及其用法示例:
- GRANT: GRANT 语句用于授予用户或用户组特定的权限。
GRANT SELECT, INSERT ON 表名 TO 用户名;
上述示例中,授权用户 "用户名" 只能在 "表名" 表上执行 SELECT 和 INSERT 操作。 - REVOKE: REVOKE 语句用于撤销已授权的权限。
REVOKE SELECT, INSERT ON 表名 FROM 用户名;
上述示例中,从用户 "用户名" 撤销了对 "表名" 表的 SELECT 和 INSERT 权限。 - DENY: DENY 语句用于拒绝用户或用户组的权限请求。
DENY UPDATE ON 表名 TO 用户名;
上述示例中,拒绝用户 "用户名" 对 "表名" 表的 UPDATE 权限请求。 - TRUNCATE: TRUNCATE 语句用于删除表中的所有数据。
TRUNCATE TABLE 表名;
上述示例中,删除了 "表名" 表中的所有数据。 - ALTER USER: ALTER USER 语句用于更改用户的属性或权限。
ALTER USER 用户名 PASSWORD '新密码';
上述示例中,更改了用户 "用户名" 的密码为 "新密码"。 - CREATE USER: CREATE USER 语句用于创建新用户。
CREATE USER 新用户名 IDENTIFIED BY '密码';
上述示例中,创建了一个名为 "新用户名" 的用户,并设置了密码。 - ALTER USER: ALTER USER 语句用于更改用户的属性或权限。
ALTER USER 用户名 PASSWORD EXPIRE;
上述示例中,将用户 "用户名" 的密码过期。 - DROP USER: DROP USER 语句用于删除一个用户。
DROP USER 用户名;
上述示例中,删除名为 "用户名" 的用户。 - CREATE ROLE: CREATE ROLE 语句用于创建角色,角色是一组权限的集合。
CREATE ROLE 新角色名;
上述示例中,创建了一个名为 "新角色名" 的角色。 - GRANT ROLE: GRANT ROLE 语句用于将角色授予用户。
GRANT 新角色名 TO 用户名;
上述示例中,将角色 "新角色名" 授予给用户 "用户名"。 - GRANT ALL PRIVILEGES: GRANT ALL PRIVILEGES 语句用于授予用户或用户组所有权限。 GRANT ALL PRIVILEGES ON 表名 TO 用户名; 上述示例中,授权用户 "用户名" 在 "表名" 表上执行所有权限操作。
- REVOKE ALL PRIVILEGES: REVOKE ALL PRIVILEGES 语句用于撤销用户或用户组的所有权限。 REVOKE ALL PRIVILEGES ON 表名 FROM 用户名; 上述示例中,从用户 "用户名" 撤销了对 "表名" 表的所有权限。
- GRANT OPTION: GRANT OPTION 语句用于授予用户将自己的权限授予给其他用户的能力。
GRANT SELECT ON 表名 TO 用户名 WITH GRANT OPTION;
- ALTER ROLE: ALTER ROLE 语句用于修改角色的属性或权限。
ALTER ROLE 角色名 ADD 权限;
上述示例中,向角色 "角色名" 添加一个权限。
- DROP ROLE: DROP ROLE 语句用于删除角色。
DROP ROLE 角色名;
上述示例中,删除名为 "角色名" 的角色。
- SET ROLE: SET ROLE 语句用于在当前会话中启用指定的角色。
SET ROLE 角色名;
上述示例中,启用名为 "角色名" 的角色。
- CREATE SCHEMA: CREATE SCHEMA 语句用于创建一个新的模式或命名空间。 CREATE SCHEMA 模式名; 上述示例中,创建了一个名为 "模式名" 的模式。
- DROP SCHEMA: DROP SCHEMA 语句用于删除一个模式及其包含的所有对象。
DROP SCHEMA 模式名;
上述示例中,删除名为 "模式名" 的模式。
- SET SESSION AUTHORIZATION: SET SESSION AUTHORIZATION 语句用于更改当前会话的用户身份。
SET SESSION AUTHORIZATION 用户名;
上述示例中,将当前会话的用户身份更改为 "用户名"。
- ALTER DEFAULT PRIVILEGES: ALTER DEFAULT PRIVILEGES 语句用于修改默认权限。
ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, INSERT ON TABLES TO 角色名;
上述示例中,为模式 "模式名" 中的所有表设置默认权限,授予角色 "角色名" 的 SELECT 和 INSERT 权限。
- CREATE POLICY: CREATE POLICY 语句用于创建安全策略。
CREATE POLICY 策略名 ON 表名 TO 角色名 USING (条件) WITH CHECK (条件);
上述示例中,创建了名为 "策略名" 的安全策略,应用于 "表名" 表,仅对角色 "角色名" 进行策略验证,并使用指定的条件。 - ALTER POLICY: ALTER POLICY 语句用于修改安全策略。
ALTER POLICY 策略名 ON 表名 TO 角色名 RENAME TO 新策略名;
上述示例中,将名为 "策略名" 的安全策略,应用于 "表名" 表,仅对角色 "角色名" 进行策略验证,并将其重命名为 "新策略名"。 - ALTER DEFAULT PRIVILEGES: ALTER DEFAULT PRIVILEGES 语句用于修改默认权限。
ALTER DEFAULT PRIVILEGES FOR ROLE 角色名 GRANT SELECT, INSERT ON TABLES TO 用户名;
上述示例中,为角色 "角色名" 设置默认权限,在所有表上将 SELECT 和 INSERT 权限授予用户 "用户名"。