SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
查询和更新指令构成了 SQL 的 DML 部分:
SELECT – 从数据库表中获取数据:
UPDATE – 更新数据库表中的数据
DELETE – 从数据库表中删除数据
INSERT INTO – 向数据库表中插入数据
SQL语句
查询:SELECT 列名称 FROM 表名称/SELECT * FROM 表名称 更新:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 删除:DELETE FROM 表名称 WHERE 列名称 = 值 插入:INSERT INTO 表名称 VALUES(值1,值2,...)/INSERT INTO 表名称(列1,,2,...) VALUES(值1,值2,...) 唯一值:SELECT DISTINCT 列名称 FROM 表名称(用于返回唯一不同的值) 条件:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值/运算符(=、<>、>、<、>=、<=、BETWEEN、LIKE) 条件链接:SELECT * FROM 表名称 WHERE 列名称 = 值 AND 列名称 = 值/SELECT * FROM 表名称 WHERE 列名称 = 值 OR 列名称 = 值 排序:ORDER BY 语句用于根据指定的列对结果集进行排序,降序对记录进行排序DESC,升序对记录进行排序ASC SELECT * FROM 表名称 ORDER BY 列名称 DESC/SELECT * FROM 表名称 ORDER BY 列名称 ASC 条数:SELECT TOP 数字 * FROM 表名称/SELECT TOP 数字 PERCENT * FROM 表名称 匹配:SELECT * FROM 表名称 WHERE 列名称 LINK '%值' In:SELECT * FROM 表名称 WHERE 列名称 IN (值1,值2,...) Between:SELECT * FROM 表名称 WHERE 列名称 BETWEEN '值1' AND '值2' 内连接:SELECT 表名称.列名称 FROM 表名称1 INNER JOIN 表名称2 ON 表名称1.id = 表名称2.id 左连接:SELECT 表名称.列名称 FROM 表名称1 LEFT JOIN 表名称2 ON 表名称1.id = 表名称2.id 右连接:SELECT 表名称.列名称 FROM 表名称1 RIGHT JOIN 表名称2 ON 表名称1.id = 表名称2.id 全连接:SELECT 表名称.列名称 FROM 表名称1 FULL JOIN 表名称2 ON 表名称1.id = 表名称2.id Union:SELECT 列名称 FROM 表名称 UNION(UNION ALL) SELECT 列名称 FROM 表名称 复制:SELECT 列名称 INTO 新表名称 FROM 表名称1 (WHERE 列名称 = 值/INNER JOIN 表名称2 ON 表名称1.id = 表名称2.id)
通配符:
%,替代一个或多个字符;-,仅替代一个字符;[charlist],字符列中的任何单一字符;[^charlist]或[!charlist],不在字符列中的任何单一字符。
SQL 中最重要的 DDL 语句:
CREATE DATABASE – 创建新数据库
ALTER DATABASE – 修改数据库
CREATE TABLE – 创建新表
ALTER TABLE – 变更(改变)数据库表
DROP TABLE – 删除表
CREATE INDEX – 创建索引(搜索键)
DROP INDEX – 删除索引
SQL语句
创建数据库:CREATE DATABASE 名称 创建表格:CREATE TABLE 表名称 (列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,...) 创建索引:CREATE INDEX 索引名 ON 表名称 (列名称)/CREATE UNIQUE INDEX 索引名 ON 表名称 (列名称) 删除索引、表以及数据库:DROP INDEX 索引名/DROP TABLE 表名称/DROP DATABASE 数据库名称 删除内容:TRUNCATE TABLE 表名称 表中列添加:ALTER TABLE 表名称 ADD 列名称 数据类型 表中列修改:ALTER TABLE 表名称 ALTER COLUMN 列名称 数据类型 表中列删除:ALTER TABLE 表名称 DROP COLUMN 列名称 创建视图:CREATE VIEW 视图名称 AS SELECT 列名称 FROM 表名称 WHERE 条件
SQL约束
NOT NULL:约束强制列不接受 NULL 值
UNIQUE:约束唯一标识数据库表中的每条记录
PRIMARY KEY:约束唯一标识数据库表中的每条记录
FOREIGN KEY:一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY
CHECK:约束用于限制列中的值的范围
DEFAULT:约束用于向列中插入默认值
SQL的NULL值处理:IS NULL 和 IS NOT NULL 操作
SQL函数
SELECT function(列) FROM 表 AVG(column)返回某列的平均值 COUNT(column)返回某列的行数(不包括NULL值) COUNT(*)返回被选行数 COUNT(DISTINCT column)返回相异结果的数目 FIRST(column)返回在指定的域中第一个记录的值(SQLServer2000 不支持) LAST(column)返回在指定的域中最后一个记录的值(SQLServer2000 不支持) MAX(column)返回某列的最高值 MIN(column)返回某列的最低值 SUM(column)返回某列的总和 UCASE(c)将某个域转换为大写 LCASE(c)将某个域转换为小写 MID(c,start[,end])从某个文本域提取字符 LEN(c)返回某个文本域的长度 ROUND(c,decimals)对某个数值域进行指定小数位数的四舍五入 NOW()返回当前的系统日期 FORMAT(c,format)改变某个域的显示方式
SQL的GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
SQL的增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value