整理Mysql常用语句(四)
Mysql 内置函数
拼接12, 34,'ab'
select concat(12, 34,'ab');
计算字符串'abc' 的长度
select length('abc');
-- 内置函数可以在where 后面使用
截取字符串 left()、 right()
-- 从左往右切 我和你
select left('我和你abc',3);
-- 从右往左 abc
select right('我和你abc',3);
substring(str,start, len)
-- 定位截取 '你ab'
select right('我和你abc',3,3);
ltrim() 去除字符串左边空格
select ltrim(' abc');
rtrim() 去除字符串右边空格
select rtrim(' abc ')
trim() 去除两侧
round(n, d) 四舍五入,n数字,b保留小数点位数,默认保留整数
current_date() 反回系统当前日期
current_time() 反回系统当前时间
now() 反回系统当前日期时间
二、 存储过程
语法:
create procedure 存储过程名称(参数列表)
begin
sql 语句
end
-- 创建存储过程 stu(), 查询 students 表索引学生信息
create procedure stu()
begin
select * from students;
end
-- 调用存储过程stu
call stu();
-- 删除
drop procedure if exists stu;
视图
将查询的结果封装
-- 语法
create view stu_nan as
select * from students where sex='男';
select * from stu_nan inner join scores
on stu_nan.studentNo = score.studentNo;
-- 删除
drop view stu_nan;
drop view if exists stu_nanl;
事务
所谓事务,他是一个操作序列,这些操作要么都执行,要么都步执行,他是一个不可分割的工作单位。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
开始事务 begin
回滚事务 rollback
提交事务 commit (表的修改生效)
-- 开启事务,删除students 表中studentNo 为001 的记录,
-- 同时删除socre 表中studentNo 为001 的记录,
begin;
delete from students where studentNo = '001';
delete from score where studentNo = '001';
commit;
-- 回滚事务, 两表的数据同时放弃更改
rollback;
如果开始一个事务,执行了begin之后,没有rollback没有commit,中间系统出现了问题导致中断,默认执行rollback。
没有begin 代表没有事务,sql语句都是实时生效的
索引
目的是加快select 查询的速度
创建索引
-- 语法
create index 索引名称 on 表名(字段名称(长度));
-- 给students 的age 字段创建索引, 名为age_index
create index age_index on students(age);
-- where 条件后面的字段,数据库系统会自动查找是否有索引
-- 这里会自动调用age_index;
select * from sudents where age =30;
查看索引
show index from students;
删除索引
drop age_index on students;
优缺点
优:
提高select 的速度
缺点:
insert、update、delete 降低速度
Mysql 的命令行
mysql -h 0.0.0.0 -u root -p
浙公网安备 33010602011771号