mysql基础
-
查询去重(distinct)
select distinct xx from xx;
例子:
SELECT DISTINCT user_type FROM sys_user; -
+号的作用(运算符)
select 100+90; // 结果:190 select '1234'+89; //结果:1323 select 'car'+ 11; //结果:11, 如果转换失败,字符会转换成0 select null +null; //结果: null ,一方为null,结果为null -
字符串拼接 concat(str1,str2,…)
案例:将用户名和用户类型拼接
SELECT CONCAT(user_name,user_type) FROM sys_user; -
条件查询(select … from… where…)
-
条件表达式(< > = != <> >= <=)
示例1:SELECT * FROM sys_menu WHERE menu_id> 100 示例2:SELECT * FROM sys_menu WHERE menu_id> 100 and menu_id<105 -
逻辑表达式(&& || ! and or not)
示例:SELECT * FROM sys_menu WHERE parent_id = 0 and menu_id<105 -
模糊查询
-
like(搭配通配符[%【任意多个字符】,_【任意单个字符】])
示例:SELECT * FROM sys_menu WHERE menu_name like '%系统%' -
between and
示例:SELECT * FROM sys_menu WHERE menu_id BETWEEN 1 AND 105 -
in
示例:SELECT * FROM sys_menu WHERE menu_name in ('系统管理','系统监控'); -
is null
示例:SELECT * FROM sys_menu WHERE component is null;
-
-
-
安全等于:<=> 可以判断null
示例:SELECT * FROM sys_menu WHERE component <=> null; -
排序查询(支持多字段,表达式,别名,函数)
语法
select 查询列表 from 表 where xxx order by 【asc|desc】
示例:
SELECT * FROM sys_menu ORDER BY menu_id DESC; -
常见函数
-
单行函数
-
字符函数
length()
concat(sr1,sr2,…)
upper()
lower()
substr,substring
instr
trim
lpad (左填充)
rpad(右填充)
replace
-
数学函数
- round 四舍五入
- ceil 向上取整
- floor 向下取整
- truncate 截断
- mod 取余
-
日期函数
- now 返回当前系统日期 时间
- curdate 日期
- curtime 时间
- year,month,date…
- str_to_date
- date_format
-
其他函数
version()
user()
-
流程控制函数
-
if(表达式,真,假)
-
case
1语法:case 表达式
when 常量 then 表达式或语句
2语法: case
when 条件 then 表达式或语句
-
-
-
分组函数(聚合函数)
- sum
- avg
- max
- min
- count
-
算法挑战:
一个数异或上0值不变
-
-
分组函数可以搭配 dinstinct
-
分组查询:
-
语法
select 列 from 表
where
group by order by
-
示例:
统计菜单中不同类型的菜单数目:
SELECT COUNT(menu_type) as num,menu_type FROM sys_menu GROUP BY menu_type ORDER BY num ASC; -
示例:
统计菜单中不同类型的菜单中含有"管理"的菜单数目:
SELECT COUNT(menu_type) as num,menu_type FROM sys_menu WHERE menu_name LIKE '%管理%' GROUP BY menu_type ORDER BY num ASC; -
示例 :
统计菜单中不同类型的菜单的菜单数目大于5:
SELECT COUNT(menu_type) as num,menu_type FROM sys_menu WHERE menu_name LIKE '%管理%' GROUP BY menu_type HAVING num > 5; -
按表达式或函数分组
统计菜单中的菜单长度的种类:
SELECT length(path) as num FROM sys_menu WHERE menu_name LIKE '%管理%' GROUP BY num; -
按多个字段分组
示例:略
-
支持排序
-
-
连接查询
-
笛卡尔积
略
-
sql92
支持内连接
-
等值连接
SELECT sys_user.user_name,sys_role.role_name from sys_user,sys_role WHERE sys_user.user_id = sys_role.role_id; -
非等值连接
-
自连接
-
-
sql99
-
语法:select 列 from 表 [连接类型]
join 表
on 连接条件
where
-
内连接 inner
-
外连接
- 左外 left
- 右外 right
- 全连接 full
-
交叉连接 cross
-
-
-
子查询
- 标量子查询
- 列子查询
- 行子查询
-
分页查询 limit
SELECT * FROM sys_menu LIMIT 3, 5; -
联合查询union
-
DML
-
插入语句(insert)
insert into 表(列) values(值);
示例:INSERT INTO forum_user(id,name,password) VALUES('x','xia','admin');insert into 表 set 列=值
INSERT INTO forum_user set id='y',name='y',password= 'u'; -
修改语句
update 表 set 列=值 where
-
删除语句
-
delete from 表 where
-
truncate table 表 (不能回滚)
-
-
-
DDL
-
库的管理
- 创建:create database 库名;
- 修改: rename database 库名 to 新
- 删除:drop database
-
表的管理
-
创建: create table 表 (
列 类型 长度 约束
)
-
修改:
- 修改列名: alter table 表 change column 列名 新 类型;
- 修改类型: alter table 表 modify column 列 类型;
- 添加列:alter table 表 add column 列 类型;
- 删除:alter table 表 drop column 列 类型;
- 修改表名: alter table 表rename to 表名;
-
删除: drop table 表;
-
常见约束:not null,primary key,default,unique,check,foreign key
-
-
-
标识列(自增长列)
-
事务
-
视图
- create view as 视图名 查询语句
- 修改:create or replace view 视图名;alter view 视图名
- 删除: drop view 视图名
-
变量
-
系统变量
-
全局变量
查看:show clobal variables;
-
会话变量
-
-
用户变量
声明:
set @变量名 = 值
set @变量名:=
select @变量名:=
局部变量:
声明:DECLEARE 变量名 类型;
-
-
存储过程和函数
- 存储过程
-
含义:一组预先编译好的SQL语句集合,理解成批处理语句;
-
创建: create procedure 存储过程名(参数列表)begin 语句 end
-
参数模式:
- in 输入
- out 输出
- inout 输入or输出
-
调用 call 存储名(参数)
-
删除:drop procedure 存储过程名
-
函数
-
语法: create function 函数名 (参数) returns 返回类型
begin
语句
end
-
调用: select 函数
-
查看: show create function 函数名
-
删除: drop function 函数名
-
-
流程控制结构:
-
分支结构
-
if函数 if(表达式,表达式,。。。)
-
case
case 变量|表达式|字段
when 值 then 返回的值或语句
。。。
else
end case
case
when 条件 then 值
。。。
else
end case
-
-
循环(while,loop,repeat)
-
-
MySQL高级
-

浙公网安备 33010602011771号