Mysql語(yǔ)法、特殊符號(hào)及正則表達(dá)式的使用詳解
Mysql常用顯示命令
1、顯示當(dāng)前數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)列表:
mysql> SHOW DATABASES;
注意:mysql庫(kù)里面有MYSQL的系統(tǒng)信息,我們改密碼和新增用戶(hù),實(shí)際上就是用這個(gè)庫(kù)進(jìn)行操作。
2、進(jìn)入數(shù)據(jù)庫(kù):
mysql> USE 庫(kù)名;
2、顯示數(shù)據(jù)庫(kù)中的數(shù)據(jù)表:
mysql> SHOW TABLES;
3、顯示數(shù)據(jù)表的結(jié)構(gòu):
mysql> DESCRIBE 表名;
4、建立數(shù)據(jù)庫(kù):
mysql> CREATE DATABASE 庫(kù)名;
5、建立數(shù)據(jù)表:
mysql> USE 庫(kù)名; mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
6、刪除數(shù)據(jù)庫(kù):
mysql> DROP DATABASE 庫(kù)名;
7、刪除多個(gè)數(shù)據(jù)表:
mysql> DROP TABLE 表名,表名;
8、將表中記錄清空:
mysql> DELETE FROM 表名;
9、顯示表中的記錄:
mysql> SELECT * FROM 表名;
10、往表中插入新的字段:
mysql> alter tabel 表名 add column 字段名 varchar(10);
10、往表中插入記錄:
mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
語(yǔ)法:
INSERT [INTO] tbl_name [(col_name,...)] VALUES (PRession,...),… INSERT [INTO] tbl_name SET col_name=expression, ...
Note:在django中插入時(shí)要多加一個(gè)id字段:INSERT INTO 表名 VALUES (1, 'aaa', 'bbb');
11、修改字段類(lèi)型:
mysql> alter table 表名 modify column 字段名 varchar(12);
11、更新表中數(shù)據(jù):
mysql-> UPDATE 表名 SET 字段名1='a',字段名2='b' WHERE 字段名3='c';
12、用文本方式將數(shù)據(jù)裝入數(shù)據(jù)表中:
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
13、導(dǎo)入.sql文件命令:
mysql> USE 數(shù)據(jù)庫(kù)名; mysql> SOURCE d:/mysql.sql;
14、命令行修改root密碼:
mysql> UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root'; mysql> FLUSH PRIVILEGES;
15、顯示use的數(shù)據(jù)庫(kù)名:
mysql> SELECT DATABASE();
16、顯示當(dāng)前的user:
mysql> SELECT USER();
Note:
1. 操作都是在MySQL的提示符下進(jìn)行的,而且每個(gè)命令以分號(hào)結(jié)束。
2. sql語(yǔ)句對(duì)大小寫(xiě)不敏感
MySQL索引使用規(guī)則
用于索引的最好的備選數(shù)據(jù)列是那些出現(xiàn)在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。
什么情況下應(yīng)不建或少建索引?
a. 表記錄太少
b. 經(jīng)常插入、刪除、修改的表
c. 經(jīng)常和主字段一塊查詢(xún)但主字段索引值比較多的表字段
復(fù)合索引的創(chuàng)建:
比如有一條語(yǔ)句是這樣的:
select * from users where area='beijing' and age=22;
如果我們是在area和age上分別創(chuàng)建單個(gè)索引的話(huà),由于mysql查詢(xún)每次只能使用一個(gè)索引,所以雖然這樣已經(jīng)相對(duì)不做索引時(shí)全表掃描提高了很多效率,但是如果在area、age兩列上創(chuàng)建復(fù)合索引的話(huà)將帶來(lái)更高的效率。
如果我們創(chuàng)建了(area, age,salary)的復(fù)合索引,那么其實(shí)相當(dāng)于創(chuàng)建了(area,age,salary)、(area,age)、(area)三個(gè)索引,這被稱(chēng)為最佳左前綴
復(fù)合索引的建立以及最左前綴原則:
如果你需要索引一個(gè)字符串?dāng)?shù)據(jù)列,那么最好在任何適當(dāng)?shù)那闆r下都應(yīng)該指定前綴長(zhǎng)度。你可以索引CHAR、VARCHAR、BINARY、VARBINARY、BLOB和TEXT數(shù)據(jù)列的前綴。
假設(shè)你在表的state、city和zip數(shù)據(jù)列上建立了復(fù)合索引。索引中的數(shù)據(jù)行按照state/city/zip次序排列,因此它們也會(huì)自動(dòng)地按照state/city/zip次序排列。這意味著,即使你在查詢(xún)中只指定了state值,或者指定state和city值,MySQL也可以使用這個(gè)索引。因此,這個(gè)索引可以被用于搜索如下所示的數(shù)據(jù)列組合:(state, city, zip)(state, city)(state)
索引不會(huì)包含有NULL值的列
只要列中包含有NULL值都將不會(huì)被包含在索引中,復(fù)合索引中只要有一列含有NULL值,那么這一列對(duì)于此復(fù)合索引就是無(wú)效的。所以我們?cè)跀?shù)據(jù)庫(kù)設(shè)計(jì)時(shí)不要讓字段的默認(rèn)值為NULL。
mysql查詢(xún)只使用一個(gè)索引.
因此如果where子句中已經(jīng)使用了索引的話(huà),那么order by中的列是不會(huì)使用索引的。因此數(shù)據(jù)庫(kù)默認(rèn)排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個(gè)列的排序,如果需要最好給這些列創(chuàng)建復(fù)合索引。
一般情況下不鼓勵(lì)使用like操作.
如果非使用不可,如何使用也是一個(gè)問(wèn)題。like “%a%” 不會(huì)使用索引而like “aaa%”可以使用索引。
不要在列上進(jìn)行運(yùn)算,select * from users where YEAR(adddate)
不使用NOT IN操作:
NOT IN操作不會(huì)使用索引將進(jìn)行全表掃描。NOT IN可以用NOT EXISTS代替.
mysql特殊符號(hào)
% (百分號(hào)) :
代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串 例:a%b表示以a開(kāi)頭,以b結(jié)尾的任意長(zhǎng)度的字符串。如acb,addgb,ab等都滿(mǎn)足該匹配串 _ (下橫線):
代表任意單個(gè)字符 例:a_b表示以a開(kāi)頭,以b結(jié)尾的長(zhǎng)度為3的任意字符串。如acb,afb等都滿(mǎn)足該匹配串
字符串引號(hào):
在SQL中,表示字符串引號(hào)強(qiáng)烈建議使用單引號(hào)(')。雖然MySQL(和PHP搭配之最佳組合)也可以使用雙引號(hào)("),但是為了和sql server(WINDOWS平臺(tái)上強(qiáng)大的數(shù)據(jù)庫(kù)平臺(tái))和Oracle(大型網(wǎng)站數(shù)據(jù)庫(kù)平臺(tái))統(tǒng)一,建議都使用單引號(hào)。如果在字符串中也有單引號(hào)出現(xiàn)的話(huà),在SQL中需要將其替換為兩個(gè)單引號(hào)(''),DBMS會(huì)將其解釋為一個(gè)單引號(hào)的。
SQL的換行符和字符串連接符:
在MySQL(和PHP搭配之最佳組合)、sql server(WINDOWS平臺(tái)上強(qiáng)大的數(shù)據(jù)庫(kù)平臺(tái))和Oracle(大型網(wǎng)站數(shù)據(jù)庫(kù)平臺(tái))中均有不同,下面以列表顯示。 MySQL(和PHP搭配之最佳組合)sql server(WINDOWS平臺(tái)上強(qiáng)大的數(shù)據(jù)庫(kù)平臺(tái))Oracle(大型網(wǎng)站數(shù)據(jù)庫(kù)平臺(tái))換行符\n或\r\n或CHAR(10)CHAR(13)CHR(10)字符串連接符CONCAT()+||或CONCAT()
宏變量標(biāo)識(shí)符(&) :
在Oracle(大型網(wǎng)站數(shù)據(jù)庫(kù)平臺(tái))里有特殊含義,是一個(gè)宏變量標(biāo)識(shí)符,在SQLPLUS里執(zhí)行SELECT 'AAA BBB' AS STR FROM DUAL,它會(huì)提示你輸入宏變量值,所有如果SQL里有(&),建議用單引號(hào)括起來(lái),如SELECT 'AAA'||'&'||'nbsp;BBB' AS STR FROM DUAL它就不會(huì)提示了。
mysql正則表達(dá)式
replace、regexp的用法
0 Comments | This entry was posted on Apr 08 2010
mysql replace用法
1.replace into
replace into table (id,name) values('1′,'aa'),('2′,'bb')
此語(yǔ)句的作用是向表table中插入兩條記錄。如果主鍵id為1或2不存在
就相當(dāng)于
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值則不會(huì)插入數(shù)據(jù)
2.replace(object,search,replace)
把object中出現(xiàn)search的全部替換為replace
select replace('www.163.com','w','Ww')—>WwWwWw.163.com
例:把表table中的name字段中的aa替換為bb
update table set name=replace(name,'aa','bb')
——————————————————————————–
擴(kuò)展正則表達(dá)式
由MySQL提供的模式匹配的其它類(lèi)型是使用擴(kuò)展正則表達(dá)式。當(dāng)你對(duì)這類(lèi)模式進(jìn)行匹配測(cè)試時(shí),使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義詞)。
擴(kuò)展正則表達(dá)式的一些字符是:
· ‘.'匹配任何單個(gè)的字符。
· 字符類(lèi)“[...]”匹配在方括號(hào)內(nèi)的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字符的范圍,使用一個(gè)“-”?!癧a-z]”匹配任何字母,而“[0-9]”匹配任何數(shù)字。
· “ * ”匹配零個(gè)或多個(gè)在它前面的字符。例如,“x*”匹配任何數(shù)量的“x”字符,“[0-9]*”匹配任何數(shù)量的數(shù)字,而“.*”匹配任何數(shù)量的任何字符。
如果REGEXP模式與被測(cè)試值的任何地方匹配,模式就匹配(這不同于LIKE模式匹配,只有與整個(gè)值匹配,模式才匹配)。
為了定位一個(gè)模式以便它必須匹配被測(cè)試值的開(kāi)始或結(jié)尾,在模式開(kāi)始處使用“^”或在模式的結(jié)尾用“$”。
為了說(shuō)明擴(kuò)展正則表達(dá)式如何工作,下面使用REGEXP重寫(xiě)上面所示的LIKE查詢(xún):
為了找出以“b”開(kāi)頭的名字,使用“^”匹配名字的開(kāi)始:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^b';
[mysql 正則表達(dá)式]
[刪除mysql數(shù)據(jù)庫(kù)中所有不以JP開(kāi)頭的表]
總結(jié)
以上所述是小編給大家介紹的Mysql語(yǔ)法、特殊符號(hào)及正則表達(dá)式的使用,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
windows下安裝mysql-8.0.18-winx64的教程(圖文詳解)
這篇文章主要介紹了windows下安裝mysql-8.0.18-winx64,需要的朋友可以參考下2019-12-12MySQL中大數(shù)據(jù)表增加字段的實(shí)現(xiàn)思路
最近遇到的一個(gè)問(wèn)題,需要在一張將近1000萬(wàn)數(shù)據(jù)量的表中添加加一個(gè)字段,但是直接添加會(huì)導(dǎo)致mysql 奔潰,所以需要利用其他的方法進(jìn)行添加,這篇文章主要給大家介紹了MySQL中大數(shù)據(jù)表增加字段的實(shí)現(xiàn)思路,需要的朋友可以參考借鑒。2017-01-01用MySQL創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表代碼
了解了一些最基本的操作命令后,我們?cè)賮?lái)學(xué)習(xí)如何創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表。2008-10-10MySQL8.0 DDL原子性特性及實(shí)現(xiàn)原理
這篇文章主要介紹了MySQL8.0 DDL原子性特性及實(shí)現(xiàn)原理,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07MySQL數(shù)據(jù)庫(kù)使用mysqldump導(dǎo)出數(shù)據(jù)詳解
mysqldump是mysql用于轉(zhuǎn)存儲(chǔ)數(shù)據(jù)庫(kù)的實(shí)用程序。它主要產(chǎn)生一個(gè)SQL腳本,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫(kù)所必需的命令CREATE TABLE INSERT等。接下來(lái)通過(guò)本文給大家介紹MySQL數(shù)據(jù)庫(kù)使用mysqldump導(dǎo)出數(shù)據(jù)詳解,需要的朋友一起學(xué)習(xí)吧2016-04-04MySQL中查詢(xún)所有數(shù)據(jù)庫(kù)占用磁盤(pán)空間大小和單個(gè)庫(kù)中所有表的大小的sql語(yǔ)句
這篇文章主要介紹了在mysql中如何查詢(xún)所有數(shù)據(jù)庫(kù)占用磁盤(pán)空間大小的SQL語(yǔ)句,這樣方便我們了解數(shù)據(jù)庫(kù)的一些情況2013-08-08Linux安裝MySQL5.6.24使用文字說(shuō)明
這篇文章主要為大家詳細(xì)介紹了Linux安裝MySQL使用文字說(shuō)明,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01MySQL curdate()函數(shù)的實(shí)例詳解
這篇文章主要介紹了MySQL curdate()函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家理解應(yīng)用MysqL curdate()的使用方法,需要的朋友可以參考下2017-09-09