4)条件判断函数
4.1. IF(expr,v1,v2)函数中,如果表达式expr成立,返回结果v1;否则返回结果v2
SELECT id,grade,IF(grade>=60,'PASS','FAIL') FROM T6;
4.2. IFNULL(v1,v2)函数中,如果v1的值不为空,就显示v1的值;否则就显示v2的值。
SELECT id,IFNULL(grade,'NO GRADE') FROM T6;
4.3. CASE函数:
例1CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2...][ELSE vn] END
例2CASE expr WHEN e1 THEN v1 [WHEN e2 THEN v2...] [ELSE vn] END
5)系统信息函数
5.1. VERSION()函数返回数据库的版本号;CONNECTION_ID()函数返回服务器的连接数,也就是到现在为止MySQL服务的连接次数;DATEBASE()和SCHEMA()返回当前数据库名
5.2. USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER和CURRENT_USER这几个函数可以返回当前用户的名称
5.3. CHAREST(str)函数返回字符串str的字符集,一般情况这个字符集就是系统的默认字符集;COLLATION(str)函数返回字符串str的字符排列方式
5.4. LAST_INSERT_ID()函数返回最后生成的AUTO_INCREMENT值
6)加密函数
6.1. PASSWORD(str)函数可以对字符串str进行加密,主要用于给用户的密码加密
mysql>SELECT PASSWORD('abcd');
6.2. MD5(str)函数可以对字符串str进行加密,主要用于对普通的数据进行加密
mysql>SELECT MD5('abcd');
6.3. ENCODE(str,pswd_str)函数可以使用字符串pswd_str来加密字符串str。加密的结果是一个二进制数,必须使用BLOB类型的字段来保存它
6.4. EDCODE(crypt_str,pswd_str)函数可以使用字符串pswd_str来为crypt_str解密。crypt_str是通过ENCODE(str,pswd_str)加密后的二进制数据
7)其它函数
7.1. 格式化函数FORMAT(x,n),可以将数字x进行格式化,保留到小数点后n位
7.2. ASCII(s)返回字符串s的第一个字符的ASCII码;BIN(x)返回x的二进制编码;HEX(x)返回x的十六进制编码;OCT(x)返回x的八进制编码;CONV(x,f1,f2)将x从f1进制数变成f2进制数
7.3. INET_ATON(IP)函数可以将IP地址转换为数字表示;INET_NTOA(n)函数可以将数字n转换成IP的形式。其中INET_ATON(IP)函数中IP值需要加上引号
7.4. GET_LOCT(name,time)函数定义一个名称name、持续时间为time秒的锁,如果锁定成功,返回1;如果尝试超时,返回0;如果遇到错误,返回NULL。RELEASE_LOCK(name)函数解除名称为name的锁,如果解锁成功,返回1;如果尝试超时,返回0;如果解锁失败,返回NULL。IS_FREE_LOCK(name)函数判断是否使用名称为name的锁,如果使用,返回0;否则,返回1
7.5. BENCHMARK(count,expr)函数将表达式expr重复实行count次,然后返回执行时间。该函数可以用来判断MySQL处理表达式的速度
7.6. CONVERT(s USING cs)函数将字符串s的字符集变成cs
例将字符串“ABC”的字符集变成gbk
CONVERT('ABC' USING gbk);
7.7. CAST(x AS type)和CONVERT(x,type)这两个函数将x变成type类型
8)MySQL用户管理
8.1. user表:可以使用DESC语句来查看user表的基本结构,user表有39各字段。这些字段大致分为四类,分别是用户列、权限列、安全列、资源控制列
8.2. db表和host表:db表中存储了某个用户对一个数据库的权限,字段是用户列和权限列
8.3. tables_priv表可以对单个表进行权限设置,columns_priv表可以对单个数据列进行权限设置
8.4. procs_priv表可以存储过程和存储函数进行权限设置
9)账户管理
9.1. 用户可以通过mysql命令来登陆MySQL服务器
9.2. 在MySQL数据库中,可以使用CREATE USER语句来创建新的用户,也可以直接在mysql.user表中添加用户,还可以使用GRANT语句来新建用户
9.3. 用DROP USER语句或DELETE语句来删除普通用户
9.4. 使用mysqladmin命令来修改root用户的密码,或修改mysql数据库下的user表,或使用SET语句来修改root用户的密码
9.5. root用户登陆MySQL服务器后,可以通过SET语句、修改uesr表和GRANT语句来修改普通用户的密码
9.6. 普通用户修改自己的密码
SET PASSWORD=PASSWORD('new_password');
9.7. root用户密码丢失后按步骤执行:使用--skip-grant-tables选项启动MySQL服务//登陆root用户,并且设置新的密码//加载权限表
10)权限管理
10.1.MySQL中使用GRANT关键字来为用户设置权限,注:必须拥有GRANT权限的用户才可以执行GRANT语句
10.2.MySQL中使用REVOKE关键字来收回权限
10.3.MySQL中可以使用SELECT语句来查询user表中各用户的权限,也可以直接使用SHOW GRANTS语句来查看权限
11)数据备份与还原
11.1.mysqldump命令可以将数据库中的数据备份成一个文本文件
11.2.管理员通常使用mysqldump命令将数据库中的数据备份成一个文本文件,通常这个文件的后缀名是sql。备份文件中通常包含CREATE语句和INSERT语句。通过CREATE语句来创建数据库和表,通过INSERT语句来插入备份的数据。
mysql -u root -p [dbname] < backup.sql
12)表的导出和导入
12.1.使用SELECT...INTO OUTFILE语句将表的内容导出成一个文本文件
SELECT [列名] FROM table[WHERE语句]
INTO OUTFILE'目标文件'[OPTION];
12.2. 使用LOAD DATA INFILE命令将文本文件导入到MySQL数据库中
LOAD DATA [LOCAL] INFILE file INTO TABLE table [OPTION];
13)MySQL日志
13.1.二进制日志,也叫作变更日志(update log),主要用于记录数据库的变化情况
查看二进制日志,使用mysqlbinlog命令
mysqlbinlog filename.number
13.2.二进制日志记录了用户对数据库中数据的改变。如INSERT语句、UPDATE语句、CREATE语句等都会记录到二进制日志中。一旦数据库遭到破坏,可以使用二进制日志来还原数据库
mysqlbinlog filename.number | mysql -u root -p
13.3.错误日志主要用来记录MySQL服务的开启、关闭和错误信息
13.4.通用查询日志用来记录用户的所有操作,包括启动和关闭MySQL服务、更新语句、查询语句等
13.5.慢查询日志用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以查找处哪些查询语句的执行效率很低,以便进行优化
4.1. IF(expr,v1,v2)函数中,如果表达式expr成立,返回结果v1;否则返回结果v2
SELECT id,grade,IF(grade>=60,'PASS','FAIL') FROM T6;
4.2. IFNULL(v1,v2)函数中,如果v1的值不为空,就显示v1的值;否则就显示v2的值。
SELECT id,IFNULL(grade,'NO GRADE') FROM T6;
4.3. CASE函数:
例1CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2...][ELSE vn] END
例2CASE expr WHEN e1 THEN v1 [WHEN e2 THEN v2...] [ELSE vn] END
5)系统信息函数
5.1. VERSION()函数返回数据库的版本号;CONNECTION_ID()函数返回服务器的连接数,也就是到现在为止MySQL服务的连接次数;DATEBASE()和SCHEMA()返回当前数据库名
5.2. USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER和CURRENT_USER这几个函数可以返回当前用户的名称
5.3. CHAREST(str)函数返回字符串str的字符集,一般情况这个字符集就是系统的默认字符集;COLLATION(str)函数返回字符串str的字符排列方式
5.4. LAST_INSERT_ID()函数返回最后生成的AUTO_INCREMENT值
6)加密函数
6.1. PASSWORD(str)函数可以对字符串str进行加密,主要用于给用户的密码加密
mysql>SELECT PASSWORD('abcd');
6.2. MD5(str)函数可以对字符串str进行加密,主要用于对普通的数据进行加密
mysql>SELECT MD5('abcd');
6.3. ENCODE(str,pswd_str)函数可以使用字符串pswd_str来加密字符串str。加密的结果是一个二进制数,必须使用BLOB类型的字段来保存它
6.4. EDCODE(crypt_str,pswd_str)函数可以使用字符串pswd_str来为crypt_str解密。crypt_str是通过ENCODE(str,pswd_str)加密后的二进制数据
7)其它函数
7.1. 格式化函数FORMAT(x,n),可以将数字x进行格式化,保留到小数点后n位
7.2. ASCII(s)返回字符串s的第一个字符的ASCII码;BIN(x)返回x的二进制编码;HEX(x)返回x的十六进制编码;OCT(x)返回x的八进制编码;CONV(x,f1,f2)将x从f1进制数变成f2进制数
7.3. INET_ATON(IP)函数可以将IP地址转换为数字表示;INET_NTOA(n)函数可以将数字n转换成IP的形式。其中INET_ATON(IP)函数中IP值需要加上引号
7.4. GET_LOCT(name,time)函数定义一个名称name、持续时间为time秒的锁,如果锁定成功,返回1;如果尝试超时,返回0;如果遇到错误,返回NULL。RELEASE_LOCK(name)函数解除名称为name的锁,如果解锁成功,返回1;如果尝试超时,返回0;如果解锁失败,返回NULL。IS_FREE_LOCK(name)函数判断是否使用名称为name的锁,如果使用,返回0;否则,返回1
7.5. BENCHMARK(count,expr)函数将表达式expr重复实行count次,然后返回执行时间。该函数可以用来判断MySQL处理表达式的速度
7.6. CONVERT(s USING cs)函数将字符串s的字符集变成cs
例将字符串“ABC”的字符集变成gbk
CONVERT('ABC' USING gbk);
7.7. CAST(x AS type)和CONVERT(x,type)这两个函数将x变成type类型
8)MySQL用户管理
8.1. user表:可以使用DESC语句来查看user表的基本结构,user表有39各字段。这些字段大致分为四类,分别是用户列、权限列、安全列、资源控制列
8.2. db表和host表:db表中存储了某个用户对一个数据库的权限,字段是用户列和权限列
8.3. tables_priv表可以对单个表进行权限设置,columns_priv表可以对单个数据列进行权限设置
8.4. procs_priv表可以存储过程和存储函数进行权限设置
9)账户管理
9.1. 用户可以通过mysql命令来登陆MySQL服务器
9.2. 在MySQL数据库中,可以使用CREATE USER语句来创建新的用户,也可以直接在mysql.user表中添加用户,还可以使用GRANT语句来新建用户
9.3. 用DROP USER语句或DELETE语句来删除普通用户
9.4. 使用mysqladmin命令来修改root用户的密码,或修改mysql数据库下的user表,或使用SET语句来修改root用户的密码
9.5. root用户登陆MySQL服务器后,可以通过SET语句、修改uesr表和GRANT语句来修改普通用户的密码
9.6. 普通用户修改自己的密码
SET PASSWORD=PASSWORD('new_password');
9.7. root用户密码丢失后按步骤执行:使用--skip-grant-tables选项启动MySQL服务//登陆root用户,并且设置新的密码//加载权限表
10)权限管理
10.1.MySQL中使用GRANT关键字来为用户设置权限,注:必须拥有GRANT权限的用户才可以执行GRANT语句
10.2.MySQL中使用REVOKE关键字来收回权限
10.3.MySQL中可以使用SELECT语句来查询user表中各用户的权限,也可以直接使用SHOW GRANTS语句来查看权限
11)数据备份与还原
11.1.mysqldump命令可以将数据库中的数据备份成一个文本文件
11.2.管理员通常使用mysqldump命令将数据库中的数据备份成一个文本文件,通常这个文件的后缀名是sql。备份文件中通常包含CREATE语句和INSERT语句。通过CREATE语句来创建数据库和表,通过INSERT语句来插入备份的数据。
mysql -u root -p [dbname] < backup.sql
12)表的导出和导入
12.1.使用SELECT...INTO OUTFILE语句将表的内容导出成一个文本文件
SELECT [列名] FROM table[WHERE语句]
INTO OUTFILE'目标文件'[OPTION];
12.2. 使用LOAD DATA INFILE命令将文本文件导入到MySQL数据库中
LOAD DATA [LOCAL] INFILE file INTO TABLE table [OPTION];
13)MySQL日志
13.1.二进制日志,也叫作变更日志(update log),主要用于记录数据库的变化情况
查看二进制日志,使用mysqlbinlog命令
mysqlbinlog filename.number
13.2.二进制日志记录了用户对数据库中数据的改变。如INSERT语句、UPDATE语句、CREATE语句等都会记录到二进制日志中。一旦数据库遭到破坏,可以使用二进制日志来还原数据库
mysqlbinlog filename.number | mysql -u root -p
13.3.错误日志主要用来记录MySQL服务的开启、关闭和错误信息
13.4.通用查询日志用来记录用户的所有操作,包括启动和关闭MySQL服务、更新语句、查询语句等
13.5.慢查询日志用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以查找处哪些查询语句的执行效率很低,以便进行优化