DDL(数据定义语言)
数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有:
create
— 创建(在数据库中创建新表、表视图或其他对象)alter
— 更改 (修改现有的数据库对象,如表)drop
— 删除 (删除数据库中的整个表、表或其他对象的视图)DML(数据操纵语言)
数据操纵语言用于检索、插入和修改数据,数据操纵语言是最常见的SQL命令。
数据操纵语言命令包括:insert
— 插入 (创建记录)delete
— 删除 (删除记录)update
— 修改(修改记录)-
DCL(数据控制语言)
数据控制语言为用户提供权限控制命令。
用于权限控制的命令有: crant
— 授予权限revoke
— 撤销已授予的权限
SQL 语法规则
- SQL语句总是以关键字开始,如SELECT、INSERT、UPDATE、DELETE、DROP、CREATE。
- SQL语句以分号结尾。
- SQL不区分大小写,意味着update与UPDATE相同。
运行顺序
- select子句最后运行,其他子句按书写顺序运行
SQL语法
SELECT(选择)
select 字段 from 表;
当为多列时,字段之间用【,】逗号隔开
当为所有列时,用【*】代替即可
SELECT CustomerName, City FROM Customers;
SELECT DISTINCT(选择不同)
select distinct 字段 from 表;
用于仅返回不同的(different)值
SELECT distinct Country FROM Customers;
WHERE 条件子句
用于过滤记录或提取满足指定标准的记录
SELECT * FROM Customers
WHERE Country='Mexico' OR PostalCode='05021'
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。 注意:在某些版本的SQL中,这个操作符可能写成!= |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 为列指定多个可能的值 |
AND,OR , NOT
- 如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。
- 如果使用AND运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),所有由AND分隔的条件都必须为TRUE。
- 如果由OR分隔的任何条件为真,则OR运算符显示记录。
- 如果使用OR运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),OR分隔的任何一个条件都必须为TRUE。
- 如果条件不为TRUE,则NOT运算符显示记录。
案例:选择来自”Customers” 的国家不是 “Germany” 且不是 “USA”的所有字段
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
ORDER BY (按关键字排序)
用于按升序(ASC)或降序(DESC)对结果集进行排序
默认情况下按升序排序记录
案例:多列排序
select * from customers
order by country asc,city desc;
INSERT INTO (在表中插入)
主键字段问题,目标与实际字段数不符
为表中的所有列添加值
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
仅在指定的列中插入数据
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
使用另一个表填充一个表
INSERT INTO first_table_name [(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM second_table_name
NULL (空值)
NULL 值与 0 或者包含空格(spaces)的字段是不同的
检测是否空值则需要运用IS NULL或IS NOT NULL运算符
UPDATE(更新表中的记录)
如果您省略WHERE子句,所有记录将被更新!
为第一个客户(CustomerID = 1)更新了“CustomerName”和“City”
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
Delete(删除表中的记录)
如果省略了WHERE子句,表中所有记录都将被删除!
运算符
算术运算符
假设变量 a 的值是:10,变量 b 的值是:20,以下为各运算符执行结果:
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法,执行加法运算。 | a + b 得到 30 |
- | 减法,执行减法运算。 | a - b 得到 -10 |
* | 乘法,执行乘法运算。 | a * b 得到 200 |
/ | 用左操作数除右操作数。 | b / a 得到 2 |
% | 用左操作数除右操作数并返回余数。 | b % a 得到 0 |
比较运算符
假设变量 a 的值是:10,变量 b 的值是:20,以下为各运算符执行结果:
运算符 | 描述 | 例子 |
---|---|---|
= | 检查两个操作数的值是否相等,如果是,则条件为真(true)。 | (a = b) is false. |
!= | 检查两个操作数的值是否相等,如果值不相等则条件为真(true)。 | (a != b) is true. |
<> | 检查两个操作数的值是否相等,如果值不相等则条件为真(true)。 | (a <> b) is true. |
> | 检查左操作数的值是否大于右操作数的值,如果是,则条件为真(true)。 | (a > b) is false. |
< | 检查左操作数的值是否小于右操作数的值,如果是,则条件为真(true)。 | (a < b) is true. |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真(true)。(大于等于) | (a >= b) is false |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真(true)。(小于等于) | (a <= b) is true. |
!< | 检查左操作数的值是否不小于右操作数的值,如果是,则条件变为真(true)。(不小于) | (a !< b) is false. |
!> | 检查左操作数的值是否不大于右操作数的值,如果是,则条件变为真(true)。(不大于) | (a !> b) is true. |
逻辑运算符
运算符 | 描述 |
---|---|
ALL | ALL运算符用于将值与另一个值集中的所有值进行比较。 |
AND | AND运算符允许在SQL语句的WHERE子句中指定多个条件。 |
ANY | ANY运算符用于根据条件将值与列表中的任何适用值进行比较。 |
BETWEEN | BETWEEN运算符用于搜索在给定最小值和最大值内的值。 |
EXISTS | EXISTS运算符用于搜索指定表中是否存在满足特定条件的行。 |
IN | IN运算符用于将值与已指定的文字值列表进行比较。 |
LIKE | LIKE运算符用于使用通配符运算符将值与类似值进行比较。 |
NOT | NOT运算符反转使用它的逻辑运算符的含义。 例如:NOT EXISTS, NOT BETWEEN, NOT IN等等,这是一个否定运算符。 |
OR | OR运算符用于组合SQL语句的WHERE子句中的多个条件。 |
IS NULL | IS NULL运算符用于将值与NULL值进行比较。 |
UNIQUE | UNIQUE运算符搜索指定表的每一行的唯一性(无重复项)。 |
否定条件运算符
表达式
是计算值的一个或多个值、运算符和SQL函数的组合,类似于公式
布尔表达式
数值表达式
日期表达式
返回当前系统日期和时间值
USE 语句
用于选择SQL架构中的任何现有数据库,数据库名称在RDBMS中必须是唯一的