SQL知识
SQL基础
-
重要事项
一定要记住,SQL 对大小写不敏感
-
SQL DML 和 DDL
-数据操作语言 (DML) SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据 -数据定义语言 (DDL) CREATE DATABASE - 创建新数据库 ALTER DATABASE - 修改数据库 CREATE TABLE - 创建新表 ALTER TABLE - 变更(改变)数据库表 DROP TABLE - 删除表 CREATE INDEX - 创建索引(搜索键) DROP INDEX - 删除索引
-
SELECT 语句
-
SELECT 语句
- 语法
SELECT 列名称 FROM 表名称
实例:SELECT LastName,FirstName FROM Persons
- SELECT DISTINCT 语句
- 语法
SELECT DISTINCT 列名称 FROM 表名称
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。
- WHERE 子句
- 语法
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
实例:SELECT * FROM Persons WHERE City=‘Beijing’
需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
- AND & OR 运算符
运算符用于基于一个以上的条件对记录进行过滤。
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
- ORDER BY 子句
ORDER BY 语句用于对结果集进行排序。
ORDER BY 语句用于根据指定的列对结果集进行排序。 ORDER
BY语句默认按照升序对记录进行排序。
如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
-
实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber
FROM Orders
ORDER BY Company -
INTO 语句
- 语法:
INSERT INTO 表名称 VALUES (值1, 值2,…)
指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)
- UPDATE 语句
- 语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
- DELETE 语句
- 语法
DELETE FROM 表名称 WHERE 列名称 = 值
SQL高级
- TOP 子句
TOP 子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
- SQL Server语法:
SELECT TOP number|percent column_name(s) FROM table_name
- MySQL 语法:
SELECT column_name(s)
FROM table_name
LIMIT number
- Oracle 语法:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number
-
注意事项
MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的 -
LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
“%” 可用于定义通配符(模式中缺少的字母)。
- LIKE 操作符语法:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
- SQL 通配符
- % 代表零个或多个字符
- _ 仅替代一个字符 (_aaa 就表示第一个字母随意,剩下的必须是aaa)
- [charlist] 字符列中的任何单一字符
- [^charlist]或者[!charlist] 不在字符列中的任何单一字符
- SQL IN 操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。
- SQL IN 语法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,…)
- SQL BETWEEN 操作符
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。
- SQL BETWEEN 语法 :
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2
- SQL Alias(别名)
通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
- 表的 SQL Alias 语法:
SELECT column_name(s)
FROM table_name AS alias_name
- 列的 SQL Alias 语法 :
SELECT column_name AS alias_name
FROM table_name
- SQL JOIN
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
- INNER JOIN(内连接)
- JOIN: 如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
- INNER JOIN 关键字
- INNER JOIN 关键字语法
SELECT column_name(s)
FROM table_name1 INNER JOINtable_name2 ON table_name1.column_name=table_name2.column_name
- LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
- LEFT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
- SQL RIGHT JOIN 关键字
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
- RIGHT JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
- SQL FULL JOIN 关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
FULL JOIN 关键字语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
- SQL UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
- SQL UNION 语法:
SELECT column_name(s)
FROM table_name1
UNION (SELECT column_name(s) FROM table_name2 )- SQL UNION ALL 语法:
SELECT column_name(s)
FROM table_name1
UNION ALL (SELECT column_name(s) FROM table_name2)
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |