先看看MySQL支持的SQL語(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中的大小寫問(wèn)題
關(guān)鍵字和函數(shù)名:不區(qū)別
數(shù)據(jù)庫(kù)名數(shù)據(jù)表名:根據(jù)服務(wù)器主機(jī)系統(tǒng)而定
數(shù)據(jù)列名索引名:不區(qū)別
別名:區(qū)別大小寫
一般來(lái)說(shuō),不管系統(tǒng)是否區(qū)分?jǐn)?shù)據(jù)庫(kù)名和數(shù)據(jù)表名中的字母大小寫情況,我們都應(yīng)該在同一個(gè)查詢語(yǔ)句里面以前后一致的字母大小寫形式來(lái)寫出這些名字,這是一個(gè)非常好的編程習(xí)慣。
三,MySQL支持的名種數(shù)據(jù)表類型詳解
1,ISAM數(shù)據(jù)表
這是3.23版本之前的MySQL支特的唯一一種表類型,目前己經(jīng)過(guò)時(shí),MyIASM處理程庫(kù)逐步取代了ISAM處理程序,這種老式的表類型己經(jīng)沒(méi)有人在用了
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ú)立于硬件也就是說(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è)特性使得這種類型數(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ù)庫(kù)里面,這是首先我們應(yīng)該掌握的方法。但就文件層次的操作來(lái)說(shuō),某些數(shù)據(jù)表是可以單獨(dú)拷貝的??幢砹?nbsp;
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)不能滿足我們的使用要求時(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ù)列的類型
我們現(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命令來(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ù)表類型
我們知道,MySQL數(shù)據(jù)庫(kù)存在多種數(shù)據(jù)表類型,但每一種類型的特性并不相同。
如果你想讓你的數(shù)據(jù)表支持事務(wù)處理機(jī)制。那就必須把它搞成BDB或innoBDB格式
alter table A type= BDB
alter table A type= InnoBDB
MySQL的語(yǔ)法及其使用指南
2019-10-21 15:08mysql教程網(wǎng) Mysql
數(shù)據(jù)庫(kù)的選取,創(chuàng)建,丟棄和變更 數(shù)據(jù)表和索引的創(chuàng)建,變更和丟棄從數(shù)據(jù)表檢索信息
延伸 · 閱讀
- 2022-03-11MySQL的索引你了解嗎
- 2022-03-10面試中老生常談的MySQL問(wèn)答集錦夯實(shí)基礎(chǔ)
- 2022-03-10淺談如何保證Mysql主從一致
- 2022-03-10Ubuntu18.04(linux)安裝MySQL的方法步驟
- 2022-03-09MySQL讓人又愛(ài)又恨的多表查詢
- 2022-03-09MySQL Server 層和存儲(chǔ)引擎層是怎么交互數(shù)據(jù)的?
- Mysql
解決重置Mysql root用戶賬號(hào)密碼問(wèn)題
這篇文章主要介紹了解決重置Mysql root用戶賬號(hào)密碼問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下...
- Mysql
MySQL全文索引、聯(lián)合索引、like查詢、json查詢速度哪個(gè)快
這篇文章主要介紹了MySQL全文索引、聯(lián)合索引、like查詢、json查詢速度大比拼,通過(guò)實(shí)例代碼截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值...
- Mysql
MySQL 查詢速度慢與性能差的原因與解決方法
隨著網(wǎng)站數(shù)據(jù)量與訪問(wèn)量的增加,MySQL 查詢速度慢與性能差的問(wèn)題就日漸明顯,這里為大家分享一下解決方法,需要的朋友可以參考下...
- Mysql
幾種MySQL中的聯(lián)接查詢操作方法總結(jié)
這篇文章主要介紹了幾種MySQL中的聯(lián)接查詢操作方法總結(jié),文中包括一些代碼舉例講解,需要的朋友可以參考下 ...
- Mysql
MySQL鎖的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了關(guān)于MySQL鎖的知識(shí)點(diǎn)總結(jié)以及實(shí)例內(nèi)容,需要的朋友們學(xué)習(xí)下。...
- Mysql
Centos7下使用yum安裝mysql數(shù)據(jù)庫(kù)的詳細(xì)教程(增強(qiáng)版)
這篇文章主要介紹了Centos7下使用yum安裝mysql數(shù)據(jù)庫(kù)的詳細(xì)教程(增強(qiáng)版),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下 ...
- Mysql
MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法
這篇文章主要介紹了MySQL之Field‘***’doesn’t have a default value錯(cuò)誤解決辦法,需要的朋友可以參考下 ...
- Mysql
MySQL server has gone away錯(cuò)誤提示解決方法
今天遇到類似的情景,MySQL只是冷冷的說(shuō):MySQL server has gone away。 ...