一、MySQL服务的登录和退出
方式一:通过mysql自带的客户端,只限于root用户
方式二:通过Windows自带的客户端
登录:
mysql【-h主机名 -p端口号】-u用户名 -p密码
退出:
exit或ctrl+c
二、MySQL的常见命令
- 查看当前所有的数据库
SHOW databases; - 打开指定的库
USE 库名 - 查看表格
SHOW tables; - 查看其他的库所有的表
SHOW tables FROM 库名; - 创建表
CREAT tables 表名(
列名1 列类型1,
列名2 列类型2,
。。。。
列名n 列类型n
); - 查看表结构
DESC 表名; - 查看服务器的版本
方式一:登录到mysql服务端
SELECT version();
方式二:没有登录到mysql服务端
mysql --version
或mysql --V
三、MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名,列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进或换行
4.注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
四、DQL语言的学习
1、基础查询
语法:
SELECT 查询列表 FROM 表名;
特点:
(1)查询列表可以是:表中的字段,常量值,表达式,函数
(2)查询的结果是一个虚拟的表格
1)查询表中的单个字段
SELECT last_name FROM employees;
2)查询表中的多个字段
SELECT last_name, salary, email FROM employees;
3)查询表中所有的字段
SELECT * FROM employees;
4)查询常量值
SELECT 100;
SELECT ‘john’;
注意:字符型和日期型的常量值必须用单引号引起来,数组型不需要
5)查询表达式
SELECT 100%98;
6)查询函数
SELECT VERSION();
7)起别名(便于理解)
方式一:使用AS
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;
8)去重
SELECT DISTINCT department_id FROM employees;
9) +号的作用(仅仅只作运算符)
案例:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT CONCAT(last_name,first_name )AS 姓名 FROM employees;
2、条件查询
语法:
select
查询列表
from
表名
where
筛选条件
分类:
一、按条件表达式筛选
条件运算符:> < = <> >= <=
二、按逻辑表达式筛选
作用:用于连接条件表达式
逻辑运算符:
&& || !
and or not
三、模糊查询
like (1.一般和通配符搭配使用,通配符:% 任意多个字符,包含0个字符 _ 任意单个字符)
例:查询员工名中包含字符a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
between and
例:查询员工编号在100到120 之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120; (包含临界值)
in
含义:判断某字段的值是否属于in列表中的某一项
特点:in列表中的值类型必须一致,不支持通配符
例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN('IT_PROT', 'AD_VP', 'AD_PROES');
is null
=或< , > 不能用于判断null值
is null 或 is not null 可以判断null值
例:查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
<=> 安全等于
<=> 能用于判断null值
<=> 可以判断特定的值,如 <=> 120
3、排序查询
语法:
SELECT
查询列表
FROM
表
【WHERE 筛选条件】
order by 排序列表 【asc | desc 】(一般房子查询语句的最后面,limit子句除外)
order by 后面可以是:
1)、按别名排序
2)、按函数排序
3)、按多个字段排序
4)、按表达式排序
案例:查询员工信息,要求工资从高到低排序
SELECT * FROM employees ORDER BY salary DESC;
4、常见函数
调用:select 函数名(实参列表)【from 表】;
分类:
1)、单行函数 如 concat、length、ifnull 等
2)、分组函数 功能:做统计使用,又称为统计函数、聚合函数、组函数
一、字符函数
1)、length 获取参数值的字节个数
SELECT LENGTH(‘john’) * FROM employees ORDER BY salary DESC;
2)、concat 获取参数值的字节个数
SELECT CONCAT(last_name,‘_’,first_name) FROM employees;
3)、upper 、lower
SELECT UPPER(‘john’);
示例:将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) FROM employees;
4)、substr、substring
注意:索引从1开始
截取从指定索引处后面所有字符
SELECT SUBSTR(‘李莫愁爱上了陆展元’,7) AS out_put;
截取从指定索引处指定字符长度的字符
SELECT SUBSTR(‘李莫愁爱上了陆展元’,1,3) AS out_put;
5)、instr
SELECT INSTR(‘杨不悔爱上了殷六侠’,‘殷六侠’) AS out_put;
# 返回‘殷六侠’在‘杨不悔爱上了殷六侠‘中第一次的启始索引,如果没找到,返回0
6)、trim 去除空格
SELECT TRIM(‘ 张翠山 ’) AS out_put;
# 返回:张翠山
7)、lpad 用指定的字符实现左填充指定长度
SELECT LPAD(‘殷素素’,10, ‘*’) AS out_put;
8)、rpad 用指定的字符实现右填充指定长度
SELECT RPAD(‘殷素素’,12, ‘ab’) AS out_put;
9)、replace 替换(替换全部)
SELECT REPLACE(‘殷素素殷素素殷素素殷素素爱上殷素素’,‘赵敏’,‘周芷若’) AS out_put;
二、数学函数
1)、round四舍五入
SELECT ROUND(1.43);
SELECT ROUND(1.4367, 2);
2)、ceil 向上取整,返回>=该参数的最小整数
SELECT CEIL(1.43); # 2
3)、floor 向下取整,返回<=该参数的最小整数
SELECT FLOOR(1.43); # 1
4)、truncate 截断
SELECT TRUNCATE(1.434355432, 2); # 1.43
5)、mod 取余 (MOD(a,b)= a-a/b*b)
SELECT MOD(10, 3); # 1
三、日期函数
1)、now 返回当前系统日期+时间
SELECT NOW();
2)、curdate 返回当前系统日期,不包含时间
SELECT CURDATE();
3)、curtime 返回当前时间,不包含系统日期
SELECT CURTIME();
4)、可以获取指定的部分,年、月、日、小时、分钟、秒
SELECT YEAR(NOW()) AS 年; 2020
SELECT MONTH(NOW()) AS 月; # 12
SELECT MONTHNAME(NOW()) AS 月; # December
5)、str_to_date 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE(‘1998-3-2’, ‘%Y-%c-%d’);
6)、date_format 将日期转换成字符
SELECT DATE_FORMAT(NOW(), ‘%Y年%m月%日’)AS out_put;
四、其他函数
SELECT VERSION(); # 查询当前版本
SELECT DATABASE(); # 查询当前表
SELECT USER(); # 查询当前用户名
五、流程控制函数
1)、if函数:if else 的效果
SELECT IF(10>5, ‘大’, ‘小’);
2)、case 函数的使用一: switch case 的效果
语法:
case 要判断的字段或表达式
when 常量1 then 要现实的值1或语句1;
when 常量2 then 要显示的值2或语句2;
。。。
else 要显示的值n或语句n;
end
case 函数的使用二: 类似于 多重if
语法:
case
when 条件1 then 要显示的值1或语句1;
when 条件2 then 要显示的值2或语句2;
。。。
else 要显示的值n或语句n;
end