先看看MySQL支持的SQL語句的分類
1, 數據庫的選取,創建,丟棄和變更
use
create database
drap database
alter database
2, 數據表和索引的創建,變更和丟棄
create table
drop table
create index
drop index
alter index
3, 從數據表檢索信息
select
union
4, 事務處理
begin
commit
rollback
set autocommit
5, 對數據表裡面的信息進行修改
delete
insert
load data
replace
update
6, 管理型命令
flush
grant
revoke
一,命名規則
1MySQL允許用在名字中的系統字符.
任何字母數字加上”_” 或 “$”
2名字的長度.
數據庫,數據表,數據列,索引等名字最多64個字母
256別名最多256個字母
3名字的限定符
依據不同的上下文,有時需要給某些名字加上某個限制:如數據列的全限定,部分限定,以及無限制.這一點比較容易理解
select * from db_name.tbl_name…
二,MySQL中的大小寫問題
關鍵字和函數名:不區別
數據庫名數據表名:根據服務器主機系統而定
數據列名索引名:不區別
別名:區別大小寫
一般來說,不管系統是否區分數據庫名和數據表名中的字母大小寫情況,我們都應該在同一個查詢語句裡面以前後一致的字母大小寫形式來寫出這些名字,這是一個非常好的編程習慣。
三,MySQL支持的名種數據表類型詳解
1,ISAM數據表
這是3.23版本之前的MySQL支特的唯一一種表類型,目前己經過時,MyIASM處理程庫逐步取代了ISAM處理程序,這種老式的表類型己經沒有人在用了
2,MyIASM數據表
• 這是目前中MySQL默認使用的數據表類型。其優點是
• 如果主機操作系統支持大尺寸文件,數據表長度就能夠很大,就能客納更多的數據.
• 數據表內容獨立於硬件也就是說可以把數據表在機器之間隨意拷貝
• 提高了索引方面的功能
• 提供了更好的索引鍵壓縮效果
• auto_incremnet能力加強
• 改進了對數據表的完整性檢查機制
• 支持進行fulltext全文本搜索
3,Merge數據表
這是一種把相同結構的MyIASM數據表組織為一個邏輯單元的方法
4,HEAP數據表
這是一種使用內存的數據表,而且各個數據行的長度固定,這兩個特性使得這種類型數據表的檢索速度非常快,作為一種臨時性的數據表,HEAP在某些特定情況下很有用。
5,BDB數據表
這種數據表支持事務處理機制
具有良好的並發性能
6,InnoBDB數據表
這是最近加入MySQL的數據表類型,有許多新的特性
支持事務處理機制
崩潰後能夠立刻恢復
支持外鍵功能,包括級聯刪除
具有並發功能
7這種數據表在硬盤上的文件存儲方式
IASM Frm isd ism
MyISAM Frm myd myi
Merge Frm mrg
Heap Frm
BDB Frm db
InnoBDB frm
8數據表的可移植性
通用方法:吧數據表的內容導出到一個文本文件中,然後拷貝到目的地硬盤上,在用腳本加載到數據庫裡面,這是首先我們應該掌握的方法。但就文件層次的操作來說,某些數據表是可以單獨拷貝的。看表了
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes
四,索引的初步知識
1,索引是加快數據表內容訪問性能的基本手段,其基本特性:
為可以索引單獨的數據列也可以構造包含多個數據列的復合索引
索引可以包含重復鍵值
可以為一個數據表建立多個索引
2,不同的數據表有著不同的索引特性使用的時候需要區別對待
3,如何創建索引
①用alter table命令創建索引
②用create index 命令創建索引
③在create table 時創建索引
五,變更數據表的結構
當發現某個數據表的結構己經不能滿足我們的使用要求時,就要對其結構進行變更.可能需要這個數據表存放比以前更多的信息;也可能是這個數據表裡面的某些信息己經沒用;了或許是現有的某個數據列寬度太窄…在這些情況下都要用到alter 語勻
1,重新命名數據表
alter table A rename to B //數據表A改名為B
rename table A to B //數據表A改名為B
rename A toC,B to A,C to A //數據表A和數據表B互換名字
alter table S.A rename to T.A //數據庫S裡面的表A移動到數據庫B裡面
rename table S.A to T.A //數據庫S裡面的表A移動到數據庫B裡面
2,改變數據列的類型
我們現在要把數據表A裡面的一個smallint unsigned類型的數據列I再次改動為 mediumint unsigned 類型
alter table A motify I mediumint unsigned
alter table A change I I mediumint unsigned
注意change子句的特點:不僅能夠改變數據列的類型,還能改變數據列的名字。這是modify子句所不能完成的。下面就把這個數據列改名了。
alter table A change I J mediumint unsigned
3,將數據表由可變長度數據行轉變成固定長度數據行
有的時候為了提高性能,需要做這樣的轉變,但有一點需要注意:必須用同一條alter命令來一次改變所有的數據列,不能僅僅改變一個數據列!舉例如下:
create table A(name varchar(40),address varchar(80))
我們開始修改命令就應該是:
alter table A modify name char(40),modify address char(80);
4,將數據表由固定長度數據行轉變成可變長度數據行
如果覺得空間利用率不高,那就需要再轉變回來,這個就很簡單了,沒有特別要求
alter table A modify name varchar(40)
5,轉換數據表類型
我們知道,MySQL數據庫存在多種數據表類型,但每一種類型的特性並不相同。
如果你想讓你的數據表支持事務處理機制。那就必須把它搞成BDB或innoBDB格式
alter table A type= BDB
alter table A type= InnoBDB