SELECT 语法
SELECT [(ALL)|DISTINCT]
{*|table.*|[table.field1 [as alias1]],[table.field2[as alias2]],[..]}
FROM table_name [as table_alias]
[left|out|inner join table_name2] #联合查询
[WHERE ...] #指定结果需满足的条件
[GROUP BY ...] #指定结果按照哪几个字段来分组
[HAVING ...] #过滤分组的记录必须满足的次要条件
[ORDER BY ...] #指定查询记录按一个或者多个条件排序
[LIMIT { [offset,]row_count | row_count OFFSET offset }]
#指定查询的记录从哪条至哪条
[]代表可选的
{}代表必须的
指定查询字段
- 查询表中所有的数据列结果,采用 " * " 符号
效率低,不推荐!
- 可指定查询的结果数据列
SELECT 表名【alias】.需要查询的列名 FROM 表名 【as.alias】,【】内可选。
查询出的列取别名:
当多表之间存在依赖关系时,可以创建或者添加外键关联,生产测试不推荐使用外键关联!
创建表时当作一个字段创建外键 :constraint 约束名 foreign key (XXX) references XXX主键所在的表名(XXX);
创建表后添加外键约束:
删除外键:
更新字段信息:
update 表名 set 列名=赋值 where
DISTINCT关键字的使用:
作用:去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条
SELECT DISTINCT 字段名1,字段名2... FROM 表名
ALL关键字是默认的,返回所有的记录,与之相反!
distinct * 用来除去重复行
使用表达式的列
表达式一般由文本值、列值、NULL、函数和操作符等组成
应用场景:
SELECT语句返回结果列中使用
SELECT语句的ORDER BY、HAVING等句子中使用
DML语句中的where条件语句中使用表达式
在SQL语句中使用表达式
返回的列中使用,如
SELECT version(), 100*6 #返回MySQL版本和计算结果
SELECT SubjectNo,SubjectName,classHour+10,grade FROM subject;
#给返回结果中的课时都加10个课时
避免SQL返回结果中包含" ." ", " "* "和括号等干扰开发语言程序。
where条件语句
- 用于检索数据表中符合条件的记录
- 搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
- 搜索条件的组成
- 逻辑操作符
- 比较操作符
逻辑操作符
操作符名称 | 语法 | 描述 |
AND或&& | a AND b 或者 a&&b | 逻辑与,同时为真,结果才为真 |
OR或|| | a OR b 或者 a||b | 逻辑或,只要一个为真,结果就为真 |
NOT或! | NOT a 或!a | 逻辑非,若操作数为假,结果则为真 |
比较操作符
操作符名称 | 语法 | 描述 |
IS NULL | a IS NULL | 若操作符为NULL,则结果为真 |
IS NOT NULL | aIS NOT NULL | 若操作符不为NULL,则结果为真 |
BETWEEN | a BETWEEN b AND c | 若a范围在b与c之间则结果为真 |
LIKE | a LIKE b | SQL模式匹配,若a匹配b,则结果为真 |
IN | a IN (a1,a2,a3,....) | 若a等于a1,a2...中的某一个,则结果为真 |
- 数值数据类型的记录之间才能进行算术运算
- 相同数据类型的数据之间才能进行比较
查询科目成绩在80到90之间的信息(between..and..包含边界值)
查询科目成绩小于等于70或者等于100的信息
查找学科编号为1,考试成绩不为100的信息
查找信息中是否存在null值
使用"%"或者"_"模糊查询
查询都学过课程1、课程2或课程3的学号