您好,登錄后才能下訂單哦!
前言:
無(wú)論大家從事的是什么行業(yè),大家或許都聽(tīng)說(shuō)過(guò)數(shù)據(jù)庫(kù)這個(gè)詞匯。在今天互聯(lián)網(wǎng)高速發(fā)展的時(shí)代數(shù)據(jù)庫(kù)與我們的生活息息相關(guān),例如你在公司上班需要登記員工的信息錄入到數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)沒(méi)有那么高深難懂,筆者本人所理解的數(shù)據(jù)庫(kù)就是感覺(jué)它是一種類excel表格的一種程序,但是它又優(yōu)于excel。本文將為大家簡(jiǎn)述一下關(guān)于MySQL數(shù)據(jù)庫(kù)的基本操作。
MySQL簡(jiǎn)介:
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle公司。MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。
Relational 美[r'lenl]
Database美[detbes]
Management美[mndmnt]
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的SQL語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。由于其社區(qū)版的性能卓越,搭配PHP和Apache可組成良好的開(kāi)發(fā)環(huán)境。
雙授權(quán)政策:開(kāi)放源代碼版本和商業(yè)版本。例如:很多公司出售應(yīng)用軟件,例如Microsoft、Apple和Oracle;如Red Hat和IBM,則通過(guò)為其開(kāi)放源代碼軟件提供銷售支援、托管或咨詢等服務(wù)來(lái)進(jìn)行賺錢(qián)。但鮮為人知的是,企業(yè)可以透過(guò)開(kāi)放源代碼發(fā)布他們的軟件,也可以同時(shí)銷售該軟件的商業(yè)版本。
--------------------------尊敬的讀者您好:您已經(jīng)進(jìn)入實(shí)踐操作區(qū)域------------------------------------
安裝軟件之前筆者有個(gè)習(xí)慣就是去看看軟件描述信息,這樣有助于我們了解軟件用途以及出現(xiàn)問(wèn)題去官網(wǎng)找問(wèn)題的解決辦法因?yàn)楣倬W(wǎng)有絕大多軟件的QA。
yum info mysql-server
Name:軟件包名稱mysq-server
Arch:系統(tǒng)架構(gòu)X86_64
Version:軟件包版本5.1.73
Release:發(fā)布者版本號(hào)7.e16
Size:軟件包大小為25M
Repo:該軟件包來(lái)至于base倉(cāng)庫(kù)
Summary:軟件概述這是MySQL服務(wù)的相關(guān)文件
URL:官網(wǎng)地址http://www.mysql.com
License:授權(quán)許可遵循GPL v2版許可協(xié)議
Description:詳細(xì)描述
MySQL是一個(gè)多用戶,多線程的SQL數(shù)據(jù)庫(kù)服務(wù)器。 MySQL是一個(gè)由服務(wù)端守護(hù)程序(mysqld)組成的客戶端/服務(wù)端來(lái)實(shí)現(xiàn)工作,以及許多不同的庫(kù)與客戶端程序。 這個(gè)軟件包含MySQL服務(wù)端和一些附帶的文件目錄。
yum info mysql //這是查看MySQL客戶端的軟件信息和面的描述大同小異讀者朋友可以自行翻譯一下本文就不多做介紹了。
------------------------------------以上內(nèi)容為本人工作學(xué)習(xí)的習(xí)慣-------------------------------------
安裝軟件
yum install mysql-server mysql //本文所用環(huán)境是Centos6.8系統(tǒng) mysql-server //MySQL服務(wù)端 mysql //MySQL客戶端
******************安裝過(guò)程略***************
這里為了避免大家出現(xiàn)各種奇怪的錯(cuò)誤請(qǐng)先關(guān)閉防火墻和selinux
service iptables stop //本次關(guān)閉防火墻服務(wù) chkconfig iptables off //下次開(kāi)機(jī)永久關(guān)閉防火墻 setenforce 0 //臨時(shí)關(guān)閉SELinux getenforce //查看selinux現(xiàn)在的狀態(tài) Disabled //關(guān)閉的 Permissive //關(guān)閉的 Enforcing //開(kāi)啟的 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config //下次開(kāi)機(jī)永久關(guān)閉selinux
啟動(dòng)MySQL服務(wù)
service mysqld start Starting mysqld: [ OK ]
加固mysql服務(wù)器,在安裝完成后,運(yùn)行mysql_secure_installation命令
mysql_secure_installation Enter current password for root (enter for none):直接回車 輸入當(dāng)前root(這里的root是數(shù)據(jù)庫(kù)管理員名與系統(tǒng)無(wú)關(guān))用戶的密碼默認(rèn)為空直接回車 Set root password? [Y/n]y 為root用戶設(shè)置密碼 New password: 設(shè)置root用戶的密碼 Re-enter new password: 再輸入一次確認(rèn)你設(shè)置的密碼 Remove anonymous users? [Y/n]y 是否刪除匿名用戶,生產(chǎn)環(huán)境建議刪除,所以直接回車 Disallow root login remotely? [Y/n]y 是否關(guān)閉root遠(yuǎn)程登錄,根據(jù)自己的需求選擇Y/n并回車,建議禁止 Remove test database and access to it? [Y/n]y 是否刪除test的測(cè)試庫(kù),通常都刪除所以輸入y或者直接回車 Reload privilege tables now? [Y/n] 是否立即重新加載授權(quán)表,輸入y或者直接回車 現(xiàn)在就可以使用mysql -h 127.0.0.1 -uroot -p來(lái)進(jìn)入你的數(shù)據(jù)庫(kù)了
常用選項(xiàng):
-u, --user=username:用戶名,默認(rèn)為root;
-h, --host=hostname:遠(yuǎn)程主機(jī)(即mysql服務(wù)器)地址,默認(rèn)為localhost; 客戶端連接服務(wù)端,服務(wù)器會(huì)反解客戶的IP為主機(jī)名,關(guān)閉此功能(skip_name_resolve=ON);
-p, --password[=PASSWORD]:USERNAME所表示的用戶的密碼; 默認(rèn)為空;
注意:mysql的用戶賬號(hào)由兩部分組成:
'USERNAME'@'HOST';
其中HOST用于限制此用戶可通過(guò)哪些遠(yuǎn)程主機(jī)連接當(dāng)前的mysql服務(wù);HOST的表示方式,支持使用通配符;
%:匹配任意長(zhǎng)度的任意字符;
172.16.%.%, 172.16.0.0/16
_:匹配任意單個(gè)字符;
-P, --port=#:mysql服務(wù)器監(jiān)聽(tīng)的端口;默認(rèn)為3306/tcp;
-S, --socket=/PATH/TO/mysql.sock:套按字文件路徑;
-D, --database=DB_name:連接到服務(wù)器端之后,設(shè)定其處指明的數(shù)據(jù)庫(kù)為默認(rèn)數(shù)據(jù)庫(kù);
-e, --execute='SQL STATEMENT':連接至服務(wù)器并讓其執(zhí)行此命令后直接返回;
系統(tǒng)管理
連接MySQL
命令格式: mysql -h 主機(jī)地址 -u用戶名 -p用戶密碼
例 1:連接本地主機(jī)
[root@node2 ~]#mysql -uroot -p
例 2:連接遠(yuǎn)程主機(jī)庫(kù)
[root@node2 ~]#mysql -h 127.0.0.1 -uroot -p111111
增加新用戶
命令格式:grant select on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by '密碼'
舉例:
例 1:增加一個(gè)用戶 dev1 密碼為 dev123,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有
查詢、插入、修改、刪除的權(quán)限。
首先用以 root 用戶連入 MySQL,然后鍵入以下命令:
mysql> grant select,insert,update,delete on *.* to dev1@localhost identified by'dev123'; 或者 grant all privileges on *.* to dev1@localhost identified by 'dev123';
然后刷新權(quán)限設(shè)置。
flush privileges;
例 2:如果你不想 root 有密碼操作數(shù)據(jù)庫(kù)“class”里的數(shù)據(jù)表,可以再打一個(gè)命令將密碼消掉。
grant select,insert,update,delete on class.* to root@localhost identified by '';
刪除用戶
命令格式: DROP USER 'username'@'host';
舉例:
mysql> drop user 'dev1'@'localhost'; mysql> flush privileges;
刪除用戶的數(shù)據(jù)庫(kù)
mysql>drop database dbname;
庫(kù)操作
顯示所有的數(shù)據(jù)庫(kù)
mysql> show databases;(注意:最后有個(gè) s)
創(chuàng)建數(shù)據(jù)庫(kù)
mysql> create database newdb;
刪除數(shù)據(jù)庫(kù)
mysql> drop database newdb;
連接數(shù)據(jù)庫(kù)
mysql> use newdb; 也可以登錄的時(shí)候指定使用哪個(gè)庫(kù) mysql -h 127.0.0.1 -uroot -p newdb;(注意:-p后面有個(gè)空格然后是你要使用的庫(kù)名稱)
查看當(dāng)前使用的數(shù)據(jù)庫(kù)
mysql> select database();
當(dāng)前數(shù)據(jù)庫(kù)包含的表信息
mysql> show tables; (注意:最后有個(gè) s)
表操作
注:操作之前使用“use 數(shù)據(jù)庫(kù)名”應(yīng)連接某個(gè)數(shù)據(jù)庫(kù)。
創(chuàng)建表
命令格式:create table 表名 (字段名I 類型I 字段名II 類型II );
例:
mysql> create table dev(id int (4) not null primary key auto_increment, > name char(20) not null,sex int(4)not null default '0', > joinyear DATE not null);
獲取表結(jié)構(gòu)
命令格式: desc 表名,或者show columns from 表名
例:查看我們剛才創(chuàng)建好的dev這張表
mysql> desc dev; 或者 mysql> show columns from dev;
刪除表
命令格式:drop table <表名>
例如:刪除表名為 m23info 的表
mysql> drop table m23info;
插入數(shù)據(jù)
命令格式:insert into <表名> VALUES ('設(shè)定值1','設(shè)定值2','設(shè)定值3','設(shè)定值4');
例子:
mysql> INSERT INTO dev VALUES('2','Jeck','0','2012-12-25');
查詢表中的數(shù)據(jù)
查詢所有行
mysql> select * from dev;
查詢前幾行數(shù)據(jù)
例如:查看表 dev 中前 2 行數(shù)據(jù)
mysql> select * from dev order by id limit 0,2;
或者
mysql> select * from dev limit 0,2;
刪除表中數(shù)據(jù)
命令格式:delete from 表名 where 表達(dá)式
例:刪除表 dev 中編號(hào)為 1 的記錄
mysql> delete from dev where id=1;
很明顯剛才的id為1的那條記錄已經(jīng)被刪除;
修改表中數(shù)據(jù)
命令:update 表名 set 字段=新值,... where 條件
mysql> update dev set name='Boss' where id=2;
把原來(lái)ID號(hào)是2的jeck改成了Boss
在表中增加字段
命令格式:alter table 表名 add 字段 類型 其他;
例:在表 dev 中添加了一個(gè)字段 Duties類型為 int(5),默認(rèn)值為 0
mysql> alter table dev add Duties int(5) default '0';
更改表名
命令格式:rename table 原表名 to 新表名;
例如:在表 dev 名字更改為 opt
mysql> rename table dev to opt;
數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出
從數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)庫(kù)文件
使用“mysqldump”命令
1)導(dǎo)出newdb數(shù)據(jù)庫(kù)
命令格式:mysqldump -u [數(shù)據(jù)庫(kù)用戶名] -p -A>[備份文件的保存路徑]
mysqldump -uroot -p密碼 newdb >/sqlbackup/newdb`date +%F-%T`.sql //備份newdb到/sqlbackup/下命名為newdb+時(shí)間戳.sql
2)導(dǎo)出數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)
格式:mysqldump -u [數(shù)據(jù)庫(kù)用戶名] -p [要備份的數(shù)據(jù)庫(kù)名稱]>[備份文件的保存路徑]
舉例:
例 1:將數(shù)據(jù)庫(kù) mydb 導(dǎo)出到 /sqlbackup下的mysqldb.sql。
mysqldump -h localhost -uroot -p mysql > /sqlbackup/mysqldb.sql
然后輸入密碼,等待一會(huì)導(dǎo)出就成功了,可以到目標(biāo)文件中檢查是否成功。
3)只導(dǎo)出數(shù)據(jù)不導(dǎo)出數(shù)據(jù)結(jié)構(gòu)
格式:
mysqldump -u [數(shù)據(jù)庫(kù)用戶名] -p -t [要備份的數(shù)據(jù)庫(kù)名稱]>[備份文件的保存路徑]
4)導(dǎo)出數(shù)據(jù)庫(kù)中的Events
格式:mysqldump -u [數(shù)據(jù)庫(kù)用戶名] -p -E [數(shù)據(jù)庫(kù)用戶名]>[備份文件的保存路徑]
5)導(dǎo)出數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和函數(shù)
格式:mysqldump -u [數(shù)據(jù)庫(kù)用戶名] -p -R [數(shù)據(jù)庫(kù)用戶名]>[備份文件的保存路徑]
從外部文件導(dǎo)入數(shù)據(jù)庫(kù)中
1)使用“source”命令
首先進(jìn)入“mysql”命令控制臺(tái),然后創(chuàng)建數(shù)據(jù)庫(kù),然后使用該數(shù)據(jù)庫(kù)。最后執(zhí)行下面操作。
mysql>source [備份文件的保存路徑]
2)使用“<”符號(hào)
首先進(jìn)入“mysql”命令控制臺(tái),然后創(chuàng)建數(shù)據(jù)庫(kù),然后退出 MySQL,進(jìn)入 DOS 界面。最后執(zhí)行下面操作。
mysql -u root –p < [備份文件的保存路徑]
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。