一、MySQL服务的登录和退出

方式一:通过mysql自带的客户端,只限于root用户

方式二:通过Windows自带的客户端
登录:
mysql【-h主机名 -p端口号】-u用户名 -p密码
退出:
exit或ctrl+c

二、MySQL的常见命令

  1. 查看当前所有的数据库
    SHOW databases;
  2. 打开指定的库
    USE 库名
  3. 查看表格
    SHOW tables;
  4. 查看其他的库所有的表
    SHOW tables FROM 库名;
  5. 创建表
    CREAT tables 表名(
    列名1 列类型1,
    列名2 列类型2,
    。。。。
    列名n 列类型n
    );
  6. 查看表结构
    DESC 表名;
  7. 查看服务器的版本
    方式一:登录到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