mysql欄位型別和基礎命令
欄位型別
日期和時間資料型別
MySQL資料型別 | 含義 |
---|---|
date | 3位元組,日期,格式:2014-09-18 |
time | 3位元組,時間,格式:08:42:30 |
datetime | 8位元組,日期時間,格式:2014-09-18 08:42:30 |
timestamp | 4位元組,自動儲存記錄修改的時間 |
year | 1位元組,年份 |
數值資料型別
整型
MySQL資料型別 | 含義(有符號) |
---|---|
tinyint | 1位元組,範圍(-128~127) |
smallint | 2位元組,範圍(-32768~32767) |
mediumint | 3位元組,範圍(-8388608~8388607) |
int | 4位元組,範圍(-2147483648~2147483647) |
bigint | 8位元組,範圍(±9.22*10的18次方) |
上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的型別,那麼對應的取值範圍就要翻翻了,比如:
tinyint unsigned的取值範圍為0~255。
浮點型
MySQL資料型別 | 含義 |
---|---|
float(m, d) | 4位元組,單精度浮點型,m總個數,d小數位 |
double(m, d) | 8位元組,雙精度浮點型,m總個數,d小數位 |
decimal(m, d) | decimal是儲存為字串的浮點數 |
我在MySQL中建立了一個表,有一列為float(5, 3);做了以下試驗:
1.插入123.45678,最後查詢得到的結果為99.999; 2.插入123.456,最後查詢結果為99.999; 3.插入12.34567,最後查詢結果為12.346;
所以,在使用浮點型的時候,還是要注意陷阱的,要以插入資料庫中的實際結果為準。
####字串資料型別
MySQL資料型別 | 含義 |
---|---|
char(n) | 固定長度,最多255個字元 |
varchar(n) | 可變長度,最多65535個字元 |
tinytext | 可變長度,最多255個字元 |
text | 可變長度,最多65535個字元 |
mediumtext | 可變長度,最多2的24次方-1個字元 |
longtext | 可變長度,最多2的32次方-1個字元 |
binary
binary屬性只用於char和varchar值。當為列指定了該屬性時,將以區分大小寫的方式排序。與之相反,忽略binary屬性時,將使用不區分大小寫的方式排序。例如:
- char(n)和varchar(n)中括號中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(UTF8)意味著可以插入m箇中文,但是實際會佔用m*3個位元組。
- 同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。
- 超過char和varchar的n設定後,字串會被截斷。
- char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。
- char在儲存的時候會截斷尾部的空格,varchar和text不會。
- varchar會使用1-3個位元組來儲存長度,text不會。
其它型別
- enum(“member1″, “member2″, … “member65535″)
enum資料型別就是定義了一種列舉,最多包含65535個不同的成員。當定義了一個enum的列時,該列的值限制為列定義中宣告的值。如果列宣告包含NULL屬性,則NULL將被認為是一個有效值,並且是預設值。如果聲明瞭NOT NULL,則列表的第一個成員是預設值。
- set(“member”, “member2″, … “member64″)
set資料型別為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中宣告的值。
mysql
常用命令
連線MYSQL
mysql -h主機地址-u使用者名稱-p使用者密碼
連線到本機上的MYSQL
mysql -uroot -p
,回車後提示你輸密碼,如果剛安裝好MYSQL,超級使用者root是沒有密碼的,故直接回車
mysql -h110.110.110.110 -uroot -pabcd123
修改密碼
mysqladmin -u使用者名稱-p舊密碼password 新密碼
mysqladmin -uroot -password ab12
注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。
mysqladmin -uroot -pab12 password djg345
匯出整個資料庫
mysqldump -u 使用者名稱 -p –default-character-set=latin1
資料庫名 > 匯出的檔名(資料庫預設編碼是latin1)
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
匯出一個表
mysqldump -u 使用者名稱 -p 資料庫名 表名> 匯出的檔名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
匯出一個數據庫結構
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 沒有資料
–add-drop-table 在每個create語句之前增加一個drop table
匯入資料庫
- 常用source 命令
進入mysql資料庫控制檯,
如mysql -u root -p
mysql>use 資料庫
然後使用source命令,後面引數為指令碼檔案(如這裡用到的.sql)
mysql>source wcnc_db.sql
- 使用
mysqldump
命令
mysqldump -u username -p dbname < filename.sql
- 使用
mysql
命令
mysql -u username -p -D dbname < filename.sql
匯入資料庫表
c:mysqlbin>mysql -u root -p auction < auction.sql。 通過以上操作,就可以建立了一個數據庫auction以及其中的一個表auction。
啟動與退出
啟動mysql -u 使用者名稱 -p
根據提示輸入密碼
退出quit或exit
檢視當前使用的資料庫
select database();
mysql資料庫的許可權
mysql>grant select,insert,delete,create,drop
on 資料庫
to 使用者名稱@localhost
identified by ‘密碼’;
如:新建一個使用者帳號以便可以訪問資料庫,需要進行如下操作:
mysql> grant usage
-> ON test.*
-> TO [email protected];
此後就建立了一個新使用者叫:testuser,這個使用者只能從localhost連線到資料庫並可以連線到test 資料庫。下一步,我們必須指定testuser這個使用者可以執行哪些操作:
mysql> GRANT select, insert, delete,update
-> ON test.*
-> TO [email protected]
此操作使testuser能夠在每一個test資料庫中的表執行SELECT,INSERT和DELETE以及UPDATE查詢操作
grant all on mydb.* to [email protected] identified by “password”;
grant usage on *.* to [email protected] identified by “password”;
grant select,insert,update on mydb.* to [email protected] identified by “password”;
grant update,delete on mydb.TestTable to [email protected] identified by “password”;
全域性管理許可權:
FILE: 在MySQL伺服器上讀寫檔案。
PROCESS: 顯示或殺死屬於其它使用者的服務執行緒。
RELOAD: 過載訪問控制表,重新整理日誌等。
SHUTDOWN: 關閉MySQL服務。
資料庫/資料表/資料列許可權:
Alter: 修改已存在的資料表(例如增加/刪除列)和索引。
Create: 建立新的資料庫或資料表。
Delete: 刪除表的記錄。
Drop: 刪除資料表或資料庫。
INDEX: 建立或刪除索引。
Insert: 增加表的記錄。
Select: 顯示/搜尋表的記錄。
Update: 修改表中已存在的記錄。
特別的許可權:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登入–其它什麼也不允許做。