新聞中心
第一部分:MySQL基礎(chǔ)概念 Mariadb的基礎(chǔ): 設(shè)計范式: 第一范式:字段是原子性的 第二范式:非主屬性完全依賴于主屬性 存在可用主鍵 第三范式:非主屬性對主屬性不存在傳遞函數(shù)依賴關(guān)系。 任何都不應(yīng)該依賴于其他表的非主屬性 約束:主鍵、唯一鍵、外鍵、檢查性約束 SQL組件 數(shù)據(jù)庫、表、索引、視圖、存儲過程、存儲函數(shù)、觸發(fā)器、事件調(diào)度器、用戶和權(quán)限 元數(shù)據(jù)數(shù)據(jù)庫:mysql Mariadb安裝方式: rpm包 通用二進(jìn)制 編譯安裝 第二部分:SQL語句 DDL,DML DDL:create,alter,drop DML:insert,delete,update,select DCL:grant,revoke, MySQL圖形化管理工具
第一部分:MySQL基礎(chǔ)概念
一、基礎(chǔ)架構(gòu)
1.數(shù)據(jù)庫系統(tǒng):(通用模型)
分析器:分析sql語句,命令,語法,庫名,字段名,表名等
操作求解器:操作過程應(yīng)該怎樣執(zhí)行,可能會提供多條執(zhí)行路徑
計劃執(zhí)行器:選擇最優(yōu)執(zhí)行路徑,
鎖管理器是事務(wù)管理器的一個基本組件
文件存取方法 //r或w
緩沖區(qū)管理方法 //
磁盤空間管理器 //限定表或者庫占用空間大小
事務(wù)管理器 //
恢復(fù)管理器 //恢復(fù)此前未執(zhí)行完成的事務(wù)
2.事務(wù)概念
事務(wù)(transaction):組織多個操作為一個整體,要么全部執(zhí)行,要么全部都不執(zhí)行
回滾:rollback,假如未執(zhí)行完成,所有的都要回滾
Bos:8000-1000
Alice:5000,5000+1000
一個存儲系統(tǒng)是否支持事務(wù):測試標(biāo)準(zhǔn)
ACID:
A:原子性,不可分割的一個整體
C:一致性,前后的總和是一致的,變化前后是一致的
I:隔離性,事務(wù)彼此之間是隔離的,我在取錢的時候,其他人不能操作該賬戶
D:持久性,事務(wù)執(zhí)行成功,則保存在disk中,則不能修改
原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
二、數(shù)據(jù)庫范式
數(shù)據(jù)庫設(shè)計具有一定的規(guī)范性
員工信息:
約束:外鍵約束,A表依賴于B表的某個字段
表達(dá)式約束:限定age范圍為1-100
主鍵:唯一的標(biāo)識身份
RDBMS: //一般滿足第三范式即可,范式是遞進(jìn)關(guān)系
1.第一范式1NF //列不可再分,列唯一
每一列都是不可分割的原子數(shù)據(jù),而不能是集合,屬組等非原子數(shù)據(jù)項
實體中有多個值時,必須拆分為不同的屬性,即無重復(fù)的域
關(guān)系模式中,每個屬性不可再分。屬性原子性
職工號,姓名,電話號碼組成一個表(一個人可能有多個電話號碼)
方案1:重復(fù)存儲職工號和姓名。這樣,關(guān)鍵字只能是電話號碼。//不滿足
方案2:二是職工號為關(guān)鍵字,電話號碼分為單位電話和住宅電話兩個屬性
2.第二范式2NF//
在一范式的基礎(chǔ)上,非主屬性完全依賴于主屬性,即消除非主屬性對主屬性的部分函數(shù)依賴關(guān)系。
sc(sid,cid,grade,credit)其中sid為學(xué)號, cid為課程號,grade為成績,credit為學(xué)分。 由以上條件,關(guān)鍵字為組合關(guān)鍵字(sid,cid)
sc(sid,cid,grade,credit)//非關(guān)鍵字屬性credit僅函數(shù)依賴于cid,也就是credit部分依賴組合關(guān)鍵字(sid,cid)而不是完全依賴。
必須拆分為:sc(sid,cid,grade),c(cid,credit)
3.第三范式3NF //
二的基礎(chǔ)上,非主屬性對主屬性不存在傳遞函數(shù)依賴關(guān)系。
s(sid,sname,did,dname,location) 各屬性分別代表學(xué)號,姓名,所在系,系名稱,系地址。
問題:did,dname,location將重復(fù)存儲
原因:關(guān)系中存在傳遞依賴造成的。即sid -> did。而did ->sid卻不存在,did -> location, 因此關(guān)鍵字sid對location函數(shù)決定是通過傳遞依賴did->location 實現(xiàn)的。也就是說,sid不直接決定非主屬性location。
方法:分為兩個關(guān)系 s(sid,sname,did),d(dno,dname,location)
注意:關(guān)系s中必須有外關(guān)鍵字did。否則兩個關(guān)系之間失去聯(lián)系。
4.第五范式,巴斯特科范式
http://www.cnblogs.com/hi-bazinga/archive/2012/06/05/2536806.html
三、數(shù)據(jù)庫其他概念
數(shù)據(jù)庫:數(shù)據(jù)的集合
績溪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
表:為了滿足范式設(shè)計要求,將一個數(shù)據(jù)集拆分為多個 約束:constraint,向數(shù)據(jù)表插入要遵循的限制規(guī)則 主鍵:一個或多個字段的組合,主鍵的數(shù)據(jù)必須唯一,不能重復(fù) 外鍵:A表某字段能插入的數(shù)據(jù)依賴于B表的主鍵中的數(shù)據(jù) 唯一鍵:一個或多個字段的組合,填入唯一鍵中的約束,必須不同于已存在的數(shù)據(jù),可以為空 檢查性約束:取決于表達(dá)式的請求 索引:將表中的某一個或某些字段抽取出來,單獨存儲為一個獨特的數(shù)據(jù)結(jié)構(gòu); 索引是一個數(shù)據(jù)結(jié)構(gòu): 常見的索引類型: 樹狀: hash: 目的:加快查找速度,但不利于w請求 關(guān)系運算: 選擇:選擇符合條件的行 投影:選擇符合條件的列 連接:將多張表關(guān)聯(lián)起來 左連接,右鏈接,笛卡爾積,內(nèi)連接 數(shù)據(jù)抽象: 物理層:決定數(shù)據(jù)的存儲格式,即如何將數(shù)據(jù)組織為物理文件 邏輯層:描述DB存儲什么數(shù)據(jù),以及數(shù)據(jù)間存在什么關(guān)系 視圖層:描述DB中的部分?jǐn)?shù)據(jù); 關(guān)系模型的分類: 一般關(guān)系模型: 實體關(guān)系模型: 基于對象的關(guān)系模型: 半結(jié)構(gòu)化關(guān)系模型: xml
Mariadb(Mysql)
Unireg:
MySQL AB--->公司,早期是針對Unireg做的應(yīng)用接口,
賣給了Sun公司,早期是運行在Solaris:二進(jìn)制版本,后來才在linux上
Sun被oracle收購了
My:作者的大女兒
Maria:作者的三女兒
mysql:www.mysql.com
Mariadb:wwww.mariadb.org
四、安裝MariaDB
Mariadb的特性:
插件式存儲引擎,存儲管理器有多種實現(xiàn)版本,用戶可根據(jù)需要靈活選擇
存儲引擎也稱為“表類型"
1.更多的存儲引擎 //show engines
MyISAM //5.1默認(rèn)使用
MyISAM-->Aria //
InnoDB-->XtraDB //支持事務(wù)5.5以后
2.諸多擴展新特性:
3.提供了較多的測試組件
4.truly open source;真的開源
MySQl的發(fā)行機制
Enterprise:提供了更豐富的功能
Community:
安裝方式:
1.rpm包
1.由OS的發(fā)行商提供
2.程序官方提供
2.源碼包
3.通用二進(jìn)制格式//解壓后,簡單配置即可
通用二進(jìn)制格式安裝mariadb: //先卸載之前安裝的版本
1.卸載原有版本解壓新版本
systemctl stop mariadb cp /usr/lib/systemd/system/mariadb.service /root 備份unit文件 yum remove mariadb-server https://downloads.mariadb.org/ mariadb-5.5.46-linux-x86_64.tar.gz //文件名 tar xvf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/ cd /usr/local ln -sv mariadb-5.5.46-linux-x86_64/ mysql
2. 屬組,目錄及權(quán)限,配置文件
id mysql || group add -r -g 306 mysql //沒有的話,就創(chuàng)建該系統(tǒng)用戶 cd /usr/local/mysql/ chown -R root:mysql ./* mkdir /mydata/data -pv chown -R mysql.mysql /mydata/data/ 注:/etc/my.cnf 是以前的包,需要刪除,或者移動到其他地方 /usr/local/mysql/support-files :提供有配置文件 mkdir /etc/mysql cp support-files/my-large.cnf /etc/mysql/my.cnf //這個目錄也會被讀取配置 vim /etc/mysql/my.cnf [mysqld] ... datadir = /mydata/data skip_name_resolve = ON innodb_file_per_table = ON ...
3.初始化元數(shù)據(jù):
scripts/mysql_install_db --help scripts/mysql_install_db --user=mysql --datadir=/mydata/data --skip-name-resolve 啟動: 1.cp support-files/mysql.server /etc/init.d/mysqld //使用centos6的方式 chmod +x chkconfig --add mysqld service mysqld start 2.vim /root/mairadb.service //使用unit文件啟動 unit文件修改添加
小結(jié):
1.添加系統(tǒng)用戶,修改屬組
2.創(chuàng)建目標(biāo)目錄,修改屬主屬組
3.復(fù)制并修改配置文件
4.初始化數(shù)據(jù)庫(指定user,datadir,--skip-name-resolve)
后續(xù)步驟:
1.添加lib
vim /etc/ld.so.conf.d/mariadb2.conf
/usr/local/mysql/httpd
ldconfig -p |grep mysqld
2.path
vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin
source /etc/profile
3.man //在/usr/local目錄下能自己找到
4.頭文件include
ln -sv /usr/local/mysql/include/mysql/ /usr/include/
步驟:cat INSTALL-BINARY //這個文件有具體的安裝步驟
1.準(zhǔn)備/mydata/datda 2.useradd -r mysql cd /usr/local ln -sv mari-server mysql cd /usr/local/mysql/ chown -R root:mysql ./* scripts/mysql_install_db --user=mysql --datadir=/mydata/data cp support-files/mysql.server /etc/init.d/mysqld chconfig --add mysqld 3.配置文件 ini格式的配置文件,各程序均可通過此配置文件獲取配置信息; [program_name] 配置文件查找次序:mysql --help //可以看到次序 1.RPM包的 /etc/mysql/my.cnf-->/etc/my.cnf---> ~/.my.cnf 假如沖突:越靠后,起作用 2.通用二進(jìn)制 /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 假如沖突:越靠后,起作用 cp support-files/my-large.cnf /etc/my.cnf 添加: datadir = /mydata/data innodb_file_per_table = ON skip_name_resolve = ON 4.啟動服務(wù) service mairadb start
注:數(shù)據(jù)庫系統(tǒng)非常浪費內(nèi)存和硬件
原有的/etc/my.cnf會影響,需要處理
注意:
1. 5.x就是為了兼容MySQL5.x的,接口幾乎一致,把支持開源自由軟件的用戶從社區(qū)版MySQL拿到MariaDB上
2.10.x說過會大量使用新技術(shù),接口會與mysql徹底分道揚鑣了。目標(biāo)就是以后想MariaDB新接口過渡。
問題:unit文件
1.受systemd控制
安裝后生成的文件:/usr/lib/systemd/system/dhcpd.service
[root@MT ~]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
2.cp mariadb55.service /usr/lib/systemd/system/
vim /usr/lib/systemd/system/mariadb55.service
ExecStart=/usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql //修改,pre和post都刪除即可
配置文件,扔為原有的
第二部分:SQL語句
DDL,DML
DDL:create,alter,drop
DML:insert,delete,update,select
DCL:grant,revoke,
MySQL圖形化管理工具
一、Mariadb程序的組成:
C:client
mysql:CLI交互式客戶端程序
mysqldump:備份
mysqladmin:管理工具
mysqlbinlog:查看二進(jìn)制日志
...
S:server
三類套接字地址:
IPv4,3306/tcp
Unix Sock:/var/lib/mysql/mysql.lock ,/tmp/mysql.lock //服務(wù)啟動生成,關(guān)閉刪除
本機:C===S:127.0.0.1
mysqld
mysqld_safe //建議運行使用的服務(wù)端程序,默認(rèn)使用
mysqld_multi:多實例;
mysqld_upgrade:升級工具
...
獲取其讀取次序的方法
mysqld --verbose --help | less
mysql --help | less
mysql命令
常用選項
-u 用戶名,默認(rèn)為root
-h 遠(yuǎn)程主機,默認(rèn)為localhost
-p 密碼,默認(rèn)為空
-D --database=name,直接選擇數(shù)據(jù)庫 //在6上默認(rèn)顯示當(dāng)前所處的庫,select database();查看,use db_name 使用該庫
-e --excute=name ,直接運行該命令,并不進(jìn)入交互式
注意:mysql的用戶賬號由兩部分組成:'usernmae'@'host';其中host用于限制此用戶可通過哪些遠(yuǎn)程主機連接當(dāng)前的mysql服務(wù)
host的表示方式,支持使用通配符;
%:任意長度的任意字符;
172.16.%.%
_:匹配單個字符:
二、c/s相關(guān)命令
客戶端命令;
服務(wù)器命令;通過mysql連接發(fā)往服務(wù)器執(zhí)行并取回結(jié)果
客戶端:
mysql> help \u db_name \q 退出 \d CHAR:設(shè)定新的語句結(jié)束符 \g 發(fā)送給服務(wù)器,通用結(jié)束符 \G 語句結(jié)束標(biāo)記,結(jié)果豎排方式顯示 \s 連接狀態(tài),
服務(wù)端命令:
DDL,DML,DCL
注意:每個語句必須有語句結(jié)束符,默認(rèn)為分號(;)
三、數(shù)據(jù)類型://目的,確定數(shù)據(jù)格式,能夠參與的運算,可用有效范圍
表:行和列
創(chuàng)建表:定義表中的字段
定義字段時:確定數(shù)據(jù)類型非常關(guān)鍵
用于確定:數(shù)據(jù)存儲格式、能參與運算種類、可表示的有效的數(shù)據(jù)范圍
字符型:字符集
碼表:在字符和二進(jìn)制數(shù)字之間建立映射關(guān)系
Db、client、server、Conn可以有不同的字符集
show characet set
類型:
字符型 定長字符型:// 0-255個字符 char(#):不區(qū)分字符大小寫 binary(#):區(qū)分大小寫 0-255 varbinary(#):0-65535 變長字符型:// 0-65535多個 varchar(#):需要一個結(jié)束符 varbinary(#):需要結(jié)束符,占用一個字符 對象存儲://表中存放的是指針,真實的數(shù)據(jù)存儲在其他地方 text:存儲大量文本,2^32次方個字符 tinytext 0-255 //字節(jié) text 0-65535 mediumtext 0-2^24 longtext 0-2^32 blob:二進(jìn)制大對象,區(qū)分大小寫 tinyblob,blob,mediumblob,longblob 與text類似 內(nèi)置類型: set:集合 SET (‘a(chǎn)’,’b’,’c’)表示插入的值可以是a,b,c三個字符的任意組合,即插入‘a(chǎn)',‘a(chǎn)c',‘a(chǎn)bc'都是合法的 enum:枚舉 ENUM (‘a(chǎn)’, ‘b’,‘c’)表示插入的值只能在a,b,c中進(jìn)行選擇 數(shù)值型 精確數(shù)值型 int(tinyint,smallint,mediumint,int,bigint) 1,2,3,4,8 int:2^32-1 或者-(2^32/2)-(2^32/2-1) //有無符號 bit Bit類型只有1和0兩個值 近似數(shù)值型 float 4字節(jié) dobule 8字節(jié) DECIMAL占用(m+2)個字節(jié) DECIMAL(m,d)中,m表示數(shù)字的總長度,小數(shù)點不占位; d表示小數(shù)點后面的數(shù)字長度 日期時間型 日期型:date 時間型:time 日期時間型:datetime 時間戳:timestamp //1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現(xiàn)在的總秒數(shù) 年份:year(2),year(4) 數(shù)據(jù)類型修飾符: unsigned:無符號數(shù)值型 not null:非空 // default value:默認(rèn)值
字符型:
數(shù)值型:
字符修飾符:
not null/null/default 'string'/collation ''/ 排序的規(guī)則
show character set;
show collation ;
DML:數(shù)據(jù)操作語言,主要用于管理表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)的增,刪,改,查
insert,delete,update,select
數(shù)值類型修飾符:
not null/null/default numer/
auto_increment/select last_insert_id() //查看增長到了哪個
float和double修飾符:
auto_increment,default,not null,null,unsigned,zerofile
bit:二級制類型
booltype:
tinyint(1) //mysql的bool型是只顯示tinyint(1),1或者0
boolean
bool
日期修飾符:
null/not null/default
enum和set類型
enum //從1-65535個字符串,任意一個元素,但是不能組合
set //1-64 bit個字符串的集合,元素可任意組合
存儲時:enum('a','1') //在存儲數(shù)據(jù)的時候,存儲的是,enmu中的索引
例如insert .. value('a') //存儲的是 0 ,也就是enum('a')的索引,而不是a字串
set存儲:
set('a','b','c') //insert 數(shù)據(jù)'a' ,存儲的是100 /因為a出現(xiàn),其他沒有出現(xiàn)
//因此一般enum和set不拿來排序和比較
修飾符:
not null/null/default
四、服務(wù)器端命令
DDL:數(shù)據(jù)定義語言,主要用于定義數(shù)據(jù)庫組件,例如表,索引,視圖,用戶,存儲過程
create,alter,drop
DML:數(shù)據(jù)操作語言,主要用于管理表中的數(shù)據(jù),實現(xiàn)數(shù)據(jù)的增,刪,改,查
insert,delete,update,select
獲取命令的幫助
mysql>help COMMAND
數(shù)據(jù)庫管理:
1.創(chuàng)建:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
字符集查看:show character set
查看排序規(guī)則:show collation;
2.修改ALTER {DATABASE | SCHEMA} [db_name] alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name
3.刪除DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
注:可以通過在data目錄中創(chuàng)建子目錄,來建立數(shù)據(jù)庫,但是不建議這么做
表管理:
創(chuàng)建:create table if not exists tb_name (create_defination) create_defination 字段:col_name data_type 鍵:primary key(col1,col2,...) unique key (col1,col2,...) foreign key(clo) 索引: key|index [index_name} (col1,col2,..) create table student(id int unsigned not null,name char(30) not null,age tinyint unsigned,gender enum('f','m')); create table student(id int unsigned not null,name char(30) not null,age tinyint unsigned,gender enum('f','m'),primary key(id,name)); 注:unsigned 應(yīng)該放在not null之前,緊挨著int之后,否則會出錯 engine = 存儲引擎 show tables status \G;查看默認(rèn)引擎 show tables status like student \G;查看指定表 show engines:查看所有支持的引擎 show table status like 'student' \G;
注:數(shù)據(jù)庫有專門的設(shè)計工具
修改:alter table table_name alter_specification
alter_specification
字段:
add: ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] alter table student add class varchar(100) not null first; drop:DROP [COLUMN] col_name|PRIMARY KEY|FOREIGN KEY fk_symbol alter table student drop column class; modifty:MODIFY [COLUMN] col_name column_definition 只修改定義 lter table student modify class varchar(100) not null after id; change:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
鍵:
添加:add {primary key|unique key|unique key} index_name
刪除:
drop primary key
drop froeign key fk_symbol
drop key|index index_name //鍵在一定程度上也是索引
索引:
添加:add {index|key} [index_name} {col1,col2,...}
刪除:drop primary key
alter table student drop primary key;
alter table student add unique key (name);
查看:show indexes from student
表選項:
engine = engine_name //不建議,創(chuàng)建時直接指定即可
表的引用方式:
tbl_name
create mydb.class //絕對路徑,庫名.表明
五、DDL和DML語句
第二種創(chuàng)建方式:復(fù)制表結(jié)構(gòu)
第三種創(chuàng)建方式; 復(fù)制表數(shù)據(jù)
1.索引:加速查詢,但是不利于查詢操作
索引是特殊的數(shù)據(jù)結(jié)構(gòu):
索引要有名稱:
創(chuàng)建:crete [索引選項] index index_name [index_type] on tbl_name (col1,col2,...)
索引選項:unique,fulltext,spatial
index_type: btree/hash
mysql中只有memory才支持hash,而memroy表很少手動創(chuàng)建
create index named_class on student (name,class);
ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)
刪除
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
//沒有修改,因為索引是及時創(chuàng)建的
查看索引:
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
mysql> show index from tblname;
mysql> show keys from tblname;
2.DML語句:
insert [into] tbl_name {col1,clo2,,,} {values|value} (va1,va2,va3...),(va1,va2,va3,,,),...
注意:
字符型:引號
數(shù)值型:前萬不要引號
insert into student values (1,'xiyu','ou yang feng',78,'f');
insert into student (id,name) values (2,'huang yao shi'),(3,'zhou botong');
select * from student;
select
1.select * from tbl_name
2.select col1,col2,col3,.. from tbl_name
顯示時,字段可以顯示為別名
select id as stuid,name from student; //投影
3.select col1,col2,... from tbl_name where claues
where clause:用于指明挑選條件
age>30
操作符:
>,>=,=,小于,小于等于
組合測試:
and
or
not
操作符:
between // age between 30 and 80
like 'pattern' //
like支持的通配符
%:任意長度的任意字符
_:單個字符
rlike //正則表達(dá)式
^ 行首
$ 結(jié)尾
is
is null//為空的
is not null //非空的
4.select col1,col2,... tbl_name [where clause] order by col_name,col_name2 [asc|desc]
desc 將序排序
select id,name,age from student where age>30;
elect id,name,age from student where name='OU yANG FENG' and age>30;
select name from students where name like '%ang%'
select name from student where name rlike '^z.*bo*';
select id,name from student order by id desc;
delete
delete from tbl_name [where where_conditon] [order by ...] [limit row_count]
刪除是按行刪除的,不能只刪除一行的一個字段
delete from student where age is null //假如不給where,會刪除整個表
生成隨機數(shù)據(jù):
for i in {1..100} ; do AGE=$RANDOM%100;mysql -e "insert into testdb.student (id,name,age) values ($i,'stu$i',$AGE);"; done
stu$i,%ARG //使用“” 也可以
delete from student order by age desc limit 20;
select * from student order by age desc;
update:
update //id最大的人的年齡減去10歲
update student set age=age-5 order by id desc limit 10;
select id,name,age from student order by id desc;
update student set age=age-15 where name not like 'stu%';
六、用戶賬號及權(quán)限管理
用戶賬號: 'username'@'host'
host:此用戶訪問當(dāng)前服務(wù)器時,允許其通過哪些主機遠(yuǎn)程創(chuàng)建鏈接
表示方式:IP,網(wǎng)絡(luò),主機名,通配符{%和_}
禁止檢查主機名:my.cnf
[mysqld]
skip_name_resolve = ON
create user 'wolf'@'host' identified by 'password' //只有查看test庫權(quán)限
刪除用戶:
drop user test;
查看用戶信息:
select host,user,password from user;
授權(quán)級別:
權(quán)限級別:管理權(quán)限、數(shù)據(jù)庫、表、字段、存儲過程;
grant priv_type,... on [object_type] db_name.tbl_name to 'user'@'host' [identified by 'password']
db_name.tb_name
db_name.* //庫內(nèi)的所有表
*.* 所有的庫和表
db_name.routine_name: 指定庫上的存儲過程或存儲函數(shù)
[object_type]
TABLE
FUNCTION
PROCEDURE
grant select on testdb.* to 'testdb'@'192.168.4.%'; //假如沒有改用戶的話,會自動創(chuàng)建該用戶
grant select on testdb.student to 'wolf'@'192.168.4.%';
flush privileges;
show grants for 'wolf'@'192.168.4.%';
show grants for current_user; //查看當(dāng)前用戶授權(quán)
收回權(quán)限:
revoke select on testdb.student from 'wolf'@'192.168.4.%';
revoke ... from
grant ... on .... to ..A@B
注意:MariaDB服務(wù)進(jìn)程啟動時,會讀取mysql庫的所有授權(quán)表至內(nèi)存中;
1.grant或revoke命令等執(zhí)行的權(quán)限操作,會保存于表中,MariaDB此時一般會自動重新 讀取授權(quán)表,權(quán)限修改會立即生效
2.其他方式實現(xiàn)的權(quán)限,要想生效,必須flush privileges
注意;安全選項
/usr/local/mysql/bin/mysql_secure_installation 設(shè)置初始化密碼
后期添加密碼:
grant all privileges on MT.* to 'mt'@'192.168.4.%'; //假如忘了加 identified by "password"
select user,host,password from user; //是沒有密碼的
update user set password=password('mingtian') where user='mt'; //只能使用這種
insert 是插入一個新行,在這里不能使用
七、phpMyAdmin //mysql圖形化管理工具
解壓到網(wǎng)頁目錄
ln -sv phpMyAdmin-3.4.10.1-all-languages MyAdmin
cp config.sample.inc.php config.php
openssl rand -base64 15
FSJJJFVLvfiQeoepws88
vim config.php //加密cookie
$cfg['blowfish_secret'] = 'FSJJJFVLvfiQeoepws88'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
systemctl restart httpd
yum install php-mbstring -y //多種語言支持
問題:缺少mcrypt擴展
yum install php-mcrypt
問題:必須啟用cookie才能使用
1.vim config.inc.php
$cfg['blowfish_secret'] = 'cookie';
$cfg['Servers'][$i]['connect_type'] = 'socket'; //如果 MySQL 使用 socket 方式連接
2.vim libraries/config.default.php
$cfg['blowfish_secret'] = 'cookie'; 文件中默認(rèn)為空,這里需要填寫和 config.inc.php 一樣的值。
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock'; 這個需要根據(jù)自己 mysql 配置內(nèi)容填寫,如果不知道置空
圖形管理工具:
phpMyAdmin
Navicat
Mysql-Front
ToadForMySQL
SQLyog
存儲引擎的概念: myisam,innodb,
Myisam:不支持事務(wù)
innodb:支持事務(wù),不支持fulltext索引
后面的文章會詳細(xì)解釋
分享題目:MySQL入門(一)
標(biāo)題鏈接:http://fisionsoft.com.cn/article/pjecpe.html