標籤:
這是我剛開始學習mysql時總結的筆記 可能比較潦草但還好比較容易理解,亂點就亂點吧
以後有什麼新的東西都隨時添加
mysql 的基礎屬性篇
SQL語言套件含4個部分
資料定義語言 (Data Definition Language)(DDL)用於定義和管理對象,例如資料庫、資料表
例如:CREATE、DROP、ALTER等語句
資料操作語言(DML)操作資料庫對象所包含的資料。
例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)
資料查詢語言(DQL)
例如:SELECT語句
資料控制語言(DCL)用於控制對資料庫物件操作的許可權
例如:GRANT、COMMIT、ROLLBACK等語句
在dos操作中 ;是結束命令 執行多個命令時用,
展示資料庫 show databases;
切換資料庫 ues dataone; (dataone是資料庫名)
建立表和使用表的時候要進入資料庫;
建立一個資料庫並且在其中建立一個表的流程是:
create database newdata charset utf8;
use newdata;
create table newtable(
id int primary key not null auto_increment,
name char(20) not null default ‘‘,
sex enum(‘男‘,‘女‘),
hobby set(‘唱歌‘,‘遊泳‘,‘作死‘)
);
其中建立資料庫的時候要設定字型編碼 防止出現亂碼 而且命名資料庫名字的時候不能用純數字 純符號 和系統關鍵字 而且因為linux系統下區分大小寫 因此資料庫名最好小寫 而且不能超過64位
desc newtable;
是查詢表的結構,看他的每一個字頭都是怎麼設定的 就像剛才newtable表中的id name sex hobby 各自的儲存資料的要求是什麼
類型 大小 範圍(有符號) 範圍(無符號) 用途
tinyint 1位元組 (-128,127) (0,255) 小整數值
smallint 2 位元組 (-32 768,32 767) (0,65 535) 大整數值
MEDIUMINT 3 位元組 (-8 388 608,8 388 607) (0,16 777 215) 大整數值
INT或INTEGER 4 位元組 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數值
BIGINT 8 位元組 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值
常用的是 int tinyint smallint
設定合理的整形類型可以提高資料庫的搜尋效率,節省記憶體
decimal 這是浮點型的一個特點 舉例:
create newtable(
money decimal(5,2)
);
建立一個表 裡面的money最大是999.99 decimal裡的參數是1 總共幾位元,2 有幾位小數 這個在計算錢的時候很常用
字串類型的資料
CHAR 0-255位元組 定長字串
VARCHAR 0-<65535位元組(1-2位元組記錄長度) 變長字串
TINYBLOB 0-255位元組 不超過 255 個字元的二進位字串
TINYTEXT 0-255位元組 短文本字串
BLOB 0-65 535位元組 二進位形式的長文本資料
TEXT 0-65 535位元組 長文本資料
MEDIUMBLOB 0-16 777 215位元組 二進位形式的中等長度文本資料
MEDIUMTEXT 0-16 777 215位元組 中等長度文本資料
LOGNGBLOB 0-4 294 967 295位元組 二進位形式的極大文本資料
LONGTEXT 0-4 294 967 295位元組 極大文本資料
重點是char varchar text
char(20) 固定佔用20個位元組 超出部分就截斷 優點是搜尋效率較高 缺點是占記憶體
varchar(20) 佔用空間隨著內容多少改變 但最多20位元組 超出就截斷 優缺點和char相反
通常用char而不用varchar是因為硬體水平提高可以犧牲一點記憶體在保持程式執行效率
text就是大文本資料的情況下使用了
char和int類型的區別
char(20) 就真的是指所輸入內容不能超過20個字
int(3) 這個括弧內的是配合前置字元為零zerofill 使用的 當有了zerofill這個屬性時 輸入1 顯示001 輸入20顯示020 但是輸入的數超過999一樣能顯示 但就沒有前置字元為零這個影響了 輸入1000就顯示1000 他的上限還是根據本頁48行的整數型來限制
zerofill 是前置字元為零
unsigned 是取消負號
not null 禁止輸入空資料
default 預設為0
舉例:
create newtable(
id int(4) zerofill unsigned not null default 0,
name char(20) not null default ‘‘
);
由於搜尋對於null這個資料類型很不友好 想上面那樣先設定不準為空白再預設是Null 字元串就是規避null資料類型 這樣搜尋顯示就不是null而是真的什麼都不顯示了
enum 只能在其中選一個
set 在其中可以選多個 相當於多選題和單選題的區別
舉例:
create newtable(
sex enum(‘男‘,‘女‘),
hobby set(‘唱歌‘,‘籃球‘,‘作死‘)
)
性別只能單選而愛好可以多選 當然如果輸入不在選項中的資料將整個hobby錄入失敗
unique 唯一屬性 其他同列資料不能與之相同
primary key 主鍵 表中只能有一個主鍵 通常就是設定給id 主鍵不能包含null
auto_increment 自增 不輸入他他就按照上條資料的數值自行增長 還有設定自增了最好別設預設,試想都自增了還每次都又從0開始就太矛盾了
舉例:
create newtable(
id int unique primary key not null auto_increment,
age int not null
)
建立一個表othertable 和newtable的表結構一樣
create table othertable like newtable;
將newtable內的資料複製到othertable中
insert into othertable select * from newtable;
以上兩者結合起來完全複製表資訊就是
create table othertalbe select * from newtable;
以上需要注意的就是看清要建立的表的位置和要複製的表的位置
? 斷行符號
調出所有mysql指令
? char 斷行符號
調出關於char的使用方法 當然這些指令都是全英文的 有問題還是百度吧
其中最有用的就是設定字和背景顏色的指令:
COLOR 0A;
或者
COLOR 0E;
這兩個配色比較推薦 不滿意就COLOR+斷行符號自己調
搜尋表中所有資訊
select * from newtable;
模糊搜尋
select * from newtable where like ‘%遊泳‘
字元集合校對規則
現在我們由於硬體的提升可以稍微降低對記憶體的限制 因此現在最常用的萬國碼 utf8 在建立資料庫的時候就要設定編碼 這樣的話這個庫的內部檔案都預設資料庫的設定 建立的時候是這樣的
create database charset utf8;
在windows系統下都是gbk編碼 ios的是utf8編碼
現在操作的dos視窗就相當於一個用戶端 mysql所在的是服務端
在windows系統下 每次向資料庫發送資訊都是先將本地的gbk編碼轉成utf8編碼然後mysql伺服器接收儲存 再將utf8編碼的資訊發送回用戶端轉成gbk的正常顯示 因此先聲明本地使用什麼樣的編碼 這樣保證本地收到的資料能夠正常顯示 像這樣
set names utf8;
這就是向伺服器聲明用戶端是需要什麼樣的編碼 伺服器在發送的時候好轉成相應的以正常顯示
其他關於字元集的命令
查看建立student表的語句
show create table stu;
查看伺服器支援哪些字元集
show character set;
查看字元集定序,如果沒有指定的則採取預設進行排序
show collation;
查看系統字元集變數
show variables like ‘%character%‘;
mysql初識(一)基礎屬性篇