mysql文法、特殊符號及Regex的使用,mysqlRegex

來源:互聯網
上載者:User

mysql文法、特殊符號及Regex的使用,mysqlRegex
http://blog.csdn.net/pipisorry/article/details/46773545

Mysql常用顯示命令

1、顯示當前資料庫伺服器中的資料庫列表:

mysql> SHOW DATABASES;

注意:mysql庫裡面有MYSQL的系統資訊,我們改密碼和新增使用者,實際上就是用這個庫進行操作。

2、進入資料庫

mysql> USE 庫名;

2、顯示資料庫中的資料表

mysql> SHOW TABLES;

3、顯示資料表的結構

mysql> DESCRIBE 表名;

4、建立資料庫

mysql> CREATE DATABASE 庫名;

5、建立資料表:

mysql> USE 庫名;
mysql> CREATE TABLE 表名 (欄位名 VARCHAR(20), 欄位名 CHAR(1));

6、刪除資料庫

mysql> DROP DATABASE 庫名;

7、刪除多個資料表

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”);

文法:INSERT [INTO] tbl_name [(col_name,...)] VALUES (PRession,...),…
      INSERT [INTO] tbl_name SET col_name=expression, ...

Note:在django中插入時要多加一個id欄位:INSERT INTO 表名 VALUES (1, 'aaa', 'bbb');

11、修改欄位類型:

mysql> alter table 表名 modify column 欄位名 varchar(12);

11、更新表中資料:

mysql-> UPDATE 表名 SET 欄位名1='a',欄位名2='b' WHERE 欄位名3='c';

12、用文本方式將資料裝入資料表中:

mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;

13、匯入.sql檔案命令:

mysql> USE 資料庫名;
mysql> SOURCE d:/mysql.sql;

14、命令列修改root密碼:

mysql> UPDATE mysql.user SET password=PASSWORD('新密碼') WHERE User='root';
mysql> FLUSH PRIVILEGES;

15、顯示use的資料庫名:

mysql> SELECT DATABASE();

16、顯示當前的user:

mysql> SELECT USER();

Note:

1. 操作都是在MySQL的提示符下進行的,而且每個命令以分號結束。

2. sql語句對大小寫不敏感

[MySQL命令詳解]

http://blog.csdn.net/pipisorry/article/details/46773545


MySQL索引使用規則

  1. 用於索引的最好的備選資料列是那些出現在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。

  2. 什麼情況下應不建或少建索引?
    a. 表記錄太少
    b. 經常插入、刪除、修改的表
    c. 經常和主欄位一塊查詢但主欄位索引值比較多的表欄位

  3. 複合索引的建立:
    比如有一條語句是這樣的:

    select * from users where area=’beijing’ and age=22;
    如果我們是在area和age上分別建立單個索引的話,由於mysql查詢每次只能使用一個索引,所以雖然這樣已經相對不做索引時全表掃描提高了很多效率,但是如果在area、age兩列上建立複合索引的話將帶來更高的效率。

    如果我們建立了(area, age,salary)的複合索引,那麼其實相當於建立了(area,age,salary)、(area,age)、(area)三個索引,這被稱為最佳左首碼

  4. 複合索引的建立以及最左首碼原則:
    如果你需要索引一個字串資料列,那麼最好在任何適當的情況下都應該指定前置長度。你可以索引CHAR、VARCHAR、BINARY、VARBINARY、BLOB和TEXT資料列的首碼。
    假設你在表的state、city和zip資料列上建立了複合索引。索引中的資料行按照state/city/zip次序排列,因此它們也會自動地按照state/city/zip次序排列。這意味著,即使你在查詢中只指定了state值,或者指定state和city值,MySQL也可以使用這個索引。因此,這個索引可以被用於搜尋如下所示的資料列組合:(state, city, zip)(state, city)(state)

  5. 索引不會包含有NULL值的列
    只要列中包含有NULL值都將不會被包含在索引中,複合索引中只要有一列含有NULL值,那麼這一列對於此複合索引就是無效的。所以我們在資料庫設計時不要讓欄位的預設值為NULL。

  6. mysql查詢只使用一個索引.

    因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立複合索引。

  7. 一般情況下不鼓勵使用like操作.

    如果非使用不可,如何使用也是一個問題。like “%a%” 不會使用索引而like “aaa%”可以使用索引。

  8. 不要在列上進行運算,select * from users where YEAR(adddate)

  9. 不使用NOT IN操作:
    NOT IN操作不會使用索引將進行全表掃描。NOT IN可以用NOT EXISTS代替.

[mysql索引箴言集]

http://blog.csdn.net/pipisorry/article/details/46773545


mysql特殊符號

% (百分比符號)  :
代表任意長度(長度可以為0)的字串例:a%b表示以a開頭,以b結尾的任意長度的字串。如acb,addgb,ab等都滿足該匹配串 _ (下橫線 ):
代表任意單個字元例:a_b表示以a開頭,以b結尾的長度為3的任一字元串。如acb,afb等都滿足該匹配串

字串引號:

在SQL中,表示字串引號強烈建議使用單引號(')。雖然MySQL(和PHP搭配之最佳組合)也可以使用雙引號("),但是為了和sql server(WINDOWS平台上強大的資料庫平台)和Oracle(大型網站資料庫平台)統一,建議都使用單引號。如果在字串中也有單引號出現的話,在SQL中需要將其替換為兩個單引號(''),DBMS會將其解釋為一個單引號的。

SQL的分行符號和字串串連符:

在MySQL(和PHP搭配之最佳組合)、sql server(WINDOWS平台上強大的資料庫平台)和Oracle(大型網站資料庫平台)中均有不同,下面以列表顯示。  MySQL(和PHP搭配之最佳組合)sql server(WINDOWS平台上強大的資料庫平台)Oracle(大型網站資料庫平台)分行符號\n或\r\n或CHAR(10)CHAR(13)CHR(10)字串串連符CONCAT()+||或CONCAT()

宏變數標識符(&) :

在Oracle(大型網站資料庫平台)裡有特殊含義,是一個宏變數標識符,在SQLPLUS裡執行SELECT 'AAA BBB' AS STR FROM DUAL,它會提示你輸入宏變數值,所有如果SQL裡有(&),建議用單引號括起來,如SELECT 'AAA'||'&'||'nbsp;BBB' AS STR FROM DUAL它就不會提示了。


mysqlRegex

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')
此語句的作用是向表table中插入兩條記錄。如果主鍵id為1或2不存在
就相當於
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值則不會插入資料
2.replace(object,search,replace)
把object中出現search的全部替換為replace
select replace('www.163.com','w','Ww')—>WwWwWw.163.com
例:把表table中的name欄位中的aa替換為bb
update table set name=replace(name,'aa','bb')
——————————————————————————– 

擴充Regex
由MySQL提供的模式比對的其它類型是使用擴充Regex。當你對這類模式進行匹配測試時,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義字)。
擴充Regex的一些字元是:
· ‘.'匹配任何單個的字元。
· 字元類“[...]”匹配在方括弧內的任何字元。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字元的範圍,使用一個“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何數字。
· “ * ”匹配零個或多個在它前面的字元。例如,“x*”匹配任何數量的“x”字元,“[0-9]*”匹配任何數量的數字,而“.*”匹配任何數量的任何字元。
如果REGEXP模式與被測試值的任何地方匹配,模式就匹配(這不同於LIKE模式比對,只有與整個值匹配,模式才匹配)。
為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。
為了說明擴充Regex如何工作,下面使用REGEXP重寫上面所示的LIKE查詢:
為了找出以“b”開頭的名字,使用“^”匹配名字的開始:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^b';

[mysql Regex]

[刪除mysql資料庫中所有不以JP開頭的表]

from:http://blog.csdn.net/pipisorry/article/details/46773545


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.