MySQL-4

前言

对MySQL概念常用命令的总结第四部分:
字符集和校对
用户管理
更好的使用MySQL
MySQL常用的数据类型

字符集和校对

字符集:为字母和符号的集合。不同语言是用不同的字符集。
编码:某个字符集成员的内部表示。
校对:规定字符如何比较,用于排序。

服务器、数据库、表都可以选择使用哪种字符集和校对。

SHOW CHARACTER SET查看所有可用字符集及其默认校对。
SHOW COLLATIONS查看所有可用校对和适用的字符集。_cs区分大小写_ci不区分大小写。
确定所用的字符集和校对。
SHOW VARIABLES LIKE 'character%'
SHOW VARIABLES LIKE 'collation%'
对一个表使用指定的字符集和校对:

1
2
3
4
5
CREATE TABLE ..
(
...
)DEFAULT CHARACTER SET hebrew
COLLATE hebrew_general_ci;

不指定COLLATE则用默认校对,不指定字符集则用数据库的默认字符集。
也可在创建表的时候对某一列指定字符集和校对。也可在ORDER BY、GROUP BY中用COLLATE指定校对。

用户管理

不同的用户账号可能需要分配不同的读写权限。MySQL Administrator软件提供了图形界面来进行账号权限管理。
安装时创建的root用户拥有最高权限。一般不用。
用户信息都在mysql这个系统数据库中,可以修改它完成用户创建和删除、修改,但一般不对它修改,而是通过指令间接修改它(更安全)。一般会用它是获得用户列表(user表、user列)。

CREATE USER 用户名 IDENTIFIED BY '明文密码';
密码可不在这里给出,在后面再设。密码以明文给出,但在user表中是加密的。

RENAME USER 用户名 TO 新用户名重命名用户。

DROP USER 用户名删除用户账号。

一开始创建完的用户没有任何权限,不能访问任何数据库,只能登录上来。
SHOW GRANTS FOR 用户名查看用户账号的权限。
不指定主机名时认为是默认主机名,用%表示,否则应该是'用户名'@'主机名'

GRANT SELECT,INSERT ON crashcourse.* TO 用户给用户授予对crashcourse数据库中所有表的读权限和插入权限。
REVOKE SELECT ON ... FROM 用户取消读权限。
GRANT/REVOKE ALL赋予/取消所有权限
ON后面可以是:

  • *.*所有数据库所有表
  • database.*某数据库中的所有表
  • datebase.table特定表
  • 特定列
  • 特定存储过程

更改口令:
SET PASSWORD FOR 用户名=Password('明文密码')不指定用户名则设置当前用户的密码。

更好的使用MySQL

HELP ..获取帮助

SHOW VARIABLES SHOW STATUS查看一些默认设置

存储过程要比逐条执行MySQL语句效率高。

MySQL是多线程,用SHOW PROCESSLIST来查看进程的状态。

尽量不要用SELECT *

导入、插入数据时,最好关闭自动提交,甚至删除索引(索引会降低插入效率),之后再重建索引。

WHERE返回结果用时太长,就要考虑这列作为索引。

一系列OR最好用UNION代替

LIKE很慢,用FULLTEXT

1
2
ALTER TABLE 表名
ADD (UNIQUE) INDEX 索引名(列名1,列名2...)

UNIQUE关键字可选,保证字段记录值唯一。

MySQL的默认端口号为3306。

Navicat是一个轻量级的可视化数据管理工具。

可以使用脚本来完成一系列SQL语句。脚本为.sql文件。执行前要注意选择的数据库是否正确。之后用
source 脚本绝对路径来执行脚本。

CREATE/DROP DATABASE 数据库名称创建/删除数据库。

MySQL常用的数据类型

字符串数据类型

定长:CHAR,创建时必须指定长度CHAR(1~255),否则默认为CHAR(1)
变长:TEXT,最大64K长度
串值必须用引号括起来。

数值型

整数:INT
长整数:BIGINT
布尔型:BOOLEAN或BOOL
双精度浮点:DOUBLE
单精度浮点:FLOAT
货币一般用:DECIMAL(8,2)

二进制类型

二进制数据可以存储任何数据,包括文本、图像、音频…
BLOB:最大长度64KB

您的支持是我创造源源不断地动力