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