文档章节

Article-No.02 MySQL必知必会

蓝汀华韶
 蓝汀华韶
发布于 2014/09/19 14:02
字数 1532
阅读 41
收藏 1

1、MySQL在DOS窗口进入

    1)设置环境变量:Path添加MySQL运行路径(C:\Program Files\MySQL\MySQL Server 5.7\bin)

    2)输入命令:mysql -u root -p  cms -h 127.0.0.1 -P 3306

2、show命令

show databases; //显示所有数据库
use cms; //进入某个数据库
show tables; //显示某个数据库下的所有表
 
describe t_admin;
show columns from t_admin; //显示某张表下的所有列字段信息
 
show status; //显示服务器状态信息
show create database database_name; //显示创建数据库的语句
show create table table_name form database db_name; //显示创建表的语句
show grants; //显示授予用户的安全权限
show errors; //显示服务器错误信息
show warnings; //显示服务器警告消息

3、检索列通配符使用规则:除非你确实需要使用表中的所有列,否则最好不用使用【*】通配符,这样检索不需要的列会降低检索和应用程序的性能

4、distinct:去除重复(SELECT DISTINCT 列名称, 列名称 FROM 表名称)

select distinct name from A // 对字段name去重
select distinct id, name from A // 对字段id、name合集去重

5、limit:限制结果:默认从第0行开始

select prod_name from products limit 5; // 从第0行开始,取出五行记录
select prod_name from products limit 5, 5 //从第5行开始,取出5行记录
select * from t_activity_order limit 4 offset 3; //从第3行开始,取出4行记录 == select * from t_activity_order limit 3, 4

6、空值NULL检查:在过滤中选择不具有特定值的行时,可能希望返回具有NULL值的行,但是不行,因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或者不匹配过滤的时候不返回它们

select * from t_admin where name != 'admin' //返回所有name不为admin的列,但如果name列中如果存在NULL的行,则不会返回

7、通配符:like

    %:代表任意字符(包含0-无穷个)

    _:代表一个字符

通配符使用原则:1)不要过度使用通配符,搜索效率很低。如果其他操作符能达到相同的目的,应该使用其他操作符

                          2)避免将通配符放在搜索条件的开始处,这样搜索起来最慢

8、正则表达式:字段 regexp '正则表达式'

  • regexp和like区别:like是整行匹配,regexp是对行内的内容进行匹配

  • regexp匹配不区分大小写,如果需要区分大小写,使用regxrep binary关键字

    正则匹配规则:

    1). :匹配任意一个字符

    2)| :直接or操作(1|2|3匹配1或者2或者3)

    3)[]:匹配几个字符中的一个([1-578]匹配1、2、3、4、5、7、8中的一个)发现使用[123]和(1|2|3)和[1|2|3]作用一样

    4)^:如果在开始位置,表示匹配以其后面字符为开始,如果在中间表示非

    5)-:[a-zA-Z0-9]

    6)匹配特殊字符:前面加\\

    7)*:匹配0个或者多个

    8)+:匹配1个或者多个(等价于{1,}

    9)?:匹配0个或者1个(等价于{0,1})

  10){n}:指定n个数目的匹配

  11){n, }:指定不少于指定数目的匹配

  12){n,m}:匹配数目的范围(m不超过255)

  13)$:文本的结尾

  14)[[:<:]]:词的开始

  15)[[:>:]]:词的结尾

mysql> select prod_id, prod_name from products where prod_name regexp '.000';
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| JP1000  | JetPack 1000 |
| JP2000  | JetPack 2000 |
+---------+--------------+
2 rows in set (0.08 sec)

mysql> select prod_id, prod_name from products where prod_name regexp 'detonator';
+---------+-----------+
| prod_id | prod_name |
+---------+-----------+
| DTNTR   | Detonator |
+---------+-----------+
1 row in set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name regexp binary 'detonator';
Empty set (0.04 sec)

mysql> select prod_id, prod_name from products where prod_name regexp '1000|2000|3000';
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| JP1000  | JetPack 1000 |
| JP2000  | JetPack 2000 |
+---------+--------------+
2 rows in set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name regexp '[123] ton';
+---------+-------------+
| prod_id | prod_name   |
+---------+-------------+
| ANV02   | 1 ton anvil |
| ANV03   | 2 ton anvil |
+---------+-------------+
2 rows in set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name regexp '[^123] ton';
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| ANV01   | .5 ton anvil |
+---------+--------------+
1 row in set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name regexp '(1|2|3) ton';
+---------+-------------+
| prod_id | prod_name   |
+---------+-------------+
| ANV02   | 1 ton anvil |
| ANV03   | 2 ton anvil |
+---------+-------------+
2 rows in set (0.00 sec)

mysql> select prod_id,note_date from productnotes where note_date regexp '2005-0(8|9)-[01]';
+---------+---------------------+
| prod_id | note_date           |
+---------+---------------------+
| TNT2    | 2005-08-17 00:00:00 |
| OL1     | 2005-08-18 00:00:00 |
| SAFE    | 2005-08-18 00:00:00 |
| FC      | 2005-08-19 00:00:00 |
| ANV03   | 2005-09-01 00:00:00 |
| FC      | 2005-09-01 00:00:00 |
| SLING   | 2005-09-02 00:00:00 |
| SAFE    | 2005-09-02 00:00:00 |
| ANV01   | 2005-09-05 00:00:00 |
| SAFE    | 2005-09-07 00:00:00 |
+---------+---------------------+
10 rows in set (0.00 sec)

mysql> select * from vendors where vend_name regexp '\\.';
+---------+--------------+-----------------+-----------+------------+----------+--------------+
| vend_id | vend_name    | vend_address    | vend_city | vend_state | vend_zip | vend_country |
+---------+--------------+-----------------+-----------+------------+----------+--------------+
|    1004 | Furball Inc. | 1000 5th Avenue | New York  | NY         | 11111    | USA          |
+---------+--------------+-----------------+-----------+------------+----------+--------------+
1 row in set (0.00 sec)

mysql> select * from products where prod_name regexp '\\([0-9] stick?\\)';
+---------+---------+---------------+------------+------------------------+
| prod_id | vend_id | prod_name     | prod_price | prod_desc              |
+---------+---------+---------------+------------+------------------------+
| TNT1    |    1003 | TNT (1 stick) |       2.50 | TNT, red, single stick |
+---------+---------+---------------+------------+------------------------+
1 row in set (0.00 sec)

mysql> select prod_id, prod_name from products where prod_name regexp '[0-9]{4}';
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| JP1000  | JetPack 1000 |
| JP2000  | JetPack 2000 |
+---------+--------------+
2 rows in set (0.00 sec)
或者
mysql> select prod_id, prod_name from products where prod_name regexp '[0-9][0-9][0-9][0-9]';

mysql> select prod_id, prod_name from products where prod_name regexp '^[0-9\\.]';
+---------+--------------+
| prod_id | prod_name    |
+---------+--------------+
| ANV01   | .5 ton anvil |
| ANV02   | 1 ton anvil  |
| ANV03   | 2 ton anvil  |
+---------+--------------+
3 rows in set (0.00 sec)

9、可以在不使用数据库表的情况下,检查正则表达式是否正确,返回结果如果为0,则表示不匹配,如果返回1则表示匹配

mysql> select '中文' regexp '[0-9]';
+-------------------------+
| '中文' regexp '[0-9]'   |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.00 sec)

mysql> select '123wqwww' regexp '[0-9]';
+---------------------------+
| '123wqwww' regexp '[0-9]' |
+---------------------------+
|                         1 |
+---------------------------+
1 row in set (0.00 sec)

10、拼接字段

    1)将值联接到一起形成单个值,在MySQL中使用concat()函数

mysql> select concat(vend_name, '(', vend_country, ')') from vendors;
+-------------------------------------------+
| concat(vend_name, '(', vend_country, ')') |
+-------------------------------------------+
| Anvils R Us(USA)                          |
| LT Supplies(USA)                          |
| ACME(USA)                                 |
| Furball Inc.(USA)                         |
| Jet Set(England)                          |
| Jouets Et Ours(France)                    |
+-------------------------------------------+
6 rows in set (0.00 sec)

    2)rtrim()、ltrim()、trim():去掉左右空格

mysql> select concat(rtrim(vend_name), '(', ltrim(vend_country), ')') from vendors;
+---------------------------------------------------------+
| concat(rtrim(vend_name), '(', ltrim(vend_country), ')') |
+---------------------------------------------------------+
| Anvils R Us(USA)                                        |
| LT Supplies(USA)                                        |
| ACME(USA)                                               |
| Furball Inc.(USA)                                       |
| Jet Set(England)                                        |
| Jouets Et Ours(France)                                  |
+---------------------------------------------------------+

    3)使用别名:as

mysql> select concat(vend_name, '(', vend_country, ')') as vend_title from vendors;
+------------------------+
| vend_title             |
+------------------------+
| Anvils R Us(USA)       |
| LT Supplies(USA)       |
| ACME(USA)              |
| Furball Inc.(USA)      |
| Jet Set(England)       |
| Jouets Et Ours(France) |
+------------------------+
6 rows in set (0.00 sec)

    4)执行算术运算:+-*/

mysql> select prod_id, quantity, item_price, quantity * item_price as expanded_price from orderitems where order_num = 20005;
+---------+----------+------------+----------------+
| prod_id | quantity | item_price | expanded_price |
+---------+----------+------------+----------------+
| ANV01   |       10 |       5.99 |          59.90 |
| ANV02   |        3 |       9.99 |          29.97 |
| TNT2    |        5 |      10.00 |          50.00 |
| FB      |        1 |      10.00 |          10.00 |
+---------+----------+------------+----------------+
4 rows in set (0.01 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2015-04-20 22:54:25 |
+---------------------+
1 row in set (0.00 sec)


© 著作权归作者所有

蓝汀华韶
粉丝 36
博文 77
码字总数 80082
作品 0
海淀
程序员
私信 提问
推荐《高性能MYSQL(第3版)》及 { MySQL性能管理及架构设计 }

最近项目所在服务器经常当机,我怀疑是不是数据库的问题,却不知从哪下手优化。 MySQL的性能优化一直是非常有必要学习的! 考虑 购买:《高性能MYSQL(第3版)》 同学福利:电子版终于找到:放...

phpervip
2017/09/30
0
0
前端必知必会HTTP请求系列(二)简单一点的HTTP协议

http协议用户客户端和服务器之间的通信 http协议和TCP/IP协议族内的其他众多协议相同,用于客户端和服务器之间的通信。 那么问题来个如果两台服务器之间一台服务器向另一台服务器进行接口请求...

前端技术小哥
01/03
0
0
5本数据库经典之作,没看过的都白学了!

  【IT168 评论】1、 《数据库系统实现》   内容简介:书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分――存储管理器、查询处理器和事务管理器的实...

it168网站
2017/11/13
0
0
PHPer 必知必会的 Linux 命令

PHPer 必知必会的 Linux 命令https://github.com/Nick233333/gitbook

-Nick-
2018/06/08
738
2
双11Java程序员书单推荐

Java 《Java核心技术卷I》 《Java核心技术卷II》 《Java编程思想》 《Java并发编程实战》 《Effective Java》 《Java8实战》 《Java8函数式编程思维》 《深入理解Java虚拟机》 《Java性能权威...

黄步欢
2017/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

android 事件分发

记录下对Android事件分发的理解: 如果a作为viewgroup,b作为view,b包含在a中。事件会先传递到viewgroup中,既a。然后a会进行事件分发给子view。事件分发的方法中,会有个判断,是否要分发给...

醉雨
17分钟前
0
0
今天的学习

今天学到了 get和post传参: Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示 Post传输的数据量大,理论上是无限大,而Get方法由于受到URL长度的限制,只能传递大约1024字节 ...

墨冥
22分钟前
0
0
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

public class Solution { private ArrayList<ArrayList<Integer>> listAll = new ArrayList<ArrayList<Integer>>(); ArrayList<ArrayList<Integer>> all= new ArrayList<ArrayList<Integer>>......

南桥北木
25分钟前
0
0
使用lombok编写优雅的Bean对象

使用java编写代码,十之八九都是在写java类,从而构建java对象。lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。 毫无疑问,使用lombok,编写的java代码很优雅,而...

polly
25分钟前
0
0
表现与数据分离、web语义化的理解

表现与数据分离 什么是表现与数据分离? “分离”说的是两方面: 第一方面是前端与后台分离,所有数据都是后台通过AJAX发送给前端,前端处理数据展现页面,不需要后台在页面中插入变量。 第二...

祖达
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部