標籤:mysql 基礎
目錄
1、用戶端命令
2、伺服器端命令
3、常用資料類型
3.1、數值型
3.2、字元型
3.3、日期時間型
3.4、布爾型
4、mysql的執行方式
5、使用者管理
1、用戶端命令
用戶端命令不需要以分號結尾 ,如果想擷取用戶端命令的協助資訊則:
mysql> help
mysql常用用戶端命令如下:
mysql> quit或\q #表示退出mysqlmysql> go或\g #表示無論語句的結束符是什麼都把語句送到伺服器端執行,是在當被修改預設結束符後又不知道的情況下使用例如:mysql> select database()\g #顯示當前所在的資料庫mysql> use或\u 資料庫名稱 #表示設定預設資料庫 例如:mysql> \u test #表示使用test這個資料庫mysql> ego或\G #表示sql命令取回的資料縱向顯示 例如:mysql> select * from mysql.user\G #表示讀取mysql庫中user表中的所有資料,如果不用\G,那資料可讀性不高mysql> system或\! #表示在不退出mysql用戶端程式下執行shell命令,這個有點類似在vim中執行shell命令mysql> status或\s #表示擷取當前mysql的狀態資訊 mysql> delimiter或\d #表示更換語句結束符,也就是可把預設的分號結束符號更換成其他的符號
2、伺服器端命令
伺服器端命令必須有語句結束符,預設是分號,擷取伺服器端命令協助用以下命令:
mysql> help 命令
常用伺服器端命令:
mysql> select version(); #表示顯示mysql資料庫的版本號碼mysql> show databases; #顯示mysql中有哪些資料庫mysql> show databases like ‘t%‘; #顯示以字母“t”開頭的資料庫mysql> show variables; #顯示伺服器參數變數,一樣可以使用‘‘like’’這樣的子句來做模糊尋找mysql> show variables like ‘datadir%‘;mysql> show status; #顯示伺服器狀態變數mysql> help create table #擷取建立表支援的資料類型mysql> show character set; #顯示mysql所支援的字元集mysql> show collation; #顯示定序mysql> show processlist; #顯示伺服器當前所有mysql線程列表mysql> show indexes from 表名; #顯示表中的索引資訊mysql> show table status\G #查看當前預設資料庫中表狀態,有“\G”結尾的不要加分號mysql> show table status [from | in] 資料庫\G #查看指定資料庫中的表狀態
3、常用資料類型
要想擷取建立表的協助,可查看到支援的資料類型,執行下邊語句:
mysql> help create table;
3.1、數值型:數值型又分為精確數值型和近似數值型
精確數值型中的整型如下:
a)、tinyint:佔用1bype(位元組),即8位,表示數值範圍,有符號(-128,127)無符號(0,255)。為什麼有符號的範圍是(-128,127)呢?因為表示有符號數值時最高位用來表示符號位,最高位是0表示正數,最高位是1表示負數,此最高位不表示數值大小,只表示符號。那有符號的數值中最小值為“10000000”,最大值為“01111111”,在電腦中是用補碼來表示位元的大小,這裡有一個原則,正數的補碼就是其本身,負數的補碼是各位取反後再加1,所以最小值“10000000”的補碼為“011111111”,換算成十進位為127,再加上1就是128,因是負數,所以最小值就是“-128”,而正數的補碼是其本身,所以換算成二進位就是127,所以有符號的範圍是(-128,127)。
b)、smallint: 佔用2bytes, 表示範圍-(2^15-1+1),2^15-1或0,65535,計算方法如上。
c)、mediumint: 佔用3bytes,表示範圍"-(2^23-1+1),2^23-1"或"0,2^24-1"
d)、int: 佔用4bytes, 表示範圍 "-(2^31-1+1),2^31-1"或"0,2^32-1"
e)、bigint: 佔用8bytes, 表示範圍"-(2^63-1+1),2^63-1"或"0,2^64-1"
數實值型別後一般會接上一些修飾符,在精確數值型中會有以下修飾符:
not null:表示定義的欄位的值不可為空值
default ‘預設值‘:表示定義的欄位中的預設值
unsigned:表示定義欄位的數值是無符號的
auto_increment:表示值自動成長
近似數值型中的浮點型:
a)、fload:單精確度數值,佔用4bytes
b)、double:多精度數值,佔用8bytes
數實值型別後一般會接上一些修飾符,浮點型字元後的修飾符一般為:
not null,default ‘預設值‘,unsigned,zerofill,auto_increment
3.2、字元型
a)、不區分大小寫字元類型:
char(n):固定長度的字元類型,n表示數值
varchar(n):可變長的字元類型
b)、區分字元大小寫字元類型:
binary(n):固定長度的字元類型,n表示數值
varbinary(n):可變長的字元類型
c)、表示眾多字元的字元類型:
text,blob這兩種是表示眾多字元型,text不區分大小寫,blob區分大小寫。這兩種類型字元還有相應的變體
text:tinytext,text,mediumtext,longtext 儲存的內容大小依次增大
blob:tinyblob,blob,mediumblob,longblob 儲存的內容大小依次增大
這種類型的實際資料不是存放在表中的,而是存放在資料庫外圍的,表中只是存放了指向相應對象的指標。
常用修飾符:
修飾符:not null,default ‘預設值 ‘
3.3、日期時間型
data:佔用3bytes,範圍:1000-01-01 to 9999-12-31,類型可用於一個日期值而不需要時間部分,如:‘YYYY-MM-DD’
time:佔用3bytes,範圍:-838:59:59 to 838:59:59,中間有好多表示的時間範圍是浪費的,此類型用於一個時間,如:‘HH-MM-SS‘
datetime:佔用8bytes,範圍:1000-01-01 00:00:01 to 9999-12-31 23:59:59,是date與time的結合,表示‘YYYY-MM-DD HH-MM-SS’
year(2):佔用1byte,範圍:00 to 99,表示2位的年
year(4):佔用1byte,範圍:1901 to 2155,表示4位的年
timestamp:佔用4bytes,格林威治時間,與datetime類似都是儲存日期日間,格式為‘YYYY-MM-DD HH:MM:SS’,但表示的範圍與datetime不同,數值在“1970-01-01 00:00:01-2038-01-18 22:14:07”之間
常用修飾符:null,not null,default ‘預設值‘
3.4、布爾型
tinyint(1):其實是一種整形,表示只顯示一位,對於二進位來講,一位不是“0”就是“1”
3.5、內建類型(字元型)
set:集合,比如:set(a,b),那可存放的資料為‘a‘或‘b‘或‘ab‘或‘ba‘
enum:枚舉,比如:enum(a,b),那可存放的資料為‘a‘或‘b‘
4、mysql的執行方式
4.1、互動式方式:
-u‘使用者‘ = --user=‘使用者‘
-h‘主機名稱‘ = --host=‘主機名稱‘
-p‘密碼‘ = --password=‘密碼‘
-D‘資料庫名稱‘ = --database=‘資料庫名稱‘ ,表示接入Mysql後以哪個資料庫作為預設資料庫
-e‘sql語句‘ = --execute=‘sql語句‘ ,表示串連資料庫直接執行sql語句,取回值後直接返回到shell
例子:
[[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ #表示以root使用者接入本地的Mysql服務,如果省略掉--user=‘‘ 和--host=‘‘ 選項,那就預設以root使用者登陸本地的mysql,即命令可以簡化為“mysql -p”[[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ -D mysql #登陸後以mysql庫作為預設資料庫,省略了串連資料庫後用“mysql> use mysql”來切換資料庫的操作mysql> select database();+------------+| database() |+------------+| mysql |+------------+1 row in set (0.01 sec) [[email protected] ~]# mysql --user=‘root‘ --host=‘localhost‘ --password=‘111111‘ -e ‘select user,host,password from mysql.user;‘ +-----------+-----------+-------------------------------------------+| user | host | password |+-----------+-----------+-------------------------------------------+| root | localhost | *FD571203974BA9AFE270FE62151AE967ECA5E0AA || root | jason | || root | 127.0.0.1 | || | localhost | || | jason | || cactiuser | localhost | *FD571203974BA9AFE270FE62151AE967ECA5E0AA |+-----------+-----------+-------------------------------------------+#"-e"選項表示串連資料庫後直接執行sql語句,取回值後不停留在"mysql> ",而是返回到shell
4.2、批處理模式:
[[email protected] ~]# vim mysql.sqlselect user,host,password from mysql.user;a)、[[email protected] ~]# mysql -p111111 < mysql.sqlb)、mysql> source /root/mysql.sql
這兩種方式都可以進行sql的批處理操作,注意一點就是mysql.sql這個指令檔的許可權問題,在“mysql> ”中進行sql指令碼的批處理操作時mysql使用者很有可能需要對sql的指令檔要有可讀的許可權。
5、使用者管理
5.1、建立、刪除使用者
建立使用者:
文法:mysql> create user ‘使用者名稱‘@‘主機名稱‘ identified by ‘密碼‘;
使用者名稱與主機可以使用萬用字元:
‘%‘表示匹配任意長度的任一字元;如(172.16.%.%)
‘_‘表示匹配任意單個字元
mysql> create user ‘zhaochj‘@‘%‘ identified by ‘111111‘; #建立一個名為‘zhaochj’的使用者
mysql> flush privileges; #因使用者資訊有改變,所以使用者建立好後不要忘記重新整理一下許可權表,讓使用者資訊載入到記憶體
刪除使用者:
mysql> drop user ‘使用者名稱‘@‘主機‘;
5.2、給使用者授予許可權
文法:
mysql> grant all on 庫名.表名 to ‘使用者名稱‘@‘主機‘; #表示把一個庫中的一個表的所有許可權授權給一個使用者
mysql> grant all on 庫名.表名 to ‘使用者名稱‘@‘主機‘ identified by ‘密碼‘; #表示建立一個使用者並授予一個資料庫中一個表的 所有許可權,如果使用者是對一個資料庫上的所有表授權,那匹配所有表的萬用字元是“*”號
5.3、修改使用者密碼
兩種方法:
a、mysql> set password for ‘使用者名稱‘@‘主機名稱‘=password(‘密碼‘);
b、]# mysqladmin -u使用者名稱 password ‘新密碼‘ -p原密碼
本文出自 “知識需要總結與記錄” 部落格,請務必保留此出處http://zhaochj.blog.51cto.com/368705/1629681
MYSQL基礎知識整理