Mysql - 基础

命令行

# 查看当前有哪些数据库
show databases;

# 查看当前的使用的数据库
select database();  

# 使用student数据库
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)

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



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

约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据
目的: 保证数据库中数据的正确、有效性和完整性

分类:

案例需求:

实现SQL:

create table user(
	id int PRIMARY auto_increment comment '主键',
	name VARCHAR(10) not null UNIQUE comment '姓名',
	age int check( age >0 && age <= 120) comment '年龄',
	STATUS CHAR(1) DEFAULT '1' comment '状态',
	gender char(1) comment '性别'
) comment '用户表';

注意:
如果插入的age 不满足条件会报错:

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;

结果:

流程函数

参考if 语句的三种用法:

Lhttps://blog.csdn.net/weixin_45659364/article/details/115468039
第三个函数案例:成绩表各门成绩>=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;

执行结果:

posted @ 2023-10-04 20:29  chuangzhou  阅读(7)  评论(0编辑  收藏  举报