程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql精煉系列(精煉)

Mysql精煉系列(精煉)

編輯:MySQL綜合教程

Mysql精煉系列(精煉)。本站提示廣大學習愛好者:(Mysql精煉系列(精煉))文章只能為提供參考,不一定能成為您想要的結果。以下是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時,您必需指定與被受權列雷同的列。

以上所述是小編給年夜家引見的Mysql精煉系列(精煉),願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved