MySQL

Posted 小企鹅推雪球!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。

LIKE子句

  1. 使用 SQL SELECT 命令来读取数据, 同时\\可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
  2. WHERE 子句中可以使用等号 (=) 来设定获取数据的条件,如 “author = ‘ryx’”。
  3. 有时候我们需要获取 author 字段含有 “ry” 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
  4. SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)。
  5. 如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。
  6. LIKE的语法:
SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
  1. 可以在WHERE子句中指定任何条件
  2. 可以在WHERE子句中使用LIKE子句。
  3. 可以使用LIKE子句代替等号(=)。
  4. LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
  5. 可以使用AND或者OR指定一个或多个条件。
  6. 可以在 DELETE 或 UPDATE 命令中使用
  7. WHERE…LIKE 子句来指定条件。

在命令行中使用LIKE子句

  1. 使用 WHERE…LIKE 子句来从mysql数据表 mytest 中读取数据。
  2. 将mytest表中获取author字段中以"r"为开头的所有记录:
mysql> select * from mytest;
+----+--------+--------+------------+
| id | title  | author | date       |
+----+--------+--------+------------+
|  1 | mytest | ryx    | 2021-09-19 |
+----+--------+--------+------------+
1 row in set (0.00 sec)

mysql> select * from mytest
    -> where author like 'r%';
+----+--------+--------+------------+
| id | title  | author | date       |
+----+--------+--------+------------+
|  1 | mytest | ryx    | 2021-09-19 |
+----+--------+--------+------------+
1 row in set (0.00 sec)

mysql>

mysql排序

  1. 使用SQL SELECT 语句来读取数据并对读取的数据进行排序,可以使用MySQL的 ORDER BY 子句来设定你想按哪个字段哪中方式来进行排序,再返回搜索结果。
  2. 使用 ORDER BY 子句将查询数据排序后再返回数据:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  1. 可以使用任何字段作为排序的条件,从而返回排序后的查询结果。
  2. 可以设定多个字段进行排序
  3. 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,ASC 是按升排列。
  4. 可以添加 WHERE…LIKE 子句来设置条件。
mysql> select stu_id from stu_02 where stu_id<184804010;
+-----------+
| stu_id    |
+-----------+
| 184804001 |
| 184804002 |
| 184804003 |
| 184804004 |
| 184804005 |
| 184804006 |
| 184804007 |
| 184804008 |
| 184804009 |
+-----------+
9 rows in set (0.00 sec)


mysql> select stu_id from stu_02 where stu_id<184804010 ORDER BY stu_id DESC;
+-----------+
| stu_id    |
+-----------+
| 184804009 |
| 184804008 |
| 184804007 |
| 184804006 |
| 184804005 |
| 184804004 |
| 184804003 |
| 184804002 |
| 184804001 |
+-----------+
9 rows in set (0.00 sec)

mysql分组

  1. GROUP BY 语句根据一个或多个列对结果集进行分组。
  2. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
  3. GROUP BY 语法
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
  1. 使用 GROUP BY 语句 将数据表按性别进行分组,并统计女生有多少
mysql> select sex,name from stu_01
    -> where sex = '女'
    -> group by name;
+------+--------+
| sex  | name   |
+------+--------+
| 女   | 李青 |
| 女   | 刘芳 |
| 女   | 刘佳 |
| 女   | 刘琦 |
| 女   | 刘涵 |
| 女   | 罗曦 |
| 女   | 秦然 |
| 女   | 邵珂 |
| 女   | 王雪 |
| 女   | 雨晴 |
| 女   | 张洁 |
| 女   | 张婷 |
+------+--------+

使用 WITH ROLLUP

  1. WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

  2. 使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:select coalesce(a,b,c);

  3. 参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

实例中如果名字为空我们使用总数代替:

mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽                   |            2 |
| 小明                   |            7 |
| 小王                   |            7 |
| 总数                   |           16 |
+--------------------------+--------------+
4 rows in set (0.01 sec)

以上是关于MySQL的主要内容,如果未能解决你的问题,请参考以下文章

从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段

mysql查看版本的四种方法