Mysql

发布时间 2023-10-04 20:33:35作者: chuangzhou

命令行

select database();   --查看当前的使用的数据库
use student; -- 选择一个数据库
show tables; --查询当前数据库有哪些表


mysql> desc `order`;  -- 查看表结构
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| order_no     | varchar(20)  | NO   | UNI | NULL    |                |
| user_id      | int(11)      | NO   | MUL | NULL    |                |
| delete_time  | int(11)      | YES  |     | NULL    |                |
| create_time  | int(11)      | YES  |     | NULL    |                |
| total_price  | decimal(6,2) | NO   |     | NULL    |                |
| status       | tinyint(4)   | NO   |     | 1       |                |
| snap_img     | varchar(255) | YES  |     | NULL    |                |
| snap_name    | varchar(80)  | YES  |     | NULL    |                |
| total_count  | int(11)      | NO   |     | 0       |                |
| update_time  | int(11)      | YES  |     | NULL    |                |
| snap_items   | text         | YES  |     | NULL    |                |
| snap_address | varchar(500) | YES  |     | NULL    |                |
| prepay_id    | varchar(100) | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
14 rows in set (0.00 sec)

show create table `order`;  # 查询创建表时的sql语句



# 加载sql文件:
# 方式一:
source xxx.sql
# 方式二,  school为database:
mysql -uroot -p123456 school < student.sql

DQL 执行顺序

验证1:

SELECT name,age myAge from emp  where myAge > 15 order by age asc;

执行失败:

select 对 age 起别名,但是where 子句 识别不到age的别名

SELECT name,age myAge from emp  where age > 15 order by myAge asc;

执行成功:

order by 子句可以识别到select 子句 age的别名,说明 select 的执行顺序在 where 子句 后 order by 子句前

函数

字符串函数

案例:企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如: 1号员工的工号应该为00001

update emp set workno = LPAD(workno,5,'0');

效果:

需要注意的是workno 需要是varchar类型

数值函数

案例:通过数据库的函数,生成一个6位随机验证码

# 生成一个0-1的随机数
SELECT rand();

# rand() * 1000000 夸大10000000 倍,保留0位小数
SELECT round(rand()*1000000,0);

# 不够6位左补0
SELECT LPAD(round(rand()*1000000,0),6,'0');

日期函数

案例:查询所有员工的入职天数,并根据入职天数倒序排序

select name, DATEDIFF(CURDATE(),entrydate) AS join_days from emp order by join_days desc;

结果:

流程函数

第三个函数案例:成绩表各门成绩>=85,展示优秀;>=60 展示及格;否则展示不及格

SELECT
	id,
	NAME,
	(
		CASE
		WHEN math >= 85 THEN
			'优秀'
		WHEN math>= 60 THEN
			'及格'
		ELSE
			'不及格'
		END
	) '数学',
	(
		CASE
		WHEN english >= 85 THEN
			'优秀'
		WHEN english>= 60 THEN
			'及格'
		ELSE
			'不及格'
		END
	) '英语',
	(
		CASE
		WHEN chinese >= 85 THEN
			'优秀'
		WHEN chinese>= 60 THEN
			'及格'
		ELSE
			'不及格'
		END
	) '语文'
FROM
	score;

执行结果:

第四个函数 案例:如果dept_id 等于1,展示开发,如果为2展示测试,其他展示为前端

SELECT 
name,
(case dept_id when 1 then '开发' when 2 then '测试' else '前端' end) '职位' 
from  emp;

执行结果: