MySQL的語法及其使用指南
更新時(shí)間:2008年04月06日 01:18:42 作者:
數(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, 事務(wù)處理
begin
commit
rollback
set autocommit
5, 對(duì)數(shù)據(jù)表里面的信息進(jìn)行修改
delete
insert
load data
replace
update
6, 管理型命令
flush
grant
revoke
一,命名規(guī)則
1MySQL允許用在名字中的系統(tǒng)字符.
任何字母數(shù)字加上”_” 或 “$”
2名字的長(zhǎng)度.
數(shù)據(jù)庫,數(shù)據(jù)表,數(shù)據(jù)列,索引等名字最多64個(gè)字母
256別名最多256個(gè)字母
3名字的限定符
依據(jù)不同的上下文,有時(shí)需要給某些名字加上某個(gè)限制:如數(shù)據(jù)列的全限定,部分限定,以及無限制.這一點(diǎn)比較容易理解
select * from db_name.tbl_name…
二,MySQL中的大小寫問題
關(guān)鍵字和函數(shù)名:不區(qū)別
數(shù)據(jù)庫名數(shù)據(jù)表名:根據(jù)服務(wù)器主機(jī)系統(tǒng)而定
數(shù)據(jù)列名索引名:不區(qū)別
別名:區(qū)別大小寫
一般來說,不管系統(tǒng)是否區(qū)分?jǐn)?shù)據(jù)庫名和數(shù)據(jù)表名中的字母大小寫情況,我們都應(yīng)該在同一個(gè)查詢語句里面以前后一致的字母大小寫形式來寫出這些名字,這是一個(gè)非常好的編程習(xí)慣。
三,MySQL支持的名種數(shù)據(jù)表類型詳解
1,ISAM數(shù)據(jù)表
這是3.23版本之前的MySQL支特的唯一一種表類型,目前己經(jīng)過時(shí),MyIASM處理程庫逐步取代了ISAM處理程序,這種老式的表類型己經(jīng)沒有人在用了
2,MyIASM數(shù)據(jù)表
• 這是目前中MySQL默認(rèn)使用的數(shù)據(jù)表類型。其優(yōu)點(diǎn)是
• 如果主機(jī)操作系統(tǒng)支持大尺寸文件,數(shù)據(jù)表長(zhǎng)度就能夠很大,就能客納更多的數(shù)據(jù).
• 數(shù)據(jù)表內(nèi)容獨(dú)立于硬件也就是說可以把數(shù)據(jù)表在機(jī)器之間隨意拷貝
• 提高了索引方面的功能
• 提供了更好的索引鍵壓縮效果
• auto_incremnet能力加強(qiáng)
• 改進(jìn)了對(duì)數(shù)據(jù)表的完整性檢查機(jī)制
• 支持進(jìn)行fulltext全文本搜索
3,Merge數(shù)據(jù)表
這是一種把相同結(jié)構(gòu)的MyIASM數(shù)據(jù)表組織為一個(gè)邏輯單元的方法
4,HEAP數(shù)據(jù)表
這是一種使用內(nèi)存的數(shù)據(jù)表,而且各個(gè)數(shù)據(jù)行的長(zhǎng)度固定,這兩個(gè)特性使得這種類型數(shù)據(jù)表的檢索速度非常快,作為一種臨時(shí)性的數(shù)據(jù)表,HEAP在某些特定情況下很有用。
5,BDB數(shù)據(jù)表
這種數(shù)據(jù)表支持事務(wù)處理機(jī)制
具有良好的并發(fā)性能
6,InnoBDB數(shù)據(jù)表
這是最近加入MySQL的數(shù)據(jù)表類型,有許多新的特性
支持事務(wù)處理機(jī)制
崩潰后能夠立刻恢復(fù)
支持外鍵功能,包括級(jí)聯(lián)刪除
具有并發(fā)功能
7這種數(shù)據(jù)表在硬盤上的文件存儲(chǔ)方式
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)容導(dǎo)出到一個(gè)文本文件中,然后拷貝到目的地硬盤上,在用腳本加載到數(shù)據(jù)庫里面,這是首先我們應(yīng)該掌握的方法。但就文件層次的操作來說,某些數(shù)據(jù)表是可以單獨(dú)拷貝的??幢砹?
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes
四,索引的初步知識(shí)
1,索引是加快數(shù)據(jù)表內(nèi)容訪問性能的基本手段,其基本特性:
為可以索引單獨(dú)的數(shù)據(jù)列也可以構(gòu)造包含多個(gè)數(shù)據(jù)列的復(fù)合索引
索引可以包含重復(fù)鍵值
可以為一個(gè)數(shù)據(jù)表建立多個(gè)索引
2,不同的數(shù)據(jù)表有著不同的索引特性使用的時(shí)候需要區(qū)別對(duì)待
3,如何創(chuàng)建索引
①用alter table命令創(chuàng)建索引
②用create index 命令創(chuàng)建索引
③在create table 時(shí)創(chuàng)建索引
五,變更數(shù)據(jù)表的結(jié)構(gòu)
當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表的結(jié)構(gòu)己經(jīng)不能滿足我們的使用要求時(shí),就要對(duì)其結(jié)構(gòu)進(jìn)行變更.可能需要這個(gè)數(shù)據(jù)表存放比以前更多的信息;也可能是這個(gè)數(shù)據(jù)表里面的某些信息己經(jīng)沒用;了或許是現(xiàn)有的某個(gè)數(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移動(dòng)到數(shù)據(jù)庫B里面
rename table S.A to T.A //數(shù)據(jù)庫S里面的表A移動(dòng)到數(shù)據(jù)庫B里面
2,改變數(shù)據(jù)列的類型
我們現(xiàn)在要把數(shù)據(jù)表A里面的一個(gè)smallint unsigned類型的數(shù)據(jù)列I再次改動(dòng)為 mediumint unsigned 類型
alter table A motify I mediumint unsigned
alter table A change I I mediumint unsigned
注意change子句的特點(diǎn):不僅能夠改變數(shù)據(jù)列的類型,還能改變數(shù)據(jù)列的名字。這是modify子句所不能完成的。下面就把這個(gè)數(shù)據(jù)列改名了。
alter table A change I J mediumint unsigned
3,將數(shù)據(jù)表由可變長(zhǎng)度數(shù)據(jù)行轉(zhuǎn)變成固定長(zhǎng)度數(shù)據(jù)行
有的時(shí)候?yàn)榱颂岣咝阅?,需要做這樣的轉(zhuǎn)變,但有一點(diǎn)需要注意:必須用同一條alter命令來一次改變所有的數(shù)據(jù)列,不能僅僅改變一個(gè)數(shù)據(jù)列!舉例如下:
create table A(name varchar(40),address varchar(80))
我們開始修改命令就應(yīng)該是:
alter table A modify name char(40),modify address char(80);
4,將數(shù)據(jù)表由固定長(zhǎng)度數(shù)據(jù)行轉(zhuǎn)變成可變長(zhǎng)度數(shù)據(jù)行
如果覺得空間利用率不高,那就需要再轉(zhuǎn)變回來,這個(gè)就很簡(jiǎn)單了,沒有特別要求
alter table A modify name varchar(40)
5,轉(zhuǎn)換數(shù)據(jù)表類型
我們知道,MySQL數(shù)據(jù)庫存在多種數(shù)據(jù)表類型,但每一種類型的特性并不相同。
如果你想讓你的數(shù)據(jù)表支持事務(wù)處理機(jī)制。那就必須把它搞成BDB或innoBDB格式
alter table A type= BDB
alter table A type= InnoBDB
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, 事務(wù)處理
begin
commit
rollback
set autocommit
5, 對(duì)數(shù)據(jù)表里面的信息進(jìn)行修改
delete
insert
load data
replace
update
6, 管理型命令
flush
grant
revoke
一,命名規(guī)則
1MySQL允許用在名字中的系統(tǒng)字符.
任何字母數(shù)字加上”_” 或 “$”
2名字的長(zhǎng)度.
數(shù)據(jù)庫,數(shù)據(jù)表,數(shù)據(jù)列,索引等名字最多64個(gè)字母
256別名最多256個(gè)字母
3名字的限定符
依據(jù)不同的上下文,有時(shí)需要給某些名字加上某個(gè)限制:如數(shù)據(jù)列的全限定,部分限定,以及無限制.這一點(diǎn)比較容易理解
select * from db_name.tbl_name…
二,MySQL中的大小寫問題
關(guān)鍵字和函數(shù)名:不區(qū)別
數(shù)據(jù)庫名數(shù)據(jù)表名:根據(jù)服務(wù)器主機(jī)系統(tǒng)而定
數(shù)據(jù)列名索引名:不區(qū)別
別名:區(qū)別大小寫
一般來說,不管系統(tǒng)是否區(qū)分?jǐn)?shù)據(jù)庫名和數(shù)據(jù)表名中的字母大小寫情況,我們都應(yīng)該在同一個(gè)查詢語句里面以前后一致的字母大小寫形式來寫出這些名字,這是一個(gè)非常好的編程習(xí)慣。
三,MySQL支持的名種數(shù)據(jù)表類型詳解
1,ISAM數(shù)據(jù)表
這是3.23版本之前的MySQL支特的唯一一種表類型,目前己經(jīng)過時(shí),MyIASM處理程庫逐步取代了ISAM處理程序,這種老式的表類型己經(jīng)沒有人在用了
2,MyIASM數(shù)據(jù)表
• 這是目前中MySQL默認(rèn)使用的數(shù)據(jù)表類型。其優(yōu)點(diǎn)是
• 如果主機(jī)操作系統(tǒng)支持大尺寸文件,數(shù)據(jù)表長(zhǎng)度就能夠很大,就能客納更多的數(shù)據(jù).
• 數(shù)據(jù)表內(nèi)容獨(dú)立于硬件也就是說可以把數(shù)據(jù)表在機(jī)器之間隨意拷貝
• 提高了索引方面的功能
• 提供了更好的索引鍵壓縮效果
• auto_incremnet能力加強(qiáng)
• 改進(jìn)了對(duì)數(shù)據(jù)表的完整性檢查機(jī)制
• 支持進(jìn)行fulltext全文本搜索
3,Merge數(shù)據(jù)表
這是一種把相同結(jié)構(gòu)的MyIASM數(shù)據(jù)表組織為一個(gè)邏輯單元的方法
4,HEAP數(shù)據(jù)表
這是一種使用內(nèi)存的數(shù)據(jù)表,而且各個(gè)數(shù)據(jù)行的長(zhǎng)度固定,這兩個(gè)特性使得這種類型數(shù)據(jù)表的檢索速度非常快,作為一種臨時(shí)性的數(shù)據(jù)表,HEAP在某些特定情況下很有用。
5,BDB數(shù)據(jù)表
這種數(shù)據(jù)表支持事務(wù)處理機(jī)制
具有良好的并發(fā)性能
6,InnoBDB數(shù)據(jù)表
這是最近加入MySQL的數(shù)據(jù)表類型,有許多新的特性
支持事務(wù)處理機(jī)制
崩潰后能夠立刻恢復(fù)
支持外鍵功能,包括級(jí)聯(lián)刪除
具有并發(fā)功能
7這種數(shù)據(jù)表在硬盤上的文件存儲(chǔ)方式
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)容導(dǎo)出到一個(gè)文本文件中,然后拷貝到目的地硬盤上,在用腳本加載到數(shù)據(jù)庫里面,這是首先我們應(yīng)該掌握的方法。但就文件層次的操作來說,某些數(shù)據(jù)表是可以單獨(dú)拷貝的??幢砹?
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes
四,索引的初步知識(shí)
1,索引是加快數(shù)據(jù)表內(nèi)容訪問性能的基本手段,其基本特性:
為可以索引單獨(dú)的數(shù)據(jù)列也可以構(gòu)造包含多個(gè)數(shù)據(jù)列的復(fù)合索引
索引可以包含重復(fù)鍵值
可以為一個(gè)數(shù)據(jù)表建立多個(gè)索引
2,不同的數(shù)據(jù)表有著不同的索引特性使用的時(shí)候需要區(qū)別對(duì)待
3,如何創(chuàng)建索引
①用alter table命令創(chuàng)建索引
②用create index 命令創(chuàng)建索引
③在create table 時(shí)創(chuàng)建索引
五,變更數(shù)據(jù)表的結(jié)構(gòu)
當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表的結(jié)構(gòu)己經(jīng)不能滿足我們的使用要求時(shí),就要對(duì)其結(jié)構(gòu)進(jìn)行變更.可能需要這個(gè)數(shù)據(jù)表存放比以前更多的信息;也可能是這個(gè)數(shù)據(jù)表里面的某些信息己經(jīng)沒用;了或許是現(xiàn)有的某個(gè)數(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移動(dòng)到數(shù)據(jù)庫B里面
rename table S.A to T.A //數(shù)據(jù)庫S里面的表A移動(dòng)到數(shù)據(jù)庫B里面
2,改變數(shù)據(jù)列的類型
我們現(xiàn)在要把數(shù)據(jù)表A里面的一個(gè)smallint unsigned類型的數(shù)據(jù)列I再次改動(dòng)為 mediumint unsigned 類型
alter table A motify I mediumint unsigned
alter table A change I I mediumint unsigned
注意change子句的特點(diǎn):不僅能夠改變數(shù)據(jù)列的類型,還能改變數(shù)據(jù)列的名字。這是modify子句所不能完成的。下面就把這個(gè)數(shù)據(jù)列改名了。
alter table A change I J mediumint unsigned
3,將數(shù)據(jù)表由可變長(zhǎng)度數(shù)據(jù)行轉(zhuǎn)變成固定長(zhǎng)度數(shù)據(jù)行
有的時(shí)候?yàn)榱颂岣咝阅?,需要做這樣的轉(zhuǎn)變,但有一點(diǎn)需要注意:必須用同一條alter命令來一次改變所有的數(shù)據(jù)列,不能僅僅改變一個(gè)數(shù)據(jù)列!舉例如下:
create table A(name varchar(40),address varchar(80))
我們開始修改命令就應(yīng)該是:
alter table A modify name char(40),modify address char(80);
4,將數(shù)據(jù)表由固定長(zhǎng)度數(shù)據(jù)行轉(zhuǎn)變成可變長(zhǎng)度數(shù)據(jù)行
如果覺得空間利用率不高,那就需要再轉(zhuǎn)變回來,這個(gè)就很簡(jiǎn)單了,沒有特別要求
alter table A modify name varchar(40)
5,轉(zhuǎn)換數(shù)據(jù)表類型
我們知道,MySQL數(shù)據(jù)庫存在多種數(shù)據(jù)表類型,但每一種類型的特性并不相同。
如果你想讓你的數(shù)據(jù)表支持事務(wù)處理機(jī)制。那就必須把它搞成BDB或innoBDB格式
alter table A type= BDB
alter table A type= InnoBDB
相關(guān)文章
Mysql中find_in_set()函數(shù)用法詳解以及使用場(chǎng)景
前幾天在sql查詢的時(shí)候,想要判斷數(shù)據(jù)庫中表的某一列中的值是否在List集合中,接觸到了find_in_set的使用,用起來方便快捷,下面這篇文章主要給大家介紹了關(guān)于Mysql中find_in_set()函數(shù)用法詳解以及使用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2023-03-03
云服務(wù)器安裝mysql的實(shí)現(xiàn)步驟
在當(dāng)前的互聯(lián)網(wǎng)時(shí)代,云計(jì)算已經(jīng)成為重要的平臺(tái)支撐,本文就來介紹一下云服務(wù)器安裝mysql的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Linux系統(tǒng)徹底刪除Mysql的詳細(xì)教程
我們?cè)谥匦掳惭bMySQL、或更新MySQL版本時(shí),一定會(huì)遇到mysql數(shù)據(jù)殘留(臟數(shù)據(jù)),或組件沖突等問題,下面這篇文章主要給大家介紹了關(guān)于Linux系統(tǒng)徹底刪除Mysql的詳細(xì)教程,需要的朋友可以參考下2023-02-02
MySQL數(shù)據(jù)庫?觸發(fā)器?trigger
這篇文章主要介紹了MySQL數(shù)據(jù)庫?觸發(fā)器?trigger,觸發(fā)器是一種特殊類型的存儲(chǔ)過程,觸發(fā)器通過事件進(jìn)行觸發(fā)而被執(zhí)行,可通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)更改,保證數(shù)據(jù)安全,進(jìn)行安全校驗(yàn)2022-06-06
19個(gè)MySQL性能優(yōu)化要點(diǎn)解析
這篇文章主要介紹了19個(gè)MySQL性能優(yōu)化要點(diǎn),并對(duì)其都進(jìn)行了深入解析,感興趣的小伙伴們可以參考一下2015-08-08

