mysql基础知识整理_MYSQL基础知识整理
目錄
1、客戶端命令
2、服務器端命令
3、常用數(shù)據(jù)類型
3.1、數(shù)值型
3.2、字符型
3.3、日期時間型
3.4、布爾型
4、mysql的執(zhí)行方式
5、用戶管理
1、客戶端命令
客戶端命令不需要以分號結尾 ,如果想獲取客戶端命令的幫助信息則:mysql>?help
mysql常用客戶端命令如下:mysql>?quit或\q???#表示退出mysql
mysql>?go或\g????#表示無論語句的結束符是什么都把語句送到服務器端執(zhí)行,是在當被修改默認結束符后又不知道的情況下使用
例如:
mysql>?select?database()\g????#顯示當前所在的數(shù)據(jù)庫
mysql>?use或\u?數(shù)據(jù)庫名稱?????#表示設定默認數(shù)據(jù)庫
例如:
mysql>?\u?test????#表示使用test這個數(shù)據(jù)庫
mysql>?ego或\G???#表示sql命令取回的數(shù)據(jù)縱向顯示
例如:
mysql>?select?*?from?mysql.user\G????#表示讀取mysql庫中user表中的所有數(shù)據(jù),如果不用\G,那數(shù)據(jù)可讀性不高
mysql>?system或\!?#表示在不退出mysql客戶端程序下執(zhí)行shell命令,這個有點類似在vim中執(zhí)行shell命令
mysql>?status或\s?????#表示獲取當前mysql的狀態(tài)信息
mysql>?delimiter或\d???#表示更換語句結束符,也就是可把默認的分號結束符號更換成其他的符號
2、服務器端命令
服務器端命令必須有語句結束符,默認是分號,獲取服務器端命令幫助用以下命令:mysql>?help?命令
常用服務器端命令:mysql>?select?version();????#表示顯示mysql數(shù)據(jù)庫的版本號
mysql>?show?databases;????#顯示mysql中有哪些數(shù)據(jù)庫
mysql>?show?databases?like?'t%';????#顯示以字母“t”開頭的數(shù)據(jù)庫
mysql>?show?variables;???#顯示服務器參數(shù)變量,一樣可以使用‘‘like’’這樣的子句來做模糊查找
mysql>?show?variables?like?'datadir%';
mysql>?show?status;????#顯示服務器狀態(tài)變量
mysql>?help?create?table??#獲取創(chuàng)建表支持的數(shù)據(jù)類型
mysql>?show?character?set;???#顯示mysql所支持的字符集
mysql>?show?collation;??#顯示排序規(guī)則
mysql>?show?processlist;?#顯示服務器當前所有mysql線程列表
mysql>?show?indexes?from?表名;??#顯示表中的索引信息
mysql>?show?table?status\G??#查看當前默認數(shù)據(jù)庫中表狀態(tài),有“\G”結尾的不要加分號
mysql>?show?table?status?[from?|?in]?數(shù)據(jù)庫\G???#查看指定數(shù)據(jù)庫中的表狀態(tài)
3、常用數(shù)據(jù)類型
要想獲取創(chuàng)建表的幫助,可查看到支持的數(shù)據(jù)類型,執(zhí)行下邊語句:mysql>?help?create?table;
3.1、數(shù)值型:數(shù)值型又分為精確數(shù)值型和近似數(shù)值型
精確數(shù)值型中的整型如下:
a)、tinyint:占用1bype(字節(jié)),即8位,表示數(shù)值范圍,有符號(-128,127)無符號(0,255)。為什么有符號的范圍是(-128,127)呢?因為表示有符號數(shù)值時最高位用來表示符號位,最高位是0表示正數(shù),最高位是1表示負數(shù),此最高位不表示數(shù)值大小,只表示符號。那有符號的數(shù)值中最小值為“10000000”,最大值為“01111111”,在計算機中是用補碼來表示二進制數(shù)的大小,這里有一個原則,正數(shù)的補碼就是其本身,負數(shù)的補碼是各位取反后再加1,所以最小值“10000000”的補碼為“011111111”,換算成十進制為127,再加上1就是128,因是負數(shù),所以最小值就是“-128”,而正數(shù)的補碼是其本身,所以換算成二進制就是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"
數(shù)值類型后一般會接上一些修飾符,在精確數(shù)值型中會有以下修飾符:
not null:表示定義的字段的值不能為空值
default '默認值':表示定義的字段中的默認值
unsigned:表示定義字段的數(shù)值是無符號的
auto_increment:表示值自動增長
近似數(shù)值型中的浮點型:
a)、fload:單精度數(shù)值,占用4bytes
b)、double:多精度數(shù)值,占用8bytes
數(shù)值類型后一般會接上一些修飾符,浮點型字符后的修飾符一般為:
not null,default '默認值',unsigned,zerofill,auto_increment
3.2、字符型
a)、不區(qū)分大小寫的字符類型:
char(n):固定長度的字符類型,n表示數(shù)值
varchar(n):可變長的字符類型
b)、區(qū)分字符大小寫的字符類型:
binary(n):固定長度的字符類型,n表示數(shù)值
varbinary(n):可變長的字符類型
c)、表示眾多字符的字符類型:
text,blob這兩種是表示眾多字符型,text不區(qū)分大小寫,blob區(qū)分大小寫。這兩種類型字符還有相應的變體
text:tinytext,text,mediumtext,longtext ?存儲的內容大小依次增大
blob:tinyblob,blob,mediumblob,longblob ??存儲的內容大小依次增大
這種類型的實際數(shù)據(jù)不是存放在表中的,而是存放在數(shù)據(jù)庫外圍的,表中只是存放了指向相應對象的指針。
常用修飾符:
修飾符: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不同,數(shù)值在“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),那可存放的數(shù)據(jù)為'a'或'b'或'ab'或'ba'
enum:枚舉,比如:enum(a,b),那可存放的數(shù)據(jù)為'a'或'b'
4、mysql的執(zhí)行方式
4.1、交互式方式:
-u'用戶' = --user='用戶'
-h'主機名' = --host='主機名'
-p'密碼' = --password='密碼'
-D'數(shù)據(jù)庫名稱' = --database='數(shù)據(jù)庫名稱' ,表示接入Mysql后以哪個數(shù)據(jù)庫作為默認數(shù)據(jù)庫
-e'sql語句' = --execute='sql語句' ,表示連接數(shù)據(jù)庫直接執(zhí)行sql語句,取回值后直接返回到shell
例子:[root@jason?~]#?mysql?--user='root'?--host='localhost'?--password='111111'?#表示以root用戶接入本地的Mysql服務,如果省略掉--user=''?和--host=''?選項,那就默認以root用戶登陸本地的mysql,即命令可以簡化為“mysql?-p”
[root@jason?~]#?mysql?--user='root'?--host='localhost'?--password='111111'?-D?mysql??#登陸后以mysql庫作為默認數(shù)據(jù)庫,省略了連接數(shù)據(jù)庫后用“mysql>?use?mysql”來切換數(shù)據(jù)庫的操作
mysql>?select?database();
+------------+
|?database()?|
+------------+
|?mysql??????|
+------------+
1?row?in?set?(0.01?sec)
[root@jason?~]#?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"選項表示連接數(shù)據(jù)庫后直接執(zhí)行sql語句,取回值后不停留在"mysql>?",而是返回到shell
4.2、批處理模式:[root@jason?~]#?vim?mysql.sql
select?user,host,password?from?mysql.user;
a)、[root@jason?~]#?mysql?-p111111?
b)、mysql>?source?/root/mysql.sql
這兩種方式都可以進行sql的批處理操作,注意一點就是mysql.sql這個腳本文件的權限問題,在“mysql> ”中進行sql腳本的批處理操作時mysql用戶很有可能需要對sql的腳本文件要有可讀的權限。
5、用戶管理
5.1、創(chuàng)建、刪除用戶
創(chuàng)建用戶:
語法:mysql> create user '用戶名'@'主機名' identified by '密碼';
用戶名與主機可以使用通配符:
'%'表示匹配任意長度的任意字符;如(172.16.%.%)
'_'表示匹配任意單個字符
mysql> create user 'zhaochj'@'%' identified by '111111'; ?#創(chuàng)建一個名為‘zhaochj’的用戶
mysql> flush privileges; #因用戶信息有改變,所以用戶創(chuàng)建好后不要忘記刷新一下權限表,讓用戶信息加載到內存
刪除用戶:
mysql> drop user '用戶名'@'主機';
5.2、給用戶授予權限
語法:
mysql> grant all on 庫名.表名 to '用戶名'@'主機'; ?#表示把一個庫中的一個表的所有權限授權給一個用戶
mysql> grant all ?on 庫名.表名 to '用戶名'@'主機'identified by '密碼'; ?#表示創(chuàng)建一個用戶并授予一個數(shù)據(jù)庫中一個表的?所有權限,如果用戶是對一個數(shù)據(jù)庫上的所有表授權,那匹配所有表的通配符是“*”號
5.3、修改用戶密碼
兩種方法:
a、mysql> set password for '用戶名'@'主機名'=password('密碼');
b、]# mysqladmin -u用戶名 password ?'新密碼' ?-p原密碼
總結
以上是生活随笔為你收集整理的mysql基础知识整理_MYSQL基础知识整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pause容器作用_Kubernetes
- 下一篇: python函数变量的作用域_学不会的P