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语法、特殊符号及正则表达式的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • MySql官方手册学习笔记2 MySql的模糊查询和正则表达式

    SQL模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零字符).在 MySQL中,SQL的模式默认是忽略大小写的.下面给出一些例子.注意使用SQL模式时,不能使用=或!=:而应使用LIKE或NOT LIKE比较操作符. 要想找出以"b"开头的名字: mysql> SELECT * FROM pet WHERE name LIKE 'b%';+--------+--------+---------+------+---

  • MySQL 字符串模式匹配 扩展正则表达式模式匹配

    标准的SQL模式匹配 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使用=或!=:而使用LIKE或NOT LIKE比较操作符. 例如,在表pet中,为了找出以"b"开头的名字: mysql> SELECT * FROM pet WHERE name LIKE "b%"; +--

  • MySQL中REGEXP正则表达式使用大全

    以前我要查找数据都是使用like后来发现mysql中也有正则表达式了并且感觉性能要好于like,下面我来给大家分享一下mysql REGEXP正则表达式使用详解,希望此方法对大家有帮助. MySQL采用Henry Spencer的正则表达式实施,其目标是符合POSIX 1003.2.请参见附录C:感谢.MySQL采用了扩展的版本,以支持在SQL语句中与REGEXP操作符一起使用的模式匹配操作.请参见3.3.4.7节,"模式匹配". 在本附录中,归纳了在MySQL中可用于REGEXP操作

  • coolcode转SyntaxHighlighter与Mysql正则表达式实现分析

    最近,我抽空改成SyntaxHighlighter.由于coolcode插件的开头标签是 <coolcode> 或者[coolcode]这样的,而SyntaxHighlighter是 [code lang="php"] 这样的(或者其他).遂只能想办法把老的格式转化成新的格式.当然,肯定用到正则表达式了. 原来的代码高亮开头标识为 <coolcode lang="php" download="123.php" linenum=&

  • MYSQL使用正则表达式过滤数据

    一.正则与LIKE的区别  Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串. 例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的行 REGEXP'.og' .是正则表达式中里一个特殊的字符.它表示匹配一个字符,因此,dog,hog,mog等等都能匹配. 注意: 关于LIKE和REGEXP的区别:LIKE匹配整个列.如果被匹配的文本仅在列值中出现,LIKE

  • mysql中如何使用正则表达式查询

    基本形式 属性名 regexp '匹配方式' 正则表达式的模式字符 ^ 匹配字符开始的部分 eg1: 从info表name字段中查询以L开头的记录 select * from info where name regexp '^L'; eg2: 从info表name字段中查询以aaa开头的记录 select * from info where name regexp '^aaa'; $ 匹配字符结束的部分 eg1: 从info表name字段中查询以c结尾的记录 select * from info

  • MySql中正则表达式的使用方法描述

    正则表达式定义了一个字符串的规则.最简单的正则表达式不包含任何保留字.例如,正则表达式hello只和字符串"hello"匹配.  一般的正则表达式使用了某些特殊的结构,所以它能匹配更多的字符串.例如,正则表达式hello|word既能匹配字符串"hello"也能匹配字符串 "word".举一个更复杂一点的例子,正则表达式b[an]*s可以匹配字符串"bananas"."baaaaas" ."bs&

  • mysql正则表达式 LIKE 通配符

    扩展正则表达式的一些字符是: "."匹配任何单个的字符. 一个字符类"[...]"匹配在方括号内的任何字符.例如,"[abc]"匹配"a"."b"或"c".为了命名字符的一个范围,使用一个"-"."[a-z]"匹配任何小写字母,而"[0-9]"匹配任何数字. " * "匹配零个或多个在它前面的东西.例如,&q

  • 在MySQL中用正则表达式替换数据库中的内容的方法

    PS:下面是转过来的,用于记录下,这个不是正则的初衷,只是用了REGEXP而已,正则的更灵活更方便 将comment表中的author_url包含www.sohu.com的记录,其中的sohu替换为sina,一个语句搞定~ update comment set author_url=REPLACE(author_url,'sohu','sina') where author_url REGEXP 'www.sohu.com'; 带IF判断的复杂替换 update comment set url=

  • Mysql语法、特殊符号及正则表达式的使用详解

    Mysql常用显示命令 1.显示当前数据库服务器中的数据库列表: mysql> SHOW DATABASES; 注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作. 2.进入数据库: mysql> USE 库名: 2.显示数据库中的数据表: mysql> SHOW TABLES; 3.显示数据表的结构: mysql> DESCRIBE 表名; 4.建立数据库: mysql> CREATE DATABASE 库名; 5.建立数据表:

  • Python语法学习之正则表达式的使用详解

    目录 正则表达式中的特殊字符 正则表达式的使用 正则小案例 - 1 正则小案例 - 2 正则小案例 - 3 要想成功的进行字符串的匹配需要使用到正则表达式模块,正则表达式匹配规则以及需要被匹配的字符串.在这三个条件中,模块与字符串都是准备好的,只有匹配规则异常的灵活,而今天这个章节就是认识一下正则表达式中的特殊字符,通过这些字符就可以针对我们想要的数据进行匹配. 正则表达式中的特殊字符 特殊字符 描述 \d 匹配任何十进制的数字,与[0-9]一致 \D 匹配任意非数字 \w 匹配任何字母数字下划

  • MySQL的视图和索引用法与区别详解

    MySQL的视图 简单来说MySQL的视图就是对SELECT 命令的定义的一个快捷键,我们查询时会用到非常复杂的SELECT语句,而这个语句我们以后还会经常用到,我们可以经这个语句生产视图.视图是一个虚拟的表,它不存储数据,所用的数据都在真实的表中. 这样做的好处有: 1.防止有未经允许的租户访问到敏感数据 2.将多个物理表抽象成一个逻辑表 3.结果容易理解 4.获得数据更容易,很多人对SQL语句不太了解,我们可以通过创建视图的形式方便用户使用. 5.显示数据更容易. 6.维护程序更方便.调试视

  • 轻松掌握正则表达式findall函数详解

    正则表达式入门-findall()函数 findall()函数 例子 import re a = '123abc' re=re.findall('\d\d\d',a) print(re) 导入用于完成正则表达式操作的re库 使用re库中的findall()函数提取文本 '\d'表示匹配1个数字,那么'\d\d\d'就表示匹配连续的3个数字 语法为 re.findall(匹配规则,原始文档) 注意:findall()函数返回的是一个包含提取结果的列表 import re a = '456qwe78

  • Python正则表达式re模块详解(建议收藏!)

    目录 前言 match 匹配字符串 单字符匹配 . 匹配任意一个字符 \d 匹配数字 \D 匹配非数字 \S 匹配非空白 \w 匹配单词.字符,如大小写字母,数字,_ 下划线 \W 匹配非单词字符 [ ] 匹配[ ]中列举的字符 表示数量 * 出现0次或无数次 + 至少出现一次 ? 1次或则0次 {m,} 至少出现m次 匹配边界 $ 匹配结尾字符 ^ 匹配开头字符 \b 匹配一个单词的边界 \B 匹配非单词边界 匹配分组 | 匹配左右任意一个表达式 (ab) 将括号中字符作为一个分组 searc

  • 关于日期正则表达式的思路详解

    1        概述 首先需要说明的一点,无论是Winform,还是Webform,都有很成熟的日历控件,无论从易用性还是可扩展性上看,日期的选择和校验还是用日历控件来实现比较好. 前几天在CSDN多个版块看到需要日期正则的帖子,所以整理了这篇文章,和大家一起讨论交流,如有遗漏或错误的地方,还请大家指正. 日期正则一般是对格式有要求,且数据不是直接由用户输入时使用.因应用场景的不同,写出的正则也不同,复杂程度也自然不同.正则的书写需要根据具体情况具体分析,一个基本原则就是:只写合适的,不写复杂

  • 表单验证正则表达式实例代码详解

    表单验证正则表达式具体内容如下所示: 首先给大家解释一些符号相关的意义 1.  /^$/ 这个是个通用的格式. ^ 匹配输入字符串的开始位置:$匹配输入字符串的结束位置 2. 里面输入需要实现的功能. * 匹配前面的子表达式零次或多次:        + 匹配前面的子表达式一次或多次:        ?匹配前面的子表达式零次或一次:        \d  匹配一个数字字符,等价于[0-9] 下面通过一段代码给大家分析表单验证正则表达式,具体代码如下: <!DOCTYPE html> <h

  • javascript类型系统_正则表达式RegExp类型详解

    前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将介绍正则表达式的RegExp对象,以及正则表达式涉及 到的属性和方法 对象 javascript中的正则表达式用RegExp对象表示,有两种写法:一种是字面量写法:另一种是构造函数写法 Perl写法 正则表达式字面量写法,又叫Perl写法,因为javascript的正则表达式特性

  • 正则表达式grep用法详解

    语法:grep 选项 'word' filename -c:打印符合要求的行数 -i:不区分大小写 -n:在输出符合要求的行的同时显示行号 -v:打印不符合要求的行 -A:后跟一个数字n,表示打印符合要求的行以及下面n行 -B:后跟一个数字n,表示打印符合要求的行以及上面n行 -C:后跟一个数字n,表示打印符合要求的行以及上下各n行 -r:会把目录下所有的文件全部遍历 --color:把匹配到的关键词用红色标示 例子: 过滤出带有某个关键词的行并输出行号 grep -n 'root' 1.txt

  • 正则表达式使用示例详解

    正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"). 正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串. 下面通过实例代码介绍下正则表达式使用 //一个数据类型,记录文本规则,一些事先定义好的一些特殊字符,对字符串的过滤逻辑 //表单验证账号长度,字母或数字组合,高级搜索 //特点,不仅js有:极简的方式操作字符串:灵活,功能强大 // 正则表达式大全 var patt1=new

随机推荐