Mysql基础(六)DQL之select 语句(一)

一  select 查询语句

备注: 为养成'良好'的代码习惯,建议'关键字'全部'大写'

写出'明确'的字段,更容易理解你的 SQL 的'查询意图'   --> '可读性'

SELECT原本的作用是'按列'的查询,而WHERE限制的是'行'

①  基础语法

相关函数

②  不带条件  单个多个所有字段查询

1、'多字段'查询时用', 逗号'分隔多个字段

2、* 查询'所有字段'                  --> 了解即可,'性能'问题

③  select  函数  没有FROM

1、在 MySQL 中,某些情况下你要'检索的数据'不存在于任何表中,这时您可以'省略' FROM 子句

MySQL中常用的函数分为'三大类':有'日期'操作函数、'字符串'操作函数、'聚合'函数

说明: 时间的'精确粒度'只到了'秒',格式:yyyy-mm-dd hh:mm:ss 

mysql 毫秒级的时间戳 

④  select 字符串函数  无FROM

字符串的函数: 在SQL语句中可以'对字符串进行拼接'、'计算长度'、'大小写转换'

这个dual实际'并不存在',只是为了让'代码对齐'更加'美观'而已

⑤  select 聚合函数  有FROM

初始化: update user set age=38 where nickname='jane'

日常能用到的'频率最高'的函数,也就是'求和'、'计算总记录数'、'求平均值'、'求最大值'、'最小值'

语法: select  聚合函数(列名) FROM 表名;

经验: 对'多条数据 [row]'的'单列 column'进行统计,返回统计后的'一行结果'

⑥   WHERE 条件

-- 语法

SELECT
    columns_list
FROM
    table_name
WHERE
    query_condition;

+++++++++++++  "比较运算符"  +++++++++++++

备注: 了解'取反'

⑦  =、INNULL、LIKE

1、=  '字段' 和 '值' 的比较

2、IN常用于where表达式中,其作用是查询'某个范围[集合]内'的数据:

select * from where field in (value1,value2,value3,…)  -- '逗号'分割

扩展:更多情况下,IN 列表项的值是'不明确'的,而可能是'通过一个子查询得到'的:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)

3、NOT NULL

备注: 了解'空值'和NULL的区别

4、LIKE 运算符是一个'双目'比较运算符,需要'两个操作数'  --> 'vague 模糊查询'

LIKE 运算符'语法'如下:

expression [NOT] LIKE pattern

  1) expression 是 '列名' 或者为 '列名的表达式'

  2) pattern是是一个'字符串模式'  -->  匹配的字符串必须加'单引号'或"双引号"

  3) MySQL 字符串模式支持两个'通配符': '%' 和 '_'

  4) %匹配'零个或多个 [0,+∞)'字符,'_'匹配'一个'字符

  比如: ab% 就是'ab开头'的字符串、而'ab_'就是 'ab开头'的且字符串'长度为3'的字符串

  需求: 想匹配'以%a开头'的字符串怎么办? 匹配通配符可以用'\'转义字符,如 \%a

默认: LIKE 关键字匹配字符的时候是'不区分大小写'的,如果区分大小写,可以加入 BINARY 关键字

形如: WHERE name LIKE BINARY 't%';

通配符的注意事项 

⑧  其它运算符   AND、OR、BETWEEN、EXISTS

1、AND的逻辑就是数学中的'且',全'真(也就是1)'为真,'一假'为假(也就是0)

备注: MySQL中'没有'布尔类型,AND 的运算结果是 '1、0、 或着 NULL',这里的'1'代表'非0'

特点: 只有当两个操作数'都为真时',结果才'返回真',否则返回假 '或者' NULL

用法: WHERE '条件1' AND '条件2'

 

2、OR与AND相同都是'双目'操作符,都'没有TRUE,FALSE',而是用 '0、1、NULL'代替

OR的逻辑是"或" '一真全真',全假为假

3、BETWEEN '等价于' expression >= min AND expression <= max  --> '[A,B]' 区间

 

4、EXISTS的作用是判断subquery这条子查询语句'有没有返回行'

语法: WHERE EXISTS(subquery)

备注: 如果有'至少一行',则 EXISTS 的计算结果为 TRUE,否则计算结果为 FALSE

EXISTS 运算时,一旦'子查询'找到一个'匹配的行',EXISTS 运算就会'返回'

而只要WHERE后面的'运行结果为TRUE',该行就会'被选择'

EXISTS 

1、在检索 'user表' 的每一行时

2、只要 film 表存在一行数据具有相同的 language_id,EXISTS 就返回 TRUE

3、然后进入language表的下一行,直到所有行都检索完成,然后返回language表中所有匹配成功的行

备注: 这个language是'每行每行的往下走的',而film的数据是'全部放在这里'的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值