第二章 数据查询语言DQL
作者:互联网
1 mysql登录与退出
启动服务
net start 服务名
停止服务
net stop 服务名
登录
mysql -h主机名 -p端口号 -u用户名 -p密码/-p
退出
exi或者ctrl +c
2 常用基础语句
查询所有数据库
show databases;
使用某一个数据库
use databasename;
显示某数据库中的所有表
show tables;
show tables from databasename;
显示表的属性结构
desc tablename;
3 MySQL语法规范
不区分大小写,建议关键字大写,表名、列名小写
每句话用;或\g结尾
每条命令根据需要,各子句一般分行写,关键字不能缩写也不能分行
注释
单行注释:#注释文字
单行注释:-- 注释文字(要有空格)
多行注释:/* 注释文字 */
4 基础查询
语法
select 查询列表 from 表名 ;
查询列表可以是:表中的字段、常量、表达式、函数
查询的结果是一个虚拟的表格
注意:在进行查询操作之前要指定所有的库:use myemployees;
查询表中的单个字段:select last_name from employees;
查询表中的多个字段:select last_name, salary, email from employees;
查询表中的所有字段:select * from employees;
按F12进行格式化
着重号`字段名`
用来区分是否是关键字或者字段
选中语句进行执行或F9
查询常量值:
select 100;select ‘john’;
查询表达式:select 100*98;
查询函数:select version();
起别名
如果查询的字段有重名的情况,使用别名可以区分开来
语法格式
select 字段名 as 别名 from tablename as 别名;
select 字段名 别名 from tablename as 别名;
如果别名有特殊符号要加双引号:
select salary as “out put” from employees;
去重
查询员工表中涉及到的所有部门编号:select distinct department_id from employees;
去重这里有一个重点?distinct只能放在所有字段前,起到对所有字段联合去重的作用。举个例子说明一下。
select distinct name,age from student;
原表如下:
---------------------------------------------------
id | name | age
1 | wang1 | 12
2 | wang2 | 12
3 | wang3 | 16
---------------------------------------------------
最终我们执行完语句后,得出的结果仍是3条结果,原因是因为,distinct先按照 name去重、在此基础上按照age去重,只有当name、age同时不同时该数据才会被保留。
+ 号的作用
两个操作数为数值型,则做加法运算
只要其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算;
如果转换失败,则将字符型数值转换成0
只要其中一方为null,则结果肯定为null
使用concat连接字符串:
查询员工的名和姓连接成一个字段,并显示为姓名:select concat(last_name,first_name) as 姓名 from employees;
ifnull函数检测是否为null,如果为null,则返回指定的值,否则返回原本的值:
select ifnull(commission_pct, 0) as 奖金率, commission_pct from employees;
isnull函数判断某字段或表达式是否为null,如果是,则返回1,否则返回0
5 条件查询
语法:select 查询列表 from 表明 where 筛选条件;
按条件表达式筛选
条件运算符:
> <
= !=
<> >=
<=
按逻辑表达式筛选
主要作用:用于连接条件表达式
逻辑运算符
&& || !
and or not
模糊查询
like
一般和通配符搭配使用,可以判断字符型数值或数值型。
通配符
% 任意多个字符,包含0个字符
_ 任意单个字符
between and
-
使用between and可以提高语句的简洁度;
-
包含临界值;
-
两个临界值不能替换顺序;
in
-
含义:判断某字段的值是否属于in列表中的某一项
-
使用in提高语句简洁度
-
in列表的值类型必须一致或兼容
-
in相当于等于,所以不支持通配符(like才支持)
is null
-
用于判断null值
-
=或者<>不能用于判断null值
安全等于 <=>
- is null:仅仅可以判断null值,可读性较高
- <=>:既可以判断null值,又可以判断普通的数值,可读性较低
6 排序查询
语法
select 查询列表 from 表【where 筛选条件】 order by 排序列表 【asc|desc】
注意事项
asc代表的是升序,desc代表的是降序,如果不写,默认是升序
order by子句中可以支持单个字段、多个字段、表达式、函数、别名
order by子句一般是放在查询语句的最后面,但limit子句除外
7 常见函数
分类
- 单行函数:如concat、length、ifnull等
- 分组函数:做统计使用,又称为统计函数、聚合函数、组函数。
单行函数
字符函数
length
获取参数值的字节个数
concat
拼接字符串
upper/lower
将字符串变成大写/小写
substr/substring
截取字符串
substr(字符串,索引)
substr(字符串,索引,指定长度)
索引从1开始
trim
去掉字符串前后的空格或子串
lpad
用指定的字符实现左填充指定长度(了解)
rpad
用指定的字符实现右填充指定长度(了解)
replace
替换,替换所有的子串
数学函数
round
四舍五入
ceil
向上取整,返回>=该参数的最小整数
floor
向下取整,返回<=该参数的最大整数
truncate
截断,小数点后截断到几位
mod
取余,被除数为正,则为正;被除数为负,则为负
rand
获取随机数,返回0-1之间的小数
日期函数
now(重点)
返回当前系统日期+时间
curdate
返回当前系统日期,不包含时间
curtime
返回当前时间,不包含日期
可以获取指定的部分,年、月、日、小时、分钟、秒
str_to_date(重点)
将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('1998-3-2', '%Y/%c/%d') AS output ;
date_format(重点)
将日期转换成字符串
SELECT DATE_FORMAT(NOW(), '%y年%m月%d日)') AS output ;
datediff
返回两个日期相差的天数
monthname
以英文形式返回月
8 流程控制函数
标签:字符,null,函数,查询,DQL,查询语言,第二章,select,name 来源: https://blog.csdn.net/wqj_710852747/article/details/116517715