MySQL语法笔录

MySQL语法笔录

  • 前言
  • information_schema库使用
  • ORDER BY
  • GROUP BY
  • Disinct及Binary查询
  • AND&OR查询
  • 查询数据库状态及查询结果导出
  • group_concat & concat & concat_wc 函数
  • limit排序用法

前言

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
Tips:会持续更新

  1. dba是数据库管理员database administrator
  2. dbd是数据库开发人员database developer

information_schema库使用

/*当前数据库实例有哪些数据库:*/
select schema_name from information_schema.schemata 加limit 0,1就是查询当前数据库; 
/*获取表名,test 是库名字,输入库名字可查看库的所有表*/
select schema_name from information_schema.tables where table_schema='test'

ORDER BY

Tips:升序及降序知识点 默认是升序排列 降序语法:DESC

SELECT * FROM database.table ORDER BY listname DESC; /**降序排列显示**/
SELECT * FROM database.table ORDER BY listname ; /**升序排列显示**/

/**ORDER BY 多列的时候,eg:**/
select * from table order by A,B        /**这个时候都是默认按升序排列**/
select * from table order by A desc,B   /**这个时候 A 降序,B 升序排列**/
select * from table order by A ,B desc  /**这个时候 A 升序,B 降序排列**/

GROUP BY

原理
个人比较直白,只要group by 哪个字段名group by 就会将相同的合并,就这么简单,前提是必须有相同的字段段中的数据否在和普通查询没啥区别;

以下是普通查询与group by查询的区别

MariaDB [games]> select id, author from user_info2 group by id ;
+----+---------+
| id | author  |
+----+---------+
|  1 | jensen4 |
|  2 | jensen5 |
|  3 | jensen6 |
+----+---------+
3 rows in set (0.01 sec)

MariaDB [games]> select * from user_info2 ;
+----+---------+------------+--------+
| id | author  | date       | phone  |
+----+---------+------------+--------+
|  1 | jensen4 | 2019-09-06 | 123456 |
|  2 | jensen5 | 2019-09-06 |   NULL |
|  3 | jensen6 | 2019-09-06 |   NULL |
|  1 | test    | 2019-09-15 |    123 |
+----+---------+------------+--------+
4 rows in set (0.00 sec)

MariaDB [games]> 

Disinct及Binary查询

Tips:去重查询用于一张表中有重复的值过滤掉相同的值;

select disinct uname from table ; /**过滤掉uname相同的值**/

Tips: mysql默认没有强迫大小写分明,可以使用(binary)进行大小写分明查询;

selec * from table binary where uname='LS';
/**如果没有uname里面没有大写LS的存在则不会返回相应的数据结果**/

AND&OR查询

/* AND & OR */
Tips:and(两个条件必须同时成立则返回结果)or(两个条件其中一个成立则返回成立的条件结果);
select * from table where uname='zs' and (age=30 or age=25);
/**查询名字为zs并且年龄在30~25之间的数据**/
MariaDB [mysql]> select now(),user(),database();
/**查询当前用户,所在哪个库,及时间状态**/

查询数据库状态及查询结果导出

MariaDB [mysql]> select now(),user(),database();
/**查询当前用户,所在哪个库,及时间状态**/

MariaDB [mysql]> show global variables like '%version%';
+-------------------------+----------------------+
| Variable_name           | Value                |
+-------------------------+----------------------+
| innodb_version          | 5.5.59-MariaDB-38.11 |
| protocol_version        | 10                   |
| slave_type_conversions  |                      |
| version                 | 5.5.60-MariaDB       |
| version_comment         | MariaDB Server       |
| version_compile_machine | x86_64               |
| version_compile_os      | Linux                |
+-------------------------+----------------------+
7 rows in set (0.00 sec)
/**模糊查询以及查看数据库的全局变量**/

/* into outfile */
select * from mysql.user into outfile '/tmp/outfile.txt';
/**以文本类型将查询结果导出外部,这里可能会出现没有权限可以在/etc/my.cnf添加一个参数**/
/**--secure-file-priv**/

group_concat & concat & concat_wc 函数

  1. concat()
    1、功能:将多个字符串连接成一个字符串。
    2、语法:concat(str1, str2,…)
    返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
    3、举例:
    select concat (id, name, score) as info from tt2;
  2. group_concat()
    1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
    2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
    说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
    3、举例:
    使用group_concat()和group by显示相同名字的人的id号:
  3. concat_wc()
    1、功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)
    2、语法:concat_ws(separator, str1, str2, …)
    说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

limit排序用法

格式:

select * from tableName limit i,n
# tableName:表名
# i:为查询结果的索引值(默认从0开始),当i=0时可省略i
# n:为查询结果返回的数量
# i与n之间使用英文逗号","隔开

limit n 等同于 limit 0,n

//For example
# 查询10条数据,索引从0到9,第1条记录到第10条记录
select * from t_user limit 10;
select * from t_user limit 0,10;

# 查询8条数据,索引从5到12,第6条记录到第13条记录
select * from t_user limit 5,8;

你可能感兴趣的:(运维)