网站文章批量上传工具,自己制作免费网站,快站网如何开始建站,菏泽市建设信息网SQL 分为两个部分#xff1a;数据操作语言#xff08;DML#xff09;和 数据定义语言#xff08;DDL#xff09;。增删改查#xff08;CRUD#xff09;构成了 SQL 的 DML 部分。 SELECT - 从数据库表中获取数据 SELECT 列名 FROM 表名SELECT * FROM 表名 SELECT COUNT(*…SQL 分为两个部分数据操作语言DML和 数据定义语言DDL。增删改查CRUD构成了 SQL 的 DML 部分。 SELECT - 从数据库表中获取数据 SELECT 列名 FROM 表名SELECT * FROM 表名 SELECT COUNT(*) FROM 表名SELECT DISTINCT 列名 FROM 表名 只显示结果不同的项SELECT 列名 FROM 表名 WHERE 列 运算符 值 一些特别的操作符操作符描述不等于BETWEEN在某个范围内LIKE搜索某种模式LIKE 或 NOT LIKE 搜索的模式 % 表示一个或多个字符_ 表示一个字符[charlist] 表示字符列中的任何单一字符[^charlist] 或者 [!charlist] 表示不在字符列中的任何单一字符WHERE 列名 IS NULL 查找空字段不能用 NULL IN 允许在 WHERE 子句中规定多个值。 WHERE 列名 IN (值1, 值2, ...)这种方法比 WHERE 列名 值1 OR 列名 值2 效率高操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围这些值可以是数值、文本或者日期。 SELECT 列名 FROM 表名 WHERE 列名 (NOT) BETWEEN 值1 AND 值2不同的数据库对 BETWEEN AND 操作符的区间处理有差异有开区间、闭区间、左闭右开。AND 和 OR 可在 WHERE 子语句中把多个条件结合起来可以使用圆括号来组成复杂的表达式。WHERE 列名(SELECT ……) e.g. SELECT …… WHERE birthday(SELECT MIN(birthday) FROM ……)ORDER BY 语句用于根据指定的列对结果集进行排序默认升序。 e.g. SELECT …… ORDER BY 列1 DESC, 列2 ASC分组查询 GROUP BY GROUP BY 列名 根据分组字段的值将一个数据集划分成各个不同的小组然后分别按照各个组别进行相应的查询。SELECT * …… GROUP BY 列名 将只会返回各个分组的第一条数据这种查询通常没什么意义。因此常与 COUNT()MAX() 等统计函数结合使用。HAVING 用于对统计函数进行条件判断 由于 “ SELECT COUNT(*) FROM 表名 WHERE COUNT(*) GROUP BY 列名 ” 语句中 WHERE 关键字无法与统计函数一起使用该语句错误e.g. GROUP BY 列名 HAVING 统计函数(列名2) 运算符 值GROUP BY 列名1, 列名2, .... 首先根据列名1的字段值分组再在每个分组里根据列名2的字段值分组规定要返回的记录的数目 SQL Server SELECT TOP 3 列名 FROM 表名SELECT TOP 50 PERCENT 列名 FROM 表名MySQL SELECT 列名 FROM 表名 LIMIT 3Oracle SELECT 列名 FROM 表名 WHERE ROWNUM 3AS 为列名或表名指定别名AS 可以省略但建议加上以增加语句可读性 表名的别名 SELECT 列名 FROM 表名1 AS 别名1, 表名2 AS 别名2表名的别名使查询程序的 WHERE 语句更易阅读和书写列名的别名 SELECT 列名1 AS 别名1, 列名2 AS 别名2 FROM 表名JOIN JOIN / INNER JOIN 内连接返回左右两表中匹配的行SELECT .... FROM 表1, 表2, 表3, .... WHERE 表1.列表2.列 and 表2.列表3.列 ....这种传统跨表查询可替换为SELECT .... FROM 表1 [INNER] JOIN 表2 ON 表1.列表2.列 JOIN 表3 ON 表2.列表3.列 .... WHERE ....LEFT JOIN 将左边的表设置为主表来连接右边的表即使左表中的数据在右表中没有匹配会自动使用 NULL 替代RIGHT JOIN 将右边的表设置为主表来连接左边的表即使右表中的数据在左表中没有匹配会自动使用 NULL 替代UPDATE - 更新数据库表中的数据 UPDATE 表名 SET 列1 值1, 列2 值2 WHERE ……DELETE - 从数据库表中删除数据 DELETE FROM 表名 WHERE ……DELETE FROM 表名 或 DELETE * FROM 表名INSERT INTO - 向数据库表中插入数据 INSERT INTO 表名 VALUES (值1, 值2, ....) -- 不写列名必须写出所有字段值INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ....)插入另一个表中的多行数据INSERT INTO 表名1 (列1, 列2,...) SELECT (列1, 列2, ...) FROM 表名2 WHERE 条件DDL 部分使我们有能力创建或删除表格也可以定义索引键规定表之间的链接以及施加表间的约束。 CREATE DATABASE - 创建新数据库 CREATE DATABASE 数据库名ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表 CREATE TABLE 表名(列名1 数据类型,列名2 数据类型,列名3 数据类型,....) 常用数据类型数据类型描述 integer(size)int(size)smallint(size)tinyint(size) 仅容纳整数。在括号内规定数字的最大位数。 decimal(size,d)numeric(size,d) 容纳带有小数的数字。size 规定数字的最大位数。d 规定小数点右侧的最大位数。 char(size) 容纳固定长度的字符串可容纳字母、数字以及特殊字符。在括号中规定字符串的长度。 varchar(size) 容纳可变长度的字符串可容纳字母、数字以及特殊的字符。在括号中规定字符串的最大长度。 date(yyyymmdd)容纳日期。日期字段需要加引号如 1994-07-04。CREATE TABLE 或 ALTER TABLE 时可以规定约束用于限制加入表的数据的类型。NOT NULL 强制列不接受 NULL 值。如果不向字段添加值就无法插入新记录或者更新记录。CREATE TABLE 表名(列名1 数据类型 NOT NULL,....)UNIQUE 唯一标识数据库表中的每条记录。表创建时创建 UNIQUE 约束CREATE TABLE 表名(列名1 数据类型 UNIQUE,....)命名 UNIQUE 约束以及为多个列定义 UNIQUE 约束CREATE TABLE 表名(列名1 数据类型,列名2 数据类型,....CONSTRAINT 别名 UNIQUE (列名1, 列名2))对已创建的表中的列创建 UNIQUE 约束ALTER TABLE 表名ADD UNIQUE (列名)ALTER TABLE 表名ADD CONSTRAINT 别名 UNIQUE (列名1, 列名2)撤销 UNIQUE 约束……PRIMARY KEY PRIMARY KEY 约束唯一标识数据库表中的每条记录其拥有自动定义的 UNIQUE 约束。每个表可以有多个 UNIQUE 约束但是每个表只能有一个 PRIMARY KEY 约束。主键列不能包含 NULL 值。每个表必须有且只有一个主键。表创建时创建 PRIMARY KEY 约束CREATE TABLE 表名(列名1 数据类型 NOT NULL PRIMARY KEY,....)FOREIGN KEY 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。表创建时创建 FOREIGN KEY 约束CREATE TABLE 表名(....列名 数据类型 FOREIGN KEY REFERENCES 另一表名(其主键名),....)CHECK CHECK 约束用于限制列中的值的范围。表创建时创建 CHECK 约束CREATE TABLE 表名(....列名 int CHECK (列名 0),....)DEFAULT DEFAULT 约束用于向列中插入默认值。表创建时创建 DEFAULT 约束CREATE TABLE 表名(....列名 date DEFAULT GETDATE(),....)AUTO INCREMENT AUTO INCREMENT 允许在每次插入新记录时自动地创建主键字段的值可以规定起始值和递增值。ALTER TABLE - 变更数据库表DROP TABLE - 删除表CREATE INDEX - 创建索引搜索键 在不读取整个表的情况下索引使数据库应用程序可以更快地查找数据。 CREATE [UNIQUE] INDEX 索引名 ON 表名 (列名1 [DESC], 列名2)UNIQUE 在表上创建一个唯一的索引意味着两个行不能拥有相同的索引值。如果希望以降序索引某个列中的值可以在列名之后添加保留字 DESC。 DROP INDEX - 删除索引TRUNCATE TABLE - 清空表 TRUNCATE TABLE 用于删除表中的所有行而不记录单个行删除操作。不同于 DELETE * TRUNCATE 会使自动递增的标识还原。TRUNCATE TABLE 表名转载于:https://www.cnblogs.com/wayne793377164/p/7218710.html