mysql符号表达式_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:/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索引使用规则

用于索引的最好的备选数据列是那些出现在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特殊符号

% (百分号) :

代表任意长度(长度可以为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用法

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')

——————————————————————————–

扩展正则表达式

由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语法、特殊符号及正则表达式的使用,希望对大家有所帮助

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值