MySQL的語(yǔ)法及其使用指南
1, 數(shù)據(jù)庫(kù)的選取,創(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ù)庫(kù),數(shù)據(jù)表,數(shù)據(jù)列,索引等名字最多64個(gè)字母
256別名最多256個(gè)字母
3名字的限定符
依據(jù)不同的上下文,有時(shí)需要給某些名字加上某個(gè)限制:如數(shù)據(jù)列的全限定,部分限定,以及無(wú)限制.這一點(diǎn)比較容易理解
select * from db_name.tbl_name…
二,MySQL中的大小寫(xiě)問(wèn)題
關(guān)鍵字和函數(shù)名:不區(qū)別
數(shù)據(jù)庫(kù)名數(shù)據(jù)表名:根據(jù)服務(wù)器主機(jī)系統(tǒng)而定
數(shù)據(jù)列名索引名:不區(qū)別
別名:區(qū)別大小寫(xiě)
一般來(lái)說(shuō),不管系統(tǒng)是否區(qū)分?jǐn)?shù)據(jù)庫(kù)名和數(shù)據(jù)表名中的字母大小寫(xiě)情況,我們都應(yīng)該在同一個(gè)查詢(xún)語(yǔ)句里面以前后一致的字母大小寫(xiě)形式來(lái)寫(xiě)出這些名字,這是一個(gè)非常好的編程習(xí)慣。
三,MySQL支持的名種數(shù)據(jù)表類(lèi)型詳解
1,ISAM數(shù)據(jù)表
這是3.23版本之前的MySQL支特的唯一一種表類(lèi)型,目前己經(jīng)過(guò)時(shí),MyIASM處理程庫(kù)逐步取代了ISAM處理程序,這種老式的表類(lèi)型己經(jīng)沒(méi)有人在用了
2,MyIASM數(shù)據(jù)表
• 這是目前中MySQL默認(rèn)使用的數(shù)據(jù)表類(lèi)型。其優(yōu)點(diǎn)是
• 如果主機(jī)操作系統(tǒng)支持大尺寸文件,數(shù)據(jù)表長(zhǎng)度就能夠很大,就能客納更多的數(shù)據(jù).
• 數(shù)據(jù)表內(nèi)容獨(dú)立于硬件也就是說(shuō)可以把數(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è)特性使得這種類(lèi)型數(shù)據(jù)表的檢索速度非???,作為一種臨時(shí)性的數(shù)據(jù)表,HEAP在某些特定情況下很有用。
5,BDB數(shù)據(jù)表
這種數(shù)據(jù)表支持事務(wù)處理機(jī)制
具有良好的并發(fā)性能
6,InnoBDB數(shù)據(jù)表
這是最近加入MySQL的數(shù)據(jù)表類(lèi)型,有許多新的特性
支持事務(wù)處理機(jī)制
崩潰后能夠立刻恢復(fù)
支持外鍵功能,包括級(jí)聯(lián)刪除
具有并發(fā)功能
7這種數(shù)據(jù)表在硬盤(pán)上的文件存儲(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è)文本文件中,然后拷貝到目的地硬盤(pán)上,在用腳本加載到數(shù)據(jù)庫(kù)里面,這是首先我們應(yīng)該掌握的方法。但就文件層次的操作來(lái)說(shuō),某些數(shù)據(jù)表是可以單獨(dú)拷貝的??幢砹?
ISAM No
MyIASM Yes
BDB No
InnoBDB Yes
四,索引的初步知識(shí)
1,索引是加快數(shù)據(jù)表內(nèi)容訪問(wèn)性能的基本手段,其基本特性:
為可以索引單獨(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)不能滿(mǎn)足我們的使用要求時(shí),就要對(duì)其結(jié)構(gòu)進(jìn)行變更.可能需要這個(gè)數(shù)據(jù)表存放比以前更多的信息;也可能是這個(gè)數(shù)據(jù)表里面的某些信息己經(jīng)沒(méi)用;了或許是現(xiàn)有的某個(gè)數(shù)據(jù)列寬度太窄…在這些情況下都要用到alter 語(yǔ)勻
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ù)庫(kù)S里面的表A移動(dòng)到數(shù)據(jù)庫(kù)B里面
rename table S.A to T.A //數(shù)據(jù)庫(kù)S里面的表A移動(dòng)到數(shù)據(jù)庫(kù)B里面
2,改變數(shù)據(jù)列的類(lèi)型
我們現(xiàn)在要把數(shù)據(jù)表A里面的一個(gè)smallint unsigned類(lèi)型的數(shù)據(jù)列I再次改動(dòng)為 mediumint unsigned 類(lèi)型
alter table A motify I mediumint unsigned
alter table A change I I mediumint unsigned
注意change子句的特點(diǎn):不僅能夠改變數(shù)據(jù)列的類(lèi)型,還能改變數(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命令來(lái)一次改變所有的數(shù)據(jù)列,不能僅僅改變一個(gè)數(shù)據(jù)列!舉例如下:
create table A(name varchar(40),address varchar(80))
我們開(kāi)始修改命令就應(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ù)行
如果覺(jué)得空間利用率不高,那就需要再轉(zhuǎn)變回來(lái),這個(gè)就很簡(jiǎn)單了,沒(méi)有特別要求
alter table A modify name varchar(40)
5,轉(zhuǎn)換數(shù)據(jù)表類(lèi)型
我們知道,MySQL數(shù)據(jù)庫(kù)存在多種數(shù)據(jù)表類(lèi)型,但每一種類(lèi)型的特性并不相同。
如果你想讓你的數(shù)據(jù)表支持事務(wù)處理機(jī)制。那就必須把它搞成BDB或innoBDB格式
alter table A type= BDB
alter table A type= InnoBDB
相關(guān)文章
mysql 從一個(gè)表中查數(shù)據(jù)并插入另一個(gè)表實(shí)現(xiàn)方法
這篇文章主要介紹了mysql 從一個(gè)表中查數(shù)據(jù)并插入另一個(gè)表實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-05-05解決Navicat導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)sql報(bào)錯(cuò)datetime(0)的問(wèn)題
這篇文章主要介紹了解決Navicat導(dǎo)入數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)sql報(bào)錯(cuò)datetime(0)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07SQL語(yǔ)句多表聯(lián)查的實(shí)現(xiàn)方法示例
多表聯(lián)合檢索可以通過(guò)連接運(yùn)算來(lái)完成,而連接運(yùn)算又可以通過(guò)廣義笛卡爾積后再進(jìn),下面這篇文章主要給大家介紹了關(guān)于SQL語(yǔ)句多表聯(lián)查實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04在EF中使用MySQL的方法及常見(jiàn)問(wèn)題
這篇文章主要介紹了在EF中使用MySQL的方法及常見(jiàn)問(wèn)題 的相關(guān)資料,需要的朋友可以參考下2016-06-06MySQL連接查詢(xún)你真的學(xué)會(huì)了嗎?
日常使用數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句時(shí),單表查詢(xún)嘗嘗不能滿(mǎn)足項(xiàng)目的業(yè)務(wù)需求,在項(xiàng)目開(kāi)發(fā)過(guò)程中,有很多需求都是要涉及到多表的連接查詢(xún),這篇文章主要給大家介紹了關(guān)于MySQL連接查詢(xún)的相關(guān)資料,需要的朋友可以參考下2021-06-06MySQL數(shù)據(jù)庫(kù)之?dāng)?shù)據(jù)表操作
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之?dāng)?shù)據(jù)表操作,文章基于MySQL數(shù)據(jù)庫(kù)的相關(guān)資料展開(kāi)詳細(xì)的數(shù)據(jù)表操作的詳情,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05MySql添加新用戶(hù)及為用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)和給用戶(hù)分配權(quán)限方法介紹
這篇文章主要介紹了MySql添加新用戶(hù)及為用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)和給用戶(hù)分配權(quán)限方法介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08MySQL多層級(jí)結(jié)構(gòu)-樹(shù)搜索介紹
這篇文章主要介紹了MySQL多層級(jí)結(jié)構(gòu)-樹(shù)搜索,需要的朋友可以參考下2016-07-07