Mysql语法、特殊符号及正则表达式的使⽤详解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:/” 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索引使⽤规则
⽤于索引的最好的备选数据列是那些出现在WHERE⼦句、join⼦句、ORDER BY或GROUP BY⼦句中的列。
什么情况下应不建或少建索引?
a. 表记录太少
b. 经常插⼊、删除、修改的表
c. 经常和主字段⼀块查询但主字段索引值⽐较多的表字段
复合索引的创建:
⽐如有⼀条语句是这样的:
select * from users where area='beijing' and age=22;
如果我们是在area和age上分别创建单个索引的话,由于mysql查询每次只能使⽤⼀个索引,所以虽然这样已经相对不做索引时全表扫描提⾼了很多效率,但是如果在area、age两列上创建复合索引的话将带来更⾼的效率。
如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀
复合索引的建⽴以及最左前缀原则:
如果你需要索引⼀个字符串数据列,那么最好在任何适当的情况下都应该指定前缀长度。你可以索引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)
索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有⼀列含有NULL值,那么这⼀列对于此复合索引就是⽆效的。所以我们在数据库设计时不要让字段的默认值为NULL。
mysql查询只使⽤⼀个索引.
因此如果where⼦句中已经使⽤了索引的话,那么order by中的列是不会使⽤索引的。因此数据库默认排序可以符合要求的情况下不要使⽤排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
⼀般情况下不⿎励使⽤like操作.
如果⾮使⽤不可,如何使⽤也是⼀个问题。like “%a%” 不会使⽤索引⽽like “aaa%”可以使⽤索引。
不要在列上进⾏运算,select * from users where YEAR(adddate)
不使⽤NOT IN操作:
NOT IN操作不会使⽤索引将进⾏全表扫描。NOT IN可以⽤NOT EXISTS代替.
mysql特殊符号mysql group by order by
% (百分号) :
代表任意长度(长度可以为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它就不会提⽰了。
mysql正则表达式
replace、regexp的⽤法
0 Comments | This entry was posted on Apr 08 2010
mysql replace⽤法
replace into table (id,name) values('1′,'aa'),('2′,'bb')
此语句的作⽤是向表table中插⼊两条记录。如果主键id为1或2不存在
就相当于
insert into table (id,name) values('1′,'aa'),('2′,'bb')
如果存在相同的值则不会插⼊数据
把object中出现search的全部替换为replace
select replace('www.163','w','Ww')—>WwWwWw.163
例:把表table中的name字段中的aa替换为bb
update table set name=replace(name,'aa','bb')
—————————————————————————–
扩展正则表达式
由MySQL提供的模式匹配的其它类型是使⽤扩展正则表达式。当你对这类模式进⾏匹配测试时,使⽤REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的⼀些字符是:
· ‘.'匹配任何单个的字符。
· 字符类“[...]”匹配在⽅括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使⽤⼀个“-”。“[a-z]”匹配任何字母,⽽“[0-9]”匹配任何数字。
· “ * ”匹配零个或多个在它前⾯的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,⽽“.*”匹配任何数量的任何字符。
如果REGEXP模式与被测试值的任何地⽅匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。
为了定位⼀个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使⽤“^”或在模式的结尾⽤“$”。
为了说明扩展正则表达式如何⼯作,下⾯使⽤REGEXP重写上⾯所⽰的LIKE查询:
为了出以“b”开头的名字,使⽤“^”匹配名字的开始:
mysql> SELECT * FROM pet WHERE name REGEXP ‘^b';
[mysql 正则表达式]
[删除mysql数据库中所有不以JP开头的表]
总结
以上所述是⼩编给⼤家介绍的Mysql语法、特殊符号及正则表达式的使⽤,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!