日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

lunixs 退出mysql_MySQL的基本操作

發(fā)布時(shí)間:2023/12/10 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lunixs 退出mysql_MySQL的基本操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、數(shù)據(jù)庫(kù)登錄

格式:mysql -h主機(jī)地址 -u用戶名 -p用戶密碼 -P端口 -D數(shù)據(jù)庫(kù) -e “SQL內(nèi)容”

[root@wulaoer?~]#?mysql?-uroot?-p

2、修改密碼

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

[root@wulaoer?~]#?mysqladmin?-uroot??password?'123456'

注:因?yàn)殚_(kāi)始時(shí)root沒(méi)有密碼,所以-p舊密碼一項(xiàng)就可以省略了。

例2:再將root的密碼改為wulaoer。

[root@wulaoer?~]#?mysqladmin?-uroot??-p'123456'?password?'wulaoer'或[root@wulaoer?~]#?service?mysqld?start[root@wulaoer?~]#?mysqld_safe?--user=mysql?--skip-grant-tables?--skip-networking?如果是安裝版的也可以在安裝目錄下執(zhí)行?./scripts/mysql_install_db?--user=mysql[root@wulaoer?~]#?mysql?-uroot?-p?#直接進(jìn)數(shù)據(jù)庫(kù)不用密碼Enter?password:?Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g.Your?MySQL?connection?id?is?1Server?version:?5.1.73?Source?distributionCopyright?(c)?2000,?2013,?Oracle?and/or?its?affiliates.?All?rights?reserved.Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?itsaffiliates.?Other?names?may?be?trademarks?of?their?respectiveowners.Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement.mysql>?use?mysql;?#切換到數(shù)據(jù)庫(kù)Reading?table?information?for?completion?of?table?and?column?namesYou?can?turn?off?this?feature?to?get?a?quicker?startup?with?-ADatabase?changedmysql>?update?user?set?password=PASSWORD("wulaoer")where?user="root";#修改數(shù)據(jù)庫(kù)的密碼Query?OK,?3?rows?affected?(0.01?sec)Rows?matched:?3??Changed:?3??Warnings:?0mysql>?flush?privileges;#更新權(quán)限Query?OK,?0?rows?affected?(0.00?sec)mysql>?quit?#退出Bye[root@wulaoer?~]#?service?mysqld?start正在啟動(dòng)?mysqld:??????????????????????????????????????????[確定][root@wulaoer?~]#?mysql?-uroot?-pEnter?password:?Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g.Your?MySQL?connection?id?is?6Server?version:?5.1.73?Source?distributionCopyright?(c)?2000,?2013,?Oracle?and/or?its?affiliates.?All?rights?reserved.Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?itsaffiliates.?Other?names?may?be?trademarks?of?their?respectiveowners.Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement.

3、添加用戶

格式:grant select on 數(shù)據(jù)庫(kù).* to 用戶名@登錄主機(jī) identified by "密碼"

例1、增加一個(gè)用戶root密碼為wullaoer,讓他可以在任何主機(jī)上登錄,并對(duì)所有數(shù)據(jù)庫(kù)有查詢、插入、修改、刪除的權(quán)限。首先用以root用戶連入MySQL,然后鍵入以下命令:

mysql>?grant?select,insert,update,deleteon?on?*.*?to?root@localhost?identified?by?'wulaoer';Query?OK,?0?rows?affected?(0.00?sec)或mysql>?grant?all?privileges?on?*.*?to?root@localhost?identified?by?'wulaoer';Query?OK,?0?rows?affected?(0.00?sec)

如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。

mysql>?grant?select,insert,update,delete?on?*.*?to?root@localhost?identified?by?'?';#localhos是本機(jī)登錄Query?OK,?0?rows?affected?(0.00?sec)

4、創(chuàng)建數(shù)據(jù)庫(kù)

格式:create database name; 創(chuàng)建數(shù)據(jù)庫(kù)

mysql>?show?databases;#查看數(shù)據(jù)庫(kù)+--------------------+|?Database???????????|+--------------------+|?information_schema?||?mysql??????????????||?test???????????????||?user???????????????|+--------------------+4?rows?in?set?(0.00?sec)mysql>?create?database?wulaoer;#創(chuàng)建數(shù)據(jù)庫(kù)Query?OK,?1?row?affected?(0.00?sec)mysql>?show?databases;#查看數(shù)據(jù)庫(kù)+--------------------+|?Database???????????|+--------------------+|?information_schema?||?mysql??????????????||?test???????????????||?user???????????????||?wulaoer????????????|+--------------------+5?rows?in?set?(0.00?sec)

格式:use databasename; 選擇數(shù)據(jù)庫(kù)

mysql>?use?wulaoer;#切換數(shù)據(jù)庫(kù)Database?changed

5、備份或恢復(fù)數(shù)據(jù)庫(kù)

5.1格式:mysqldump -h 主機(jī) -u 用戶名 -p 數(shù)據(jù)庫(kù) > 備份地址以及備份名稱

[root@wulaoer?~]#?mysqldump?-uroot?-p?wulaoer?>?wulaoer.sqlEnter?password:?[root@wulaoer?~]#?lsanaconda-ks.cfg??install.log??install.log.syslog??wulaoer.sql

5.2還原格式:mysqldump -h 主機(jī) -u 用戶名 -p 數(shù)據(jù)庫(kù) < 還原的數(shù)據(jù)庫(kù)

這里先把wulaoer這個(gè)數(shù)據(jù)庫(kù)刪除掉

mysql>?drop?database?wulaoer;Query?OK,?0?rows?affected?(0.01?sec)mysql>?show?databases;+--------------------+|?Database???????????|+--------------------+|?information_schema?||?mysql??????????????||?test???????????????||?user???????????????|+--------------------+4?rows?in?set?(0.00?sec)

實(shí)例:

[root@wulaoer?~]#?mysqladmin?-h?localhost?-u?root?-p?create?wulaoer?#新建要還原的數(shù)據(jù)庫(kù)名Enter?password:?[root@wulaoer?~]#?mysqldump?-uroot?-p?wulaoer?

注:如果要還原數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中一定要有要還原的數(shù)據(jù)庫(kù)的名字,

如果只想卸除建表指令,則可以如下:

[root@wulaoer?~]#?mysqladmin?-u?root?-p??databasename?>?a.sqlEnter?password:?[root@wulaoer?~]#?mysqldump?-uroot?-p?test?mytable>./test.txtEnter?password:

將備份數(shù)據(jù)導(dǎo)入到數(shù)據(jù):(導(dǎo)回test數(shù)據(jù)庫(kù))

5.3備份數(shù)據(jù)庫(kù)wulaoer

[root@wulaoer?~]#?mysqldump?-uroot?-p?wulaoer?>?wulaoer.sql

得到的wulaoer.sql是一個(gè)sql腳本,不包括建庫(kù)的語(yǔ)句,所以你需要手工創(chuàng)建數(shù)據(jù)庫(kù)才可以導(dǎo)入恢復(fù)數(shù)據(jù)庫(kù)wulaoer,需要?jiǎng)?chuàng)建一個(gè)空庫(kù)wulaoer

[root@wulaoer?~]#?mysql?-uroot?-p?wulaoer?

如果不希望后來(lái)公共創(chuàng)建wulaoer,可以

[root@wulaoer?~]#?mysqldump?-uroot?-p?--databases?wulaoer?>?wulaoer.sql[root@wulaoer?~]#?mysql?-uroot?-p?>?wulaoer.sql

但這樣的話系統(tǒng)種就不能存在wulaoer庫(kù),且無(wú)法導(dǎo)入其他名字的數(shù)據(jù)庫(kù),當(dāng)然你可以手工修改wulaoer.sql文件

如果只想卸出插入數(shù)據(jù)的sql命令,而不需要建表命令,則命令如下:

[root@wulaoer?~]#?mysqladmin?-uroot?-p?databasename?>?a.sql

那么如果我只想要數(shù)據(jù),而不想要什么sql命令時(shí),應(yīng)該如何操作呢?

可將查詢存儲(chǔ)在一個(gè)文件中并告訴mysql從文件中讀取查詢而不是等待鍵盤輸入。可利用外殼程序鍵入重定向?qū)嵱贸绦騺?lái)完成這項(xiàng)工作。例如,如果在文件my_file.sql 中存放有查

5.4完整備份:

給予mysql的完整恢復(fù),因?yàn)閎in-log記錄著所有的事件的操作,當(dāng)mysql發(fā)生災(zāi)難錯(cuò)誤時(shí),可以通過(guò)bin-log做完整恢復(fù),給予 時(shí)間點(diǎn)和位置的恢復(fù)。例如:每天定義執(zhí)行一點(diǎn)用mysqldump備份數(shù)據(jù)庫(kù),但是在三點(diǎn)由于數(shù)據(jù)庫(kù)出現(xiàn)了故障,數(shù)據(jù)庫(kù)無(wú)法訪問(wèn)需要恢復(fù),先把數(shù)據(jù)庫(kù)恢復(fù) 到一點(diǎn)的完整備份,在使用mysqlbinlog恢復(fù)從一點(diǎn)到mysqldump備份以來(lái)的binlog,這樣數(shù)據(jù)庫(kù)就能恢復(fù)到原來(lái)的狀態(tài)

[root@wulaoer ~]#?/usr/local/mysql/bin/mysqldump?--single-transaction?--flush-logs?--master-data=2?--all-databases?>?fullbackup_sunday_11_PM.sql

5.5增量備份數(shù)據(jù)庫(kù)

用more查看備份的數(shù)據(jù)庫(kù):[root@wulaoer?~]#?more?fullbackup_sunday_11_PM.sql?--?MySQL?dump?10.13??Distrib?5.5.44,?for?Linux?(x86_64)----?Host:?localhost????Database:?--?--------------------------------------------------------?Server?version????5.5.44-cll-lve/*!40101?SET?@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT?*/;/*!40101?SET?@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS?*/;/*!40101?SET?@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION?*/;/*!40101?SET?NAMES?utf8?*/;/*!40103?SET?@OLD_TIME_ZONE=@@TIME_ZONE?*/;/*!40103?SET?TIME_ZONE='+00:00'?*/;/*!40014?SET?@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,?UNIQUE_CHECKS=0?*/;/*!40014?SET?@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,?FOREIGN_KEY_CHECKS=0?*/;/*!40101?SET?@OLD_SQL_MODE=@@SQL_MODE,?SQL_MODE='NO_AUTO_VALUE_ON_ZERO'?*/;/*!40111?SET?@OLD_SQL_NOTES=@@SQL_NOTES,?SQL_NOTES=0?*/;----?Position?to?start?replication?or?point-in-time?recovery?from----?CHANGE?MASTER?TO?MASTER_LOG_FILE='mysqld-bin.000006',?MASTER_LOG_POS=107;----?Current?Database:?`mysql`...............................省略部分................................................

在上面的信息里可以看到備份后所有的更改都保存在mysqld-bin.000006二進(jìn)制文件中然后在完全備份的每天執(zhí)行下面的命令做一次增量備份

[root@localhost ~]# mysqladmin -uroot -p ?flush-logs

這是需要把二進(jìn)制文件保存到一個(gè)安全的地方,以方便恢復(fù)。

5.6恢復(fù)備份:

舉例說(shuō)明:

如果設(shè)定了每個(gè)星期日早上六點(diǎn)完整備份,每隔一個(gè)小時(shí)進(jìn)行一次增量備份,在八點(diǎn)的時(shí)候數(shù)據(jù)庫(kù)崩潰,這是就需要進(jìn)行恢復(fù)數(shù)據(jù)庫(kù)了。先進(jìn)行完整恢復(fù):

mysql -u root -p < fullbackup_sunday_11_PM.sql

在接 七點(diǎn)、八點(diǎn)的增量備份

[root@wulaoer?~]#?/var/lib/mysql/mysqld-bin.000006?mysqld-bin.000007?|?mysql?-uroot?-p

恢復(fù)完備份之后,就可以找到最新的增量做最新的完整恢復(fù)

mysqlbinlog 后加 --database "具體庫(kù)" 可恢復(fù)具體庫(kù)的增量信息加 --stop-date="2010-12-20 13:15:00" 可恢復(fù)到該日志的具體時(shí)間點(diǎn),如果恢復(fù)一個(gè)時(shí)間段可以--start-date="2010-12-20 13:15:00"--stop-date="2016-1-20 13:15:00"

flush privileges;

6、導(dǎo)入.sql文件命令(例如D:/mysql.sql)

mysql>use?wulaoer;mysql>?source?/home/wulaoer.sql;

UPDATE以新的值更新現(xiàn)存表中行的列。SET 子句指出要修改哪個(gè)列和他們應(yīng)該給定的值。WHERE子句如果被給出,指定哪個(gè)記錄行應(yīng)該被更新。否則,所有的記錄行被更新。如果 ORDER BY 子句被指定,記錄行將被以指定的次序更新。如果你指定關(guān)鍵詞LOW_PRIORITY,UPDATE 的執(zhí)行將被延遲,直到?jīng)]有其它的客戶端正在讀取表。如果你指定關(guān)鍵詞IGNORE,該更新語(yǔ)句將不會(huì)異常中止,即使在更新過(guò)程中出現(xiàn)重復(fù)鍵錯(cuò)誤。導(dǎo)致沖突的記錄行將不會(huì)被更新。如果在一個(gè)表達(dá)式中從tbl_name 中訪問(wèn)一個(gè)列,UPDATE 使用列的當(dāng)前值。舉例來(lái)說(shuō),下面的語(yǔ)句設(shè)置 age 列值為它的當(dāng)前值加 1 :

mysql>?UPDATE?persondata?SETage=age+1;

UPDATE賦值是從左到右計(jì)算的。舉例來(lái)說(shuō),下列語(yǔ)句將 age 列設(shè)置為它的兩倍,然后再加 1 :

mysql>?UPDATE?persondata?SETage=age*2,?age=age+1;

如果你設(shè)置列為其當(dāng)前的值,MySQL 注意到這點(diǎn),并不更新它。UPDATE返回實(shí)際被改變的記錄行數(shù)目。在 MySQL 3.22 或更新的版本中,C API 函數(shù) mysql_info()返回被匹配并更新的記錄行數(shù)目,以及在 UPDATE 期間發(fā)生的警告的數(shù)目。在 MySQL3.23 中,你可以使用 LIMIT # 來(lái)確保只有給定的記錄行數(shù)目被更改。如果一個(gè) ORDER BY 子句被使用(從 MySQL4.0.0 開(kāi)始支持),記錄行將以指定的次序被更新。這實(shí)際上只有連同 LIMIT一起才有用。從 MySQL 4.0.4 開(kāi)始,你也可以執(zhí)行一個(gè)包含多個(gè)表的UPDATE 的操作:

UPDATE?items,month?SETitems.price=month.priceWHERE?items.id=month.id;注意:多表 UPDATE 不可以使用 ORDER BY 或LIMIT。

關(guān)鍵字: mysql

啟動(dòng):net start mySql;

進(jìn)入:mysql -u root -p/mysql -hlocalhost -u root -p databaseName;

列出數(shù)據(jù)庫(kù):show databases;

選擇數(shù)據(jù)庫(kù):use databaseName;

列出表格:show tables;

顯示表格列的屬性:show columns fromtableName;

建立數(shù)據(jù)庫(kù):source fileName.txt;

匹配字符:可以用通配符_代表任何一個(gè)字符,%代表任何字符串;

7、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫(kù)表中(例如D:/mysql.txt)

mysql>?LOAD?DATA?LOCAL?INFILE/mysql.txt"?INTO?TABLE?MYTABLE;刪除數(shù)據(jù)庫(kù)?drop?database?name?直接刪除數(shù)據(jù)庫(kù)mysqladmin?drop?database?name?刪除數(shù)據(jù)庫(kù)前,有提示數(shù)據(jù)庫(kù)授權(quán)?GRANT?ALL?PRIVILEGES?ON?bdc.*?TObdc@'%'?IDENTIFIEDBY?'bdc123'?WITH?GRANT?OPTION;flush?privileges授權(quán)訪問(wèn)bdc?的所有表?用戶為bdc?任何主機(jī)?,密碼為bdc@123創(chuàng)建一個(gè)用戶custom在特定客戶端it363.com登錄,可訪問(wèn)特定數(shù)據(jù)庫(kù)fangchandbmysql?>grant?select,?insert,update,?delete,?create,drop?on?fangchandb.*?to?custom@it363.com?identified?by?‘passwd’刪除授權(quán):?mysql>?revoke?all?privilegeson?*.*?from?root@”%”;mysql>?delete?from?user?whereuser=”root”?and?host=”%”;mysql>?flush?privileges;顯示當(dāng)前mysql版本和當(dāng)前日期?selectversion(),current_date;查詢時(shí)間:select?now();查詢當(dāng)前用戶:select?user();查詢數(shù)據(jù)庫(kù)版本:select?version();查詢當(dāng)前使用的數(shù)據(jù)庫(kù):select?database();查詢所有數(shù)據(jù)表?>show?tables;查詢表的字段信息?>desc?表名稱;創(chuàng)建表?create?table?s_position(id?int?not?null?auto_increment,name?varchar(20)?not?nulldefault?'經(jīng)理',?#設(shè)定默認(rèn)值description?varchar(100),primary?key?PK_positon?(id)?#設(shè)定主鍵);create?table?department(id?int?not?null?auto_increment,name?varchar(20)?not?nulldefault?'系統(tǒng)部',?#設(shè)定默認(rèn)值description?varchar(100),primary?key?PK_department?(id)?#設(shè)定主鍵);create?table?depart_pos(department_id?int?not?null,position_id?int?not?null,primary?key?PK_depart_pos(department_id,position_id)?#設(shè)定復(fù)和主鍵);create?table?staffer(id?int?not?null?auto_incrementprimary?key,?#設(shè)定主鍵name?varchar(20)?not?nulldefault?'無(wú)名氏',?#設(shè)定默認(rèn)值department_id?int?not?null,position_id?int?not?null,unique?(department_id,position_id)#設(shè)定唯一值);修改結(jié)構(gòu)?mysql>#表position增加列testalter?tableposition?add(test?char(10));#表position修改列testalter?tableposition?modify?test?char(20)?not?null;#表position修改列test默認(rèn)值alter?tableposition?alter?test?set?default?'system';#表position去掉test默認(rèn)值alter?tableposition?alter?test?drop?default;#表position去掉列testalter?tableposition?drop?column?test;#表depart_pos刪除主鍵alter?tabledepart_pos?drop?primary?key;#表depart_pos增加主鍵alter?tabledepart_pos?add?primary?key?PK_depart_pos?(department_id,position_id);

8、操作數(shù)據(jù)庫(kù)

#插入表departmentinsert?into?department(name,description)values('系統(tǒng)部','系統(tǒng)部');insert?into?department(name,description)values('公關(guān)部','公關(guān)部');insert?into?department(name,description)values('客服部','客服部');insert?into?department(name,description)values('財(cái)務(wù)部','財(cái)務(wù)部');insert?into?department(name,description)values('測(cè)試部','測(cè)試部');#插入表s_positioninsert?into?s_position(name,description)values('總監(jiān)','總監(jiān)');insert?into?s_position(name,description)values('經(jīng)理','經(jīng)理');insert?into?s_position(name,description)values('普通員工','普通員工');#插入表depart_posinsert?intodepart_pos(department_id,position_id)select?a.id?department_id,b.id?postion_idfrom?department?a,s_position?b;#插入表stafferinsert?intostaffer(name,department_id,position_id)?values('陳達(dá)治',1,1);insert?into?staffer(name,department_id,position_id)values('李文賓',1,2);insert?intostaffer(name,department_id,position_id)?values('馬佳',1,3);insert?intostaffer(name,department_id,position_id)?values('亢志強(qiáng)',5,1);insert?intostaffer(name,department_id,position_id)?values('楊玉茹',4,1);

9、查詢及刪除操作

#顯示系統(tǒng)部的人員和職位selecta.name,b.name?department_name,c.name?position_namefrom?staffera,department?b,s_position?cwherea.department_id=b.id?and?a.position_id=c.id?and?b.name='系統(tǒng)部';#顯示系統(tǒng)部的人數(shù)select?count(*)from?staffer?a,department?bwherea.department_id=b.id?and?b.name='系統(tǒng)部'#顯示各部門的人數(shù)select?count(*)cou,b.name?from?staffer?a,department?bwherea.department_id=b.idgroup?by?b.name;#刪除客服部delete?fromdepartment?where?name='客服部';#將財(cái)務(wù)部修改為財(cái)務(wù)一部updatedepartment?set?name='財(cái)務(wù)一部'?wherename='財(cái)務(wù)部';

10、清空表

mysql>delete?from?MYTABLE;

11、刪除表:

mysql>drop?TABLE?MYTABLE;

12、添加表字段:

alter?tabletable1?add?transactor?varchar(10)?not?Null;alter?tabletable1?add?id?int?unsigned?not?Null?auto_increment?primary?key修改某個(gè)表的字段類型及指定為空或非空?>alter?table?表名稱?change?字段名稱?字段名稱?字段類型?[是否允許非空];>alter?table?表名稱?modify?字段名稱?字段類型?[是否允許非空];>alter?table?表名稱?modify?字段名稱?字段類型?[是否允許非空];如果要?jiǎng)h除某一字段,可用命令:?ALTER?TABLEmytable?DROP?字段名;

13、添加唯一鍵:

ALTER?TABLE`test2`?ADD?UNIQUE?(?`userid`)

14、修改主鍵:

ALTER?TABLE`test2`?DROP?PRIMARY?KEY?,ADD?PRIMARY?KEY?(?`id`?)alter?tableversion_template?drop?primary?key?,add?primary?key?version,role,type);

15、增加索引

ALTER?TABLE`test2`?ADD?INDEX?(?`id`?)alter?tabletable1?add?index?ind_id?(id);create?indexind_id?on?table1?(id);create?uniqueindex?ind_id?on?table1?(id);//建立唯一性索引

16、刪除索引:

drop?indexidx_id?on?table1;alter?tabletable1?drop?index?ind_id;

17、重命名表:

alter?table?t1?rename?t2;

18、增加一個(gè)字段:

alter?tabletabelName?add?column?fieldName?dateType;

19、增加多個(gè)字段

alter?tabletabelName?add?column?fieldName1?dateType,add?columns?fieldName2?dateType;

多行命令輸入:注意不能將單詞斷開(kāi);當(dāng)插入或更改數(shù)據(jù)時(shí),不能將字段的字符串展開(kāi)到多行里,否則硬回車將被儲(chǔ)存到數(shù)據(jù)中;

增加一個(gè)管理員帳戶:grant all on *.* to user@localhost identified by"password";

每條語(yǔ)句輸入完畢后要在末尾填加分號(hào)';',或者填加'\g'也可以;

20、創(chuàng)建臨時(shí)表:

create?temporarytable?zengchao(name?varchar(10));

21、創(chuàng)建表是先判斷表是否存在

create?table?ifnot?exists?students(……);

22、從已經(jīng)有的表中復(fù)制表的結(jié)構(gòu)

create?tabletable2?select?*?from?table1?where?1<>1;

23、 賦值表

create?tabletable2?select?*?from?table1;

24、對(duì)表重新命名

alter?table?table1?rename?astable2;

25、修改列的類型

alter?table?table1?modify?id?intunsigned;//修改列id的類型為int?unsignedalter?table?table1?change?id?sidint?unsigned;//修改列id的名字為sid,而且把屬性修改為int?unsigned

26、聯(lián)合字符或者多個(gè)列(將列id與":"和列name和"="連接)

select?concat(id,':',name,'=')from?students;

27、limit(選出10到20條)

select?*?from?students?order?byid?limit?9,10;

28、MySQL會(huì)使用索引的操作符號(hào)

=,>,=,between,in,不帶%或者_(dá)開(kāi)頭的like

29、存儲(chǔ)過(guò)程

1)查看存儲(chǔ)過(guò)程

select?name?from?mysql.proc?where?db=’數(shù)據(jù)庫(kù)名’;

select?routine_name?frominformation_schema.routines?where?routine_schema='數(shù)據(jù)庫(kù)名';

show?procedure?status?where?db='數(shù)據(jù)庫(kù)名';

30、MySQL存儲(chǔ)過(guò)程的修改

ALTER PROCEDURE

更改用CREATEPROCEDURE 建立的預(yù)先指定的存儲(chǔ)過(guò)程,其不會(huì)影響相關(guān)存儲(chǔ)過(guò)程或存儲(chǔ)功能。

31、MySQL存儲(chǔ)過(guò)程的刪除

刪除一個(gè)存儲(chǔ)過(guò)程比較簡(jiǎn)單,和刪除表一樣:

DROP PROCEDURE

從MySQL的表格中刪除一個(gè)或多個(gè)存儲(chǔ)過(guò)程。

32、存儲(chǔ)過(guò)程基本函數(shù)

(1).字符串類

CHARSET(str)?//返回字串字符集CONCAT?(string2?[,...?])?//連接字串INSTR?(string?,substring?)?//返回substring首次在string中出現(xiàn)的位置,不存在返回0LCASE?(string2?)?//轉(zhuǎn)換成小寫LEFT?(string2?,length?)?//從string2中的左邊起取length個(gè)字符LENGTH?(string?)?//string長(zhǎng)度LOAD_FILE?(file_name?)?//從文件讀取內(nèi)容LOCATE?(substring?,?string[,start_position?]?)?同INSTR,但可指定開(kāi)始位置LPAD?(string2?,length?,pad?)?//重復(fù)用pad加在string開(kāi)頭,直到字串長(zhǎng)度為lengthLTRIM?(string2?)?//去除前端空格REPEAT?(string2?,count?)?//重復(fù)count次REPLACE?(str?,search_str?,replace_str)?//在str中用replace_str替換search_strRPAD?(string2?,length?,pad)?//在str后用pad補(bǔ)充,直到長(zhǎng)度為lengthRTRIM?(string2?)?//去除后端空格STRCMP?(string1?,string2?)?//逐字符比較兩字串大小,SUBSTRING?(str?,?position?[,length?])?//從str的position開(kāi)始,取length個(gè)字符,

注:mysql中處理字符串時(shí),默認(rèn)第一個(gè)字符下標(biāo)為1,即參數(shù)position必須大于等于1

mysql>?select?substring('abcd',0,2);?+-----------------------+??|?substring('abcd',0,2)?|?+-----------------------+??|???????????????????????|?+-----------------------+??1?row?in?set?(0.00?sec)??mysql>?select?substring('abcd',1,2);?+-----------------------+??|?substring('abcd',1,2)?|?+-----------------------+??|?????ab????????????????|?+-----------------------+??1?row?in?set?(0.02?sec)?TRIM([[BOTH|LEADING|TRAILING]?[padding]?FROM]string2)?//去除指定位置的指定字符UCASE?(string2?)?//轉(zhuǎn)換成大寫RIGHT(string2,length)?//取string2最后length個(gè)字符SPACE(count)?//生成count個(gè)空格

(2).數(shù)學(xué)類

ABS?(number2?)?//絕對(duì)值BIN?(decimal_number?)?//十進(jìn)制轉(zhuǎn)二進(jìn)制CEILING?(number2?)?//向上取整CONV(number2,from_base,to_base)?//進(jìn)制轉(zhuǎn)換FLOOR?(number2?)?//向下取整FORMAT?(number,decimal_places?)?//保留小數(shù)位數(shù)HEX?(DecimalNumber?)?//轉(zhuǎn)十六進(jìn)制

注:HEX()中可傳入字符串,則返回其ASC-11碼,如HEX('DEF')返回4142143

也可以傳入十進(jìn)制整數(shù),返回其十六進(jìn)制編碼,如HEX(25)返回19

LEAST?(number?,?number2?[,..])?//求最小值MOD?(numerator?,denominator?)?//求余POWER?(number?,power?)?//求指數(shù)RAND([seed])?//隨機(jī)數(shù)ROUND?(number?[,decimals?])?//四舍五入,decimals為小數(shù)位數(shù)]

注:返回類型并非均為整數(shù),如:

(1)默認(rèn)變?yōu)椤痢痢林?/p>

mysql>?select?round(1.23);?+-------------+??|?round(1.23)?|??+-------------+??|???????????1?|?+-------------+??1?row?in?set?(0.00?sec)??mysql>?select?round(1.56);?+-------------+??|?round(1.56)?|??+-------------+??|???????????2?|?+-------------+??1?row?in?set?(0.00?sec)

(2)可以設(shè)定小數(shù)位數(shù),返回浮點(diǎn)型數(shù)據(jù)

mysql>?select?round(1.567,2);??+----------------+??|?round(1.567,2)?|??+----------------+??|???????????1.57?|?+----------------+??1?row?in?set?(0.00?sec)?SIGN?(number2?)?//

(3).日期時(shí)間類

ADDTIME?(date2?,time_interval?)//將time_interval加到date2CONVERT_TZ?(datetime2?,fromTZ?,toTZ?)?//轉(zhuǎn)換時(shí)區(qū)CURRENT_DATE?(?)?//當(dāng)前日期CURRENT_TIME?(?)?//當(dāng)前時(shí)間CURRENT_TIMESTAMP?(?)?//當(dāng)前時(shí)間戳DATE?(datetime?)?//返回datetime的日期部分DATE_ADD?(date2?,?INTERVAL?d_value?d_type?)?//在date2中加上日期或時(shí)間DATE_FORMAT?(datetime?,FormatCodes?)?//使用formatcodes格式顯示datetimeDATE_SUB?(date2?,?INTERVAL?d_value?d_type?)?//在date2上減去一個(gè)時(shí)間DATEDIFF?(date1?,date2?)?//兩個(gè)日期差DAY?(date?)?//返回日期的天DAYNAME?(date?)?//英文星期DAYOFWEEK?(date?)?//星期(1-7)?,1為星期天DAYOFYEAR?(date?)?//一年中的第幾天EXTRACT?(interval_name?FROM?date?)?//從date中提取日期的指定部分MAKEDATE?(year?,day?)?//給出年及年中的第幾天,生成日期串MAKETIME?(hour?,minute?,second?)?//生成時(shí)間串MONTHNAME?(date?)?//英文月份名NOW?(?)?//當(dāng)前時(shí)間SEC_TO_TIME?(seconds?)?//秒數(shù)轉(zhuǎn)成時(shí)間STR_TO_DATE?(string?,format?)?//字串轉(zhuǎn)成時(shí)間,以format格式顯示TIMEDIFF?(datetime1?,datetime2?)?//兩個(gè)時(shí)間差TIME_TO_SEC?(time?)?//時(shí)間轉(zhuǎn)秒數(shù)]WEEK?(date_time?[,start_of_week?])?//第幾周YEAR?(datetime?)?//年份DAYOFMONTH(datetime)?//月的第幾天HOUR(datetime)?//小時(shí)LAST_DAY(date)?//date的月的最后日期MICROSECOND(datetime)?//微秒MONTH(datetime)?//月MINUTE(datetime)?//分返回符號(hào),正負(fù)或0SQRT(number2)?//開(kāi)平方

33、使用索引的缺點(diǎn)

1) ?增刪改數(shù)據(jù)的速度;

2)占用磁盤空間;

3)增加查詢優(yōu)化器的負(fù)擔(dān);

當(dāng)查詢優(yōu)化器生成執(zhí)行計(jì)劃時(shí),會(huì)考慮索引,太多的索引會(huì)給查詢優(yōu)化器增加

34、分析索引效率

方法:在一般的SQL語(yǔ)句前加上explain;

分析結(jié)果的含義:

1)table:表名;

2)type:連接的類型,(ALL/Range/Ref)。其中ref是最理想的;

3)possible_keys:查詢可以利用的索引名;

4)key:實(shí)際使用的索引;

5)key_len:索引中被使用部分的長(zhǎng)度(字節(jié));

6)ref:顯示列名字或者"const"(不明白什么意思);

7)rows:顯示MySQL認(rèn)為在找到正確結(jié)果之前必須掃描的行數(shù);

8)extra:MySQL的建議;

35、使用較短的定長(zhǎng)列

1)盡可能使用較短的數(shù)據(jù)類型;

2)盡可能使用定長(zhǎng)數(shù)據(jù)類型;

a)用char代替varchar,固定長(zhǎng)度的數(shù)據(jù)處理比變長(zhǎng)的快些;

b)對(duì)于頻繁修改的表,磁盤容易形成碎片,從而影響數(shù)據(jù)庫(kù)的整體性能;

c)萬(wàn)一出現(xiàn)數(shù)據(jù)表崩潰,使用固定長(zhǎng)度數(shù)據(jù)行的表更容易重新構(gòu)造。使用固定長(zhǎng)度的數(shù)據(jù)行,每個(gè)記錄的開(kāi)始位置都是固定記錄長(zhǎng)度的倍數(shù),可以很容易被檢測(cè)到,但是使用可變長(zhǎng)度的數(shù)據(jù)行就不一定了;

d)對(duì)于MyISAM類型的數(shù)據(jù)表,雖然轉(zhuǎn)換成固定長(zhǎng)度的數(shù)據(jù)列可以提高性能,但是占據(jù)的空間也大;

36、使用not null和enum

盡量將列定義為notnull,這樣可使數(shù)據(jù)的出來(lái)更快,所需的空間更少,而且在查詢時(shí),MySQL不需要檢查是否存在特例,即null值,從而優(yōu)化查詢;

如果一列只含有有限數(shù)目的特定值,如性別,是否有效或者入學(xué)年份等,在這種情況下應(yīng)該考慮將其轉(zhuǎn)換為enum列的值,MySQL處理的更快,因?yàn)樗械膃num值在系統(tǒng)內(nèi)都是以標(biāo)識(shí)數(shù)值來(lái)表示的;

37、使用optimize table

對(duì)于經(jīng)常修改的表,容易產(chǎn)生碎片,使在查詢數(shù)據(jù)庫(kù)時(shí)必須讀取更多的磁盤塊, 降低查詢性能。具有可變長(zhǎng)的表都存在磁盤碎片問(wèn)題,這個(gè)問(wèn)題對(duì)blob數(shù)據(jù)類型更為突出,因?yàn)槠涑叽缱兓浅4蟆?梢酝ㄟ^(guò)使用optimize table來(lái)整理碎片,保證數(shù)據(jù)庫(kù)性能不下降,優(yōu)化那些受碎片影響的數(shù)據(jù)表。 optimize table可以用于MyISAM和BDB類型的數(shù)據(jù)表。實(shí)際上任何碎片整理方法都是用mysqldump來(lái)轉(zhuǎn)存數(shù)據(jù)表,然后使用轉(zhuǎn)存后的文件并重新建數(shù)據(jù) 表;

38、使用procedure analyse()

可以使用procedure analyse()顯示最佳類型的建議,使用很簡(jiǎn)單,在select語(yǔ)句后面加上procedureanalyse()就可以了;例如:

select?*?from?students?procedureanalyse();select?*?from?students?procedureanalyse(16,256);

第二條語(yǔ)句要求procedure analyse()不要建議含有多于16個(gè)值,或者含有多于256字節(jié)的enum類型,如果沒(méi)有限制,輸出可能會(huì)很長(zhǎng);

39、使用查詢緩存

1)查詢緩存的工作方式:

第一次執(zhí)行某條select語(yǔ)句時(shí),服務(wù)器記住該查詢的文本內(nèi)容和查詢結(jié)果,存儲(chǔ)在緩存中,下次碰到這個(gè)語(yǔ)句時(shí),直接從緩存中返回結(jié)果;當(dāng)更新數(shù)據(jù)表后,該數(shù)據(jù)表的任何緩存查詢都變成無(wú)效的,并且會(huì)被丟棄。

2)配置緩存參數(shù):

變量:query_cache_type,查詢緩存的操作模式。有3中模 式,0:不緩存;1:緩存查詢,除非與 select sql_no_cache開(kāi)頭;2:根據(jù)需要只緩存那些以select sql_cache開(kāi)頭的查詢; query_cache_size:設(shè)置查詢緩存的最大結(jié)果集的大小,比這個(gè)值大的不會(huì)被緩存。

40、調(diào)整硬件

1)在機(jī)器上裝更多的內(nèi)存;

2)增加更快的硬盤以減少I/O等待時(shí)間;

尋道時(shí)間是決定性能的主要因素,逐字地移動(dòng)磁頭是最慢的,一旦磁頭定位,從磁道讀則很快;

3)在不同的物理硬盤設(shè)備上重新分配磁盤活動(dòng);

如果可能,應(yīng)將最繁忙的數(shù)據(jù)庫(kù)存放在不同的物理設(shè)備上,這跟使用同一物理設(shè)備的不同分區(qū)是不同的,因?yàn)樗鼈儗?zhēng)用相同的物理資源(磁頭)。

41、MySQL版本查看:

[root@wulaoer?~]#?mysql?-Vmysql??Ver?14.14?Distrib?5.1.73,?for?redhat-linux-gnu?(x86_64)?using?readline?5.1

或者

[root@wulaoer?~]#?mysql?-uroot?-pEnter?password:?Welcome?to?the?MySQL?monitor.??Commands?end?with?;?or?\g.Your?MySQL?connection?id?is?38Server?version:?5.1.73?Source?distributionCopyright?(c)?2000,?2013,?Oracle?and/or?its?affiliates.?All?rights?reserved.Oracle?is?a?registered?trademark?of?Oracle?Corporation?and/or?itsaffiliates.?Other?names?may?be?trademarks?of?their?respectiveowners.Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement.mysql>?status;--------------mysql??Ver?14.14?Distrib?5.1.73,?for?redhat-linux-gnu?(x86_64)?using?readline?5.1Connection?id:????????38Current?database:????Current?user:????????root@localhostSSL:????????????Not?in?useCurrent?pager:????????stdoutUsing?outfile:????????''Using?delimiter:????;Server?version:????????5.1.73?Source?distributionProtocol?version:????10Connection:????????Localhost?via?UNIX?socketServer?characterset:????latin1Db?????characterset:????latin1Client?characterset:????latin1Conn.??characterset:????latin1UNIX?socket:????????/var/lib/mysql/mysql.sockUptime:????????????2?hours?12?min?50?secThreads:?1??Questions:?186??Slow?queries:?0??Opens:?28??Flush?tables:?1??Open?tables:?23??Queries?per?second?avg:?0.23--------------mysql>?select?version();+-----------+|?version()?|+-----------+|?5.1.73????|+-----------+1?row?in?set?(0.00?sec)mysql>?select?@@version;+-----------+|?@@version?|+-----------+|?5.1.73????|+-----------+1?row?in?set?(0.00?sec)

42、二進(jìn)制日志查看

mysql>?show?variables?like?'log_bin';+---------------+-------+|?Variable_name?|?Value?|+---------------+-------+|?log_bin???????|?OFF???|+---------------+-------+1?row?in?set?(0.00?sec)

開(kāi) 啟二進(jìn)制日志,在windows里my.ini或者linux里my.cnf里,在[mysqld]下加上log-bin=日志名,注{等號(hào)后面可以定義 二進(jìn)制日志文件名和位置}。如果只對(duì)某個(gè)庫(kù)進(jìn)行日志文件記錄,那么再添加binlog-do-db=test,這樣就只記錄test數(shù)據(jù)庫(kù)的日志,而放棄 其他的,而binlog-ignore-db=sales 除sales庫(kù)不記錄,其他都記錄。配置文件設(shè)置好需要重啟一下mysql

mysql>?show?master?status;+------------+----------+--------------+------------------+|?File???????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?|+------------+----------+--------------+------------------+|?log.000001?|??????106?|??????????????|??????????????????|+------------+----------+--------------+------------------+1?row?in?set?(0.00?sec)

43、mysql日志管理

設(shè)置my.cnf中的參數(shù)[mysqld]下的expire_logs_day = 天數(shù) ?。此參數(shù)是設(shè)置日志的過(guò)期天數(shù),過(guò)期的日志將會(huì)被自動(dòng)刪除,

如果日志長(zhǎng)度超過(guò)了max_binlog_size = (大小可以帶單位,默認(rèn)k)的上限(默認(rèn)是1G)也會(huì)創(chuàng)建一個(gè)新的日志文件

①show?variables?like?'log_%';查看所有的log命令②show?variables?like?'log_bin';查看具體的log命令

刪除日志:

mysql>?purge?master?logs?to?'mysql-bin.000009'?;Query?OK,?0?rows?affected?(0.01?sec)mysql>?purge?master?logs?before?'2015-0-22?00:00:00′;Query?OK,?0?rows?affected?(0.05?sec)?RESET?MASTER

#刪除之前所有的mysqld-bin,并重新生成新的mysqld-bin后綴從000001開(kāi)始。注:如果您有一個(gè)活性的從屬服務(wù)器,該服 務(wù)器當(dāng)前正在讀取您正在試圖刪除的日志之一,則本語(yǔ)句不會(huì)起作用,而是會(huì)失敗,并伴隨一個(gè)錯(cuò)誤。不過(guò),如果從屬服務(wù)器是休止的,并且您碰巧清理了其想要讀 取的日志之一,則從屬服務(wù)器啟動(dòng)后不能復(fù)制。當(dāng)從屬服務(wù)器正在復(fù)制時(shí),本語(yǔ)句可以安全運(yùn)行。您不需要停止它們。

44、遠(yuǎn)程使用客戶端連接數(shù)據(jù)庫(kù)

(1)刪除連接的空賬戶

mysql>?delete?from?mysql.user?where?user='';Query?OK,?2?rows?affected?(0.00?sec)

(2)建立客戶端連接:

先在防火墻加如一條,防火墻允許3306端口通過(guò),添加后重啟防火墻。

-A?INPUT?-m?state?--state?NEW?-m?tcp?-p?tcp?--dport?3306?-j?ACCEPT

(3)先看以下mysql的配置文件my.cnf或者my.conf,里面([mysqld])有沒(méi)有bind_address=127.0.0.1,如果有就注釋掉,沒(méi)有的話就不用操作了,

(4)添加允許連接的IP和帳號(hào)密碼.

mysql>?GRANT?ALL?PRIVILEGES?ON?*.*?TO?root@"%"?IDENTIFIED?BY?"root";

更多可以參考3、添加用戶,這里的用戶和密碼是客戶端連接的用戶和密碼。

(5)查看連接的客戶端

mysql>?use?mysql;Reading?table?information?for?completion?of?table?and?column?namesYou?can?turn?off?this?feature?to?get?a?quicker?startup?with?-ADatabase?changedmysql>?select?user,host?from?user;+------+--------------+|?user?|?host?????????|+------+--------------+|?root?|?127.0.0.1????||?root?|?192.168.1.36?||?root?|?localhost????||?root?|?wulaoer??????|+------+--------------+4?rows?in?set?(0.00?sec)

(6)刪除連接的客戶端

關(guān)閉遠(yuǎn)程訪問(wèn):

mysql> use?mysql;mysql> update?user?set?host?=?"localhost"?where?user?=?"root"?and?host=?"%";

(7)刪除連接的IP:

mysql>?select?user,host?from?user;+------+--------------+|?user?|?host?????????|+------+--------------+|?root?|?127.0.0.1????||?root?|?192.168.1.36?||?root?|?localhost????||?root?|?wulaoer??????|+------+--------------+4?rows?in?set?(0.00?sec)mysql>?DELETE?FROM?user?WHERE??Host="localhost";Query?OK,?1?row?affected?(0.00?sec)mysql>?select?user,host?from?user;+------+--------------+|?user?|?host?????????|+------+--------------+|?root?|?127.0.0.1????||?root?|?192.168.1.36?||?root?|?wulaoer??????|+------+--------------+3?rows?in?set?(0.00?sec)

45、查看連接MYSQL數(shù)據(jù)庫(kù)的IP信息

我們通常情況下要統(tǒng)計(jì)數(shù)據(jù)庫(kù)的連接數(shù)指的是統(tǒng)計(jì)總數(shù),沒(méi)有細(xì)分到每個(gè)IP上。現(xiàn)在要監(jiān)控每個(gè)IP的連接數(shù),實(shí)現(xiàn)方式如下:

方法一:1selectSUBSTRING_INDEX(host,':',1)asip , count(*)frominformation_schema.processlistgroupbyip;

方法二:1mysql -u root -h127.0.0.1 -e"show processlist\G;"| egrep"Host\:"| awk -F:'{ print $2 }'| sort | uniq -c

方法三:1mysql -u root -h127.0.0.1 --skip-column-names -e"show processlist;"|awk'{print $3}'|awk -F":"'{print $1}'|sort|uniq –c

以上就是三種監(jiān)控IP連接數(shù)的實(shí)現(xiàn)方式,希望對(duì)大家的學(xué)習(xí)有所幫助。

參考網(wǎng)址http://blog.csdn.net/lxh090821/article/details/9410943

總結(jié)

以上是生活随笔為你收集整理的lunixs 退出mysql_MySQL的基本操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。