MySQL常用技巧
正則表達式
-- 是否以a開頭
select 'abcdefg' REGEXP '^a'
-- 是否以fg結尾 www.2cto.com
select 'abcdefg' REGEXP 'fg$'
-- 哇,漢字也管用
select STAFF_Name,STAFF_NAME REGEXP '^測試' from g_staff
select STAFF_Name from g_staff where STAFF_NAME REGEXP '^劉'=1
-- "."匹配任意單個字符
select 'abcdefg' REGEXP '.h','abcdefg' REGEXP '.g'
-- "[...]" 匹配出中括號的內的任意字符
select 'abcdefg' regexp '[weh]'
select 'abcdefg' REGEXP '^[ead]'
-- "[^...]" 匹配不出括號內的任意字符
select 'efg' REGEXP '[^XYZ]','X' REGEXP '[^XYZ]'
www.2cto.com
select * from user where email REGEXP '@163.com$'
巧用rand()提取隨機行
-- 隨機抽取5個用戶
select * from tf_f_user order by rand() limit 5
with rollup bit_or bit_and
和group by 一起用,起到求和的作用
數據庫和表名的大小寫問題
總是以小寫或者大寫創建並引用數據庫名和表名
MySQL在Linux下數據庫名、表名、列名、別名大小寫規則是這樣的:
1、數據庫名與表名是嚴格區分大小寫的;
2、表的別名是嚴格區分大小寫的;
3、列名與列的別名在所有的情況下均是忽略大小寫的;
4、變量名也是嚴格區分大小寫的; www.2cto.com
MySQL在Windows下都不區分大小寫。
----------------------------------------------------------------------------------------------------
1、以Ubuntu為例:Ubuntu下mysql安裝完後是默認:區分表名的大小寫,不區分列名的大小寫;
2、用root帳號登錄後,在/etc/mysql/my.cnf 中的[mysqld]後添加添加lower_case_table_names=1,重啟MYSQL服務,這時已設置成功:不區分表名的大小寫;
lower_case_table_names參數詳解:
lower_case_table_names = 0
其中 0:區分大小寫,1:不區分大小寫
----------------------------------------------------------------------------------------------------
3、如果想在查詢時區分字段值的大小寫,則:字段值需要設置BINARY屬性,設置的方法有多種:
A、創建時設置:
CREATE TABLE T(
A VARCHAR(10) BINARY
); www.2cto.com
B、使用alter修改:
ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
C、mysql table editor中直接勾選BINARY項。
外鍵注意事項
在mysql中,InnoDB存儲引擎支持對外部關鍵字約束條件的檢查。而對於其他類型的存儲引擎的表,當使用 reference table_name(colomn_name)子句定義列時,可以使用reference,但是該子句沒有實際效果,只作為備忘錄或者注視來提醒用戶目前正定義的列執行另一個表中的一個列。
作者 bengda