標籤:actions 它的 nec 變數 character dba rip 完整性 alter
MySQL資料庫以及表的管理
尹正傑
著作權聲明:原創作品,謝絕轉載!否則將追究法律責任。
今天我們探討的話題就是如何使用MySQL做開發,我們營運的主要工作不是去開發SQL的,但儘管如此,我們有可能需要對別人寫出來的複雜SQL語句做效能評估,去分析他們寫的SQL語句是不是足夠高效,如果不是的話,我們還要能夠達到對對方的SQL語句做改寫的能力。所以,我們無需自行去開發SQL,但是我們一定要有一個看懂別人寫的SQL的能力喲!
一.DBA的職責1.開發DBA: 負責資料庫設計(E-R關係圖)、sql開發、內建函數、儲存曆程(預存程序和儲存函數)、觸發器、時間調度器(event scheduler)2.管理DBA: 負責安裝、升級、備份、恢複、使用者管理、許可權管理、監控、分析、基準測試,語句最佳化(SQL語句)、資料字典,按需要設定管理員(伺服器變數:MyISAM,InnoDB,緩衝,日誌)
二.SQL語言群組成部分1.DDL: 全稱Data Defination,我們叫它資料定義語言 (Data Definition Language),典型命令指令有CREAT/ALTER/DROP2.DML: 全稱Data Manipulation,我們叫它資料操作語言,典型命令有INSERT/DELETE/SELECT/UPDATE3.完整性定義語言,DDL的一部分功能 主鍵約束、外鍵約束、唯一鍵約束、條件約束、非空約束、事務約束4.視圖定義:即虛表,它是儲存下來的select語句5.事務控制: 例如Transactions(在mysql互動介面執行“HELP content”可以查看相關資訊。)6.嵌入式SQL和動態SQL:7.DCL: 我們叫它資料控制語言,如實現授權和許可權收回的典型命令有GRANT/REVOKE.
三.資料類型的功用MySQL的資料類型請參考:http://www.cnblogs.com/yinzhengjie/p/7818092.html1.儲存的實值型別;2.佔據的儲存空間大小;3.定長,變長;4.如何被索引及排序;5.是否能夠被索引;
四.資料字典:依賴系統編目(花名冊)(system catalog) 對於關係型資料庫來講,它的資料字典也是另外找個地方存起來的。對於MySQL資料庫來講,這個位置就是名稱為mysql的資料庫。我們在第一次啟動MySQL時,它第一步工作就是初始化系統資料表,所謂初始化系統資料表就是用來建立mysql這個資料庫的。我們也可以稱這個mysql資料庫叫做MySQL的資料字典。資料字典是用來儲存資料庫伺服器上的中繼資料。那麼什麼是中繼資料呢?我總結有以下幾點:1>.儲存關係(表)的名字2>.儲存每個關係(表)的各欄位的名字3>.儲存各欄位的資料類型和長度4>.儲存約束條件5>.儲存每個關係(表)上的視圖的名字及視圖的定義6>.儲存授權使用者(user表)的名字7>.儲存使用者的授權和賬戶資訊等8>.統計類的資料,如每個關係欄位的個數,每個關係中行數,每個關係的儲存方法9>.儲存中繼資料的資料庫( 即:information_schema,mysql, performance_schema)
五.MySQL內部組件 如所示,連接器(Connectors)和串連池他們之間是建立串連關係的。串連池(Connection Pool)的所有SQL語句都得發送給SQL介面(SQL Interface)進行接收,然後再由分析器(Parser)進行分析,由最佳化器(Optimizer)進行最佳化處理,最終我們有可能在緩衝(Caches&Buffers)中擷取資料,實在再不行在交由儲存引擎(Pluggable Storage Engines)去執行SQL語句。
六.MySQL中字元大小寫情況說明1.SQL關鍵字及函數不區分大小寫;2.資料庫、表及視圖名稱的大小寫區分與否取決於底層OS(作業系統)及FS(檔案系統);3.預存程序、儲存函數及事件調度器的名字不區分大小寫,但觸發器區分大小寫;4.表別名區分大小寫;5.對欄位中的資料,如果欄位類型為binary類型,則區分大小寫,非binary不區分大小寫;
七.SQL指令詳解-資料庫操作1.資料庫的建立a>.查看建立庫時的協助資訊
1 mysql> help create database 2 Name: ‘CREATE DATABASE‘ 3 Description: 4 Syntax: 5 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name 6 [create_specification] ... 7 8 create_specification: 9 [DEFAULT] CHARACTER SET [=] charset_name #設定字元集10 | [DEFAULT] COLLATE [=] collation_name #設定排序方式11 12 CREATE DATABASE creates a database with the given name. To use this13 statement, you need the CREATE privilege for the database. CREATE14 SCHEMA is a synonym for CREATE DATABASE.15 16 URL: http://dev.mysql.com/doc/refman/5.1/en/create-database.html17 18 19 mysql> b>.建立不存在的資料庫
1 mysql> show databases; 2 +--------------------+ 3 | Database | 4 +--------------------+ 5 | information_schema | 6 | mysql | 7 | test | 8 +--------------------+ 9 3 rows in set (0.00 sec)10 11 mysql> 12 mysql> create database yinzhengjie;13 Query OK, 1 row affected (0.01 sec)14 15 mysql> show databases;16 +--------------------+17 | Database |18 +--------------------+19 | information_schema |20 | mysql |21 | test |22 | yinzhengjie |23 +--------------------+24 4 rows in set (0.00 sec)25 26 mysql>
c>.已經存在資料庫的如何使用建立命令
1 mysql> show databases; 2 +--------------------+ 3 | Database | 4 +--------------------+ 5 | information_schema | 6 | mysql | 7 | test | 8 | yinzhengjie | 9 +--------------------+10 4 rows in set (0.00 sec)11 12 mysql> create database if not exists yinzhengjie;13 Query OK, 1 row affected, 1 warning (0.00 sec)14 15 mysql> show databases;16 +--------------------+17 | Database |18 +--------------------+19 | information_schema |20 | mysql |21 | test |22 | yinzhengjie |23 +--------------------+24 4 rows in set (0.00 sec)25 26 mysql>
2.資料庫的刪除a>.查看刪除資料庫時的協助資訊
MySQL資料庫以及表的管理