SQL语言在功能上主要分为如下3大类:
DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。 主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。 主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。 SELECT是SQL语言的基础,最为重要。
DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和 安全级别。 主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。
格式:
- SELECT 标识选择哪些列
- FROM 标识从哪个表中选择
举例:
- SELECT *
- FROM departments;
可以给给个列起别名,用 AS 标识,AS可以省略,别名用引号括住
- SELECT department_id "部门ID", location_id "位置ID"
- FROM departments;
可以选择取出重复行,前面加 Distinct 关键字
- SELECT DISTINCT department_id
- FROM employees;
使用 DESCRIBE 或 DESC 命令,表示表结构
DESC employees;
其中,各个字段的含义分别解释如下:
Field:表示字段名称。
Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
Null:表示该列是否可以存储NULL值。
Key:表示该列是否已编制索引。
PRI表示该列是表主键的一部分;
UNI表示该列是UNIQUE索引的一 部分;
MUL表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,那么值是多少。
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
格式:
- SELECT 字段1,字段2
- FROM 表名
- WHERE 过滤条件
举例:
- SELECT employee_id, last_name, job_id, department_id
- FROM employees
- WHERE department_id = 90 ;
注:在使用 = 运算符时,遵循如下规则:
如果等号两边的值、字符串或表达式都为字符串,则MySQL会按照字符串进行比较,其比较的 是每个字符串中字符的ANSI编码是否相等。
如果等号两边的值都是整数,则MySQL会按照整数来比较两个值的大小。
如果等号两边的值一个是整数,另一个是字符串,则MySQL会将字符串转化为数字进行比较。
如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。
安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别是它可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL 时,其返回值为0,而不为NULL。
注:对于LIKE,匹配格式如下:
“%”:匹配0个或多个字符。 “_”:只能匹配一个字符。
REGEXP的匹配格式如下:
(1)‘^’ 匹配以该字符后面的字符开头的字符串。
(2)‘$’ 匹配以该字符前面的字符结尾的字符串。
(3)‘.’ 匹配任何一个单字符。
(4)“[...]” 匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一 个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
(5)‘*’ 匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字, 而“*”匹配任何数量的任何字符。