你的位置:首页 > 数据库

[数据库]【精粹系列】Mysql精粹


关于Mysql整理的需要记忆和熟练掌握的内容

 

1. /* 查看操作 */ ------------------------------------------------------------------------------------------------------- 1. /* 查看操作 */ 
SHOW PROCESSLIST -- 显示哪些线程正在运行SHOW VARIABLES -- 查看变量



2. /* 数据库操作 */ ------------------------------------------------------------------------------------------------------ 2. /* 数据库操作 */
-- 查看当前数据库  select database();-- 显示当前时间、用户名、数据库版本  select now(), user(), version();

-- 复制表结构  CREATE TABLE 表名 LIKE 要复制的表名-- 复制表结构和数据  CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名



3. /* 字符集编码 */ --------------------------------------------------------------------------------------------------------- 3. /* 字符集编码 */

字符编码-- MySQL、数据库、表、字段均可设置编码-- 数据编码与客户端编码不需一致SHOW VARIABLES LIKE 'character_set_%' -- 查看所有字符集编码项 character_set_client 客户端向服务器发送数据时使用的编码 character_set_results 服务器端将结果返回给客户端所使用的编码 character_set_connection 连接层编码SET 变量名 = 变量值 set character_set_client = gbk; set character_set_results = gbk; set character_set_connection = gbk;SET NAMES GBK; -- 相当于完成以上三个设置


4./* 数据类型(列类型) */ ---------------------------------------------------------------------------------------------------4. /* 数据类型(列类型) */
1) 数值类型
  int      4字节  bigint    8字节
 int(M)  M表示总位数  - 默认存在符号位,unsigned 属性修改  - 显示宽度,如果某个数不够定义字段时设置的位数,则前面以0补填,zerofill 属性修改    例:int(5)  插入一个数'123',补填后为'00123'  - 在满足要求的情况下,越小越好。  - 1表示bool值真,0表示bool值假。MySQL没有布尔类型,通过整型0和1表示。常用tinyint(1)表示布尔型。
2) 字符串类型-- a. char, varchar ----------  char  定长字符串,速度快,但浪费空间  varchar  变长字符串,速度慢,但节省空间  M表示能存储的最大长度,此长度是字符数,非字节数。  不同的编码,所占用的空间不同。  char,最多255个字符,与编码无关。  varchar,最多65535字符,与编码有关。  一条有效记录最大不能超过65535个字节。    utf8 最大为21844个字符,gbk 最大为32766个字符,latin1 最大为65532个字符  varchar 是变长的,需要利用存储空间保存 varchar 的长度,如果数据小于255个字节,则采用一个字节来保存长度,反之需要两个字节来保存。  varchar 的最大有效长度由最大行大小和使用的字符集确定。  最大有效长度是65532字节,因为在varchar存字符串时,第一个字节是空的,不存在任何数据,然后还需两个字节来存放字符串的长度,所以有效长度是64432-1-2=65532字节。  例:若一个表定义为 CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N)) charset=utf8; 问N的最大值是多少? 答:(65535-1-2-4-30*3)/3



5./* 建表规范 */ ------------------------------------------------------------------------------------------------------------------ 5./* 建表规范 */  -- Normal Format, NF    - 每个表保存一个实体信息    - 每个具有一个ID字段作为主键    - ID主键 + 原子表  -- 1NF, 第一范式    字段不能再分,就满足第一范式。  -- 2NF, 第二范式    满足第一范式的前提下,不能出现部分依赖。    消除符合主键就可以避免部分依赖。增加单列关键字。  -- 3NF, 第三范式    满足第二范式的前提下,不能出现传递依赖。    某个字段依赖于主键,而有其他字段依赖于该字段。这就是传递依赖。    将一个实体信息的数据放在一个表内实现。


6./* select 查询语句*/ -------------------------------------------------------------------------------------------------------- 6./* select 查询语句*/
1) having 子句,条件子句  与 where 功能、用法相同,执行时机不同。  where 在开始时执行检测数据,对原数据进行过滤。  having 对筛选出的结果再次进行过滤。  having 字段必须是查询出来的,where 字段必须是数据表存在的。  where 不可以使用字段的别名,having 可以。因为执行WHERE代码时,可能尚未确定列值。  where 不可以使用合计函数。一般需用合计函数才会用 having  SQL标准要求HAVING必须引用GROUP BY子句中的列或用于合计函数中的列。

7./* 备份与还原 */ ------------------------------------------------------------------------------------------------------------- 7./* 备份与还原 */备份,将数据的结构与表内数据保存起来。利用 mysqldump 指令完成。-- 导出1) 导出一张表  mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)2)导出多张表  mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)3)导出所有表  mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)4)导出一个库   mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)可以-w携带备份条件-- 导入1)在登录mysql的情况下:  source 备份文件2)在不登录的情况下  mysql -u用户名 -p密码 库名 < 备份文


8./* 锁表 */  ------------------------------------------------------------------------------------------------------------------ 8./* 锁表 */表锁定只用于防止其它客户端进行不正当地读取和写入MyISAM 支持表锁,InnoDB 支持行锁-- 锁定  LOCK TABLES tbl_name [AS alias]-- 解锁  UNLOCK TABLES

 

9./* 用户和权限管理 */ -------------------------------------------------------------------------------------------------------- 9./* 用户和权限管理 */
用户信息表:mysql.user-- 刷新权限FLUSH PRIVILEGES-- 增加用户CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串)  - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。  - 只能创建用户,不能赋予权限。  - 用户名,注意引号:如 'user_name'@'192.168.1.1'  - 密码也需引号,纯数字密码也要加引号  - 要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD-- 重命名用户RENAME USER old_user TO new_user-- 设置密码SET PASSWORD = PASSWORD('密码')  -- 为当前用户设置密码SET PASSWORD FOR 用户名 = PASSWORD('密码')  -- 为指定用户设置密码-- 删除用户DROP USER 用户名-- 分配权限/添加用户GRANT 权限列表 ON 表名 TO 用户名 [IDENTIFIED BY [PASSWORD] 'password']  - all privileges 表示所有权限  - *.* 表示所有库的所有表  - 库名.表名 表示某库下面的某表-- 查看权限SHOW GRANTS FOR 用户名  -- 查看当前用户权限  SHOW GRANTS; 或 SHOW GRANTS FOR CURRENT_USER; 或 SHOW GRANTS FOR CURRENT_USER();-- 撤消权限REVOKE 权限列表 ON 表名 FROM 用户名REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名  -- 撤销所有权限-- 权限层级-- 要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须用于您正在授予或撤销的权限。全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user  GRANT ALL ON *.*和 REVOKE ALL ON *.*只授予和撤销全局权限。数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host  GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv  GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv  当使用REVOKE时,您必须指定与被授权列相同的列。


 

 




办理日本签证费用出发去日本旅游日本旅游报价到日本旅游团购去日本旅游攻略2015第五届大沙梅花节时间?大沙梅花节门票多少钱? 2015开平到哪儿看梅花?开平看梅花去哪里? 2015世界之窗春节门票多少钱?深圳世界之窗春节门票价格? 重口味风俗 东阳人春天必吃童子蛋(全文) 连州地下河湟川三峡有套票吗?清远连州地下河湟川三峡费用? 泉林度假乐园门票预订?恩平泉林度假乐园在哪预订便宜? 恩平泉林度假乐园评价?泉林度假乐园如何? 恩平泉林度假乐园介绍?泉林度假乐园游玩项目有哪些? 老虎谷暗河漂流门票预订?英西老虎谷暗河漂流订票? 信宜到龙玄峡漂流怎么坐车?信宜龙玄峡漂流景区有直达车吗? 九连山新河漂流好玩吗?河源九连山新河漂流怎么样? 河源连平新河漂流地址?新河漂流自驾游攻略? 台湾自由行开放城市_台湾自由行开放城市第二批名单 苗家男女头上功夫_贵州六枝梭戛苗寨游 庐山东林大佛_江西世界最高阿陀佛像 成都2013元旦春节旅游看点分析_2013年成都周边元旦春节旅游活动 MA04-1204YC Datasheet MA04-1204YC Datasheet MA08-0803BC Datasheet MA08-0803BC Datasheet MA08-0803EC Datasheet MA08-0803EC Datasheet 婺源彩虹桥 婺源彩虹桥 婺源彩虹桥 石象湖在哪里 石象湖在哪里 石象湖在哪里 归元寺怎么走 归元寺怎么走 归元寺怎么走