MySql学习笔记

show命令

show status用于显示服务器状态信息
show grants显示授予用户的安全权限。
show errors和show warnings用来显示服务器错误或者警告信息。

limit语句的替换信息

为了区别limit 3,4的含义是从行4开始的3行还是从行3开始的4行,这个容易把人搞糊涂,出于这个原因,MySql 5支持如下的语法:

limit 4 offset 3 等价于limit 3,4

like语句的注意点

在like语句中,是不区分大小写的。
如果要搜索的字符后面含有空格,使用like ‘%keyword’ 是匹配不到keyword 的。

like ‘%’也不能匹配null

mysql中的正则表达式

至3.23.4后,正则表达式不区分大小写,如果要区分大小写,可使用BINARY关键字
如:

where pro_name regexp binary 'keyword'

针对特殊字符,如.、-需要使用\\为前导,\\-表示-\\.表示.

匹配字符类:常用的有如下

这里写图片描述

定位元字符:

[[:<:]] 表示词的开始
[[:>:]] 表示词的结尾

可以在不使用数据表的情况下验证正则表达式。

regexp检查如果没有匹配将返回0,如果匹配将返回1.

如下:

SELECT 'hello123' REGEXP '[[:digit:]]'

将返回1,表示匹配。

字符拼接

oracle使用||来实现拼接,Mysql则使用concat()函数来实现。

mysql函数

left() 返回串左边的字符,调用方式left(‘字符串’,5),取字符串左边5个字符
right() 返回串右边的字符,同理left()
locate() 找出串的一个子串
调用方式:
LOCATE(substr,str)
返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

另一种方式:
LOCATE(substr,str,pos)
返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0 :

soundex() 返回串的soundex值,这个是发音相似,mysql实现了此,挺不错的。

with rollup

针对如下数据,进行数据汇总,在分组之后,列级别上进行统计。
这里写图片描述

SELECT COUNT(*) AS num,sex FROM user1 GROUP BY sex WITH ROLLUP

这里写图片描述

union联合查询的注意点

在用union组合查询的时候,只能使用一条order by 子句,他必须出现在最后一条select语句后。

insert into 优先级问题

如果数据检索是最重要的,则可以在insert 和into 之间添加关键词low_priority,指示mysql降低insert语句的优先级,如下所示:

insert low_priority into ...

存储引擎的问题

使用一个引擎的表不能引用具有使用不同引擎的表的外键。

视图

视图不能索引,也不能有关联的触发器或默认值。

查看存储过程的语句

在创建存储过程的时候如果使用comment注释,可以在show procedure status 中查看到,这样可查看到所有的存储过程,也可以使用like 指定一个过滤模式,如:

show procedure status like 'ordertotal';

如果要查看创建语句,使用:

show create procedure ordertotal;

mysql触发器

如果before触发器失败,则mysql将不执行请求的操作,此外,如果before触发器或语句本身失败,mysql将不执行after触发器(如果有的话)。

使用字符集和校对顺序

SHOW CHARACTER SET

这条语句显示所有可用的字符集及每个字符集的描述和默认校对。

查看所支持校对的完整列表,使用如下语句:

show collation;

为了确定所用的字符集和校对,可以使用如下语句

show variables like 'character%';
show variables like 'collation%';

建表示例:

create table mytable(
    columnn1 int,
    columnn2 varchar(10),
    columnn3 varchar(10) character set latin1 collate latin1_general_ci
)default character set hebrew collate hebrew_general_ci;

校对对order by子句的作用。

select * from customers order by lastname,firstname collate latin1_general_cs;

mysql 权限

重新命名一个用户账号,使用rename user to语法

rename user ben to bforta;

删除用户

drop user bforta;

grant和revoke可以在几个层次上控制访问权限。

整个服务器,使用grant allrevoke all
整个数据库,使用on database.*
特定的表,使用on database.table
特定的列
特定的存储过程。

更改口令

set password for bforta = password('newpasswd');

设置自己的口令

set password = password('newpasswd');

mysql数据库备份方案

1、使用命令行mysqldump转储所有数据库内容到某个外部文件。
2、使用命令行mysqlhotcopy从一个数据库复制所有数据(并非所有数据库引擎都支持这个应用程序。)
3、使用mysql的backup tableselect into outfile转储所有数据到某个外部文件。这两条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用restore table 来复原。

mysql数据库维护

1、analyze table,用来检查表键是否正确。
如:

analyze table orders;

2、check table 用来针对许多问题对表进行检查。
举例:

check table orders;

如果从一个表中删除大量的数据,应该使用optimize table来收回所用的空间,从而优化表的性能。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值