show status用于显示服务器状态信息
show grants显示授予用户的安全权限。
show errors和show warnings用来显示服务器错误或者警告信息。
为了区别limit 3,4的含义是从行4开始的3行还是从行3开始的4行,这个容易把人搞糊涂,出于这个原因,MySql 5支持如下的语法:
limit 4 offset 3
等价于limit 3,4
在like语句中,是不区分大小写的。
如果要搜索的字符后面含有空格,使用like ‘%keyword’ 是匹配不到keyword
的。
like ‘%’也不能匹配null
至3.23.4后,正则表达式不区分大小写,如果要区分大小写,可使用BINARY关键字
如:
where pro_name regexp binary 'keyword'
针对特殊字符,如.、-
需要使用\\
为前导,\\-
表示-
,\\.
表示.
匹配字符类:常用的有如下
定位元字符:
[[:<:]]
表示词的开始
[[:>:]]
表示词的结尾
可以在不使用数据表的情况下验证正则表达式。
regexp检查如果没有匹配将返回0,如果匹配将返回1.
如下:
SELECT 'hello123' REGEXP '[[:digit:]]'
将返回1,表示匹配。
oracle使用||
来实现拼接,Mysql则使用concat()
函数来实现。
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实现了此,挺不错的。
SELECT COUNT(*) AS num,sex FROM user1 GROUP BY sex WITH ROLLUP
在用union组合查询的时候,只能使用一条order by 子句,他必须出现在最后一条select语句后。
如果数据检索是最重要的,则可以在insert 和into 之间添加关键词low_priority,指示mysql降低insert语句的优先级,如下所示:
insert low_priority into ...
使用一个引擎的表不能引用具有使用不同引擎的表的外键。
视图不能索引,也不能有关联的触发器或默认值。
在创建存储过程的时候如果使用comment注释,可以在show procedure status
中查看到,这样可查看到所有的存储过程,也可以使用like 指定一个过滤模式,如:
show procedure status like 'ordertotal';
如果要查看创建语句,使用:
show create procedure ordertotal;
如果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;
重新命名一个用户账号,使用rename user to语法
rename user ben to bforta;
删除用户
drop user bforta;
grant和revoke可以在几个层次上控制访问权限。
整个服务器,使用grant all和revoke all
整个数据库,使用on database.*
特定的表,使用on database.table
特定的列
特定的存储过程。
更改口令
set password for bforta = password('newpasswd');
设置自己的口令
set password = password('newpasswd');
1、使用命令行mysqldump转储所有数据库内容到某个外部文件。
2、使用命令行mysqlhotcopy从一个数据库复制所有数据(并非所有数据库引擎都支持这个应用程序。)
3、使用mysql的backup table或select into outfile转储所有数据到某个外部文件。这两条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用restore table 来复原。
1、analyze table,用来检查表键是否正确。
如:
analyze table orders;
2、check table 用来针对许多问题对表进行检查。
举例:
check table orders;
如果从一个表中删除大量的数据,应该使用optimize table
来收回所用的空间,从而优化表的性能。