SQL 关键字 | SQL语句及其种类
SQL 用关键字、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。关键字是指那些含义或使用方法已事先定义好的英语单词,存在包含“对表进行查询”或者“参考这个表”等各种意义的关键字。
根据对 RDBMS 赋予的指令种类的不同,SQL 语句可以分为以下三类。
DDL(Data Definition Language,数据定义语言)
DDL用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
CREATE:创建数据库和表等对象 DROP: 删除数据库和表等对象 -- 表删除之后无法恢复。 ALTER: 修改数据库和表等对象的结构 -- 表定义变更之后无法恢复。
--建库
CREATE DATABASE <数据库名称>;
---------------------------------
--建表
CREATE TABLE <表名> (
<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
...
<该表的约束1>, <该表的约束2>,……);
------------------------------------
--删除表
DROP TABLE <表名>; -- 一般的RDBMS中删除的表是无法恢复的
-----------------------------------
--添加列 添加一列|多列 注意不同的数据库使用的语法不同
ALTER TABLE <表名> ADD COLUMN <列的定义>;
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
示例:
--DB2|PostgreSQL|MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
--Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR2(100));
--SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
-- 修改表名
--Oracle|PostgreSQL
ALTER TABLE <表名> RENAME TO <新表名>;
DB2
RENAME TABLE <表名> TO <新表名>;
SQL Server
sp_rename '<表名>', '<新表名>';
MySQL
RENAME TABLE <表名> to <新表名>;
--删除表中某列
ALTER TABLE <表名> DROP COLUMN (<列名>,<列名>,...);
字段约束 | 表约束参考:https://www.cnblogs.com/gzd1-sailoring/p/14827158.html
DML(Data Manipulation Language,数据操纵语言)
DML用来查询或者变更表中的记录。DML 包含以下几种指令。
SELECT:查询表中的数据 INSERT:向表中插入新数据 UPDATE:更新表中的数据 DELETE:删除表中的数据
插入数据的两种方式:
-- 一次只能添加一条数据
INSERT INTO <表名> VALUES (<对应的字段值>,<对应的字段值>,...);
-- 一次添加多行数据
INSERT INTO <表名> VALUES (<对应的字段值>,<对应的字段值>,...),(<对应的字段值>,<对应的字段值>,...),...;
-- 使用查询的结果向表中添加数据
INSERT INTO <表名> as
select 语句;
select 语句中可以使用distinct 对结果进行去重。DISTINCT 关键字只能用在第一个列名之前。distinct去重的列应该放在第一列, 而且多个null值也会去重成一个。如果想实现多列去重效果,可以使用子查询的方式,一次指定一个列进行去重。
DCL(Data Control Language,数据控制语言)
DCL 用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
COMMIT: 确认对数据库中的数据进行的变更 ROLLBACK:取消对数据库中的数据进行的变更 GRANT: 赋予用户操作权限 REVOKE: 取消用户的操作权限
实际使用的 SQL 语句当中有 90% 属于 DML
MySQL中的类型转换,使用cast()函数可以强制转换
【类型转换参考链接】