1. 程式人生 > >mysql欄位型別和基礎命令

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屬性時,將使用不區分大小寫的方式排序。例如:

  1. char(n)和varchar(n)中括號中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(UTF8)意味著可以插入m箇中文,但是實際會佔用m*3個位元組。
  2. 同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。
  3. 超過char和varchar的n設定後,字串會被截斷。
  4. char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。
  5. char在儲存的時候會截斷尾部的空格,varchar和text不會。
  6. varchar會使用1-3個位元組來儲存長度,text不會。

其它型別

  1. enum(“member1″, “member2″, … “member65535″)

enum資料型別就是定義了一種列舉,最多包含65535個不同的成員。當定義了一個enum的列時,該列的值限制為列定義中宣告的值。如果列宣告包含NULL屬性,則NULL將被認為是一個有效值,並且是預設值。如果聲明瞭NOT NULL,則列表的第一個成員是預設值。

  1. 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: 只允許登入–其它什麼也不允許做。