MySQL
Posted 小企鹅推雪球!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL相关的知识,希望对你有一定的参考价值。
LIKE子句
- 使用 SQL SELECT 命令来读取数据, 同时\\可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
- WHERE 子句中可以使用等号 (=) 来设定获取数据的条件,如 “author = ‘ryx’”。
- 有时候我们需要获取 author 字段含有 “ry” 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
- SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)。
- 如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。
- LIKE的语法:
SELECT field1, field2,...fieldN
FROM table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
- 可以在WHERE子句中指定任何条件
- 可以在WHERE子句中使用LIKE子句。
- 可以使用LIKE子句代替等号(=)。
- LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
- 可以使用AND或者OR指定一个或多个条件。
- 可以在 DELETE 或 UPDATE 命令中使用
- WHERE…LIKE 子句来指定条件。
在命令行中使用LIKE子句
- 使用 WHERE…LIKE 子句来从mysql数据表 mytest 中读取数据。
- 将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排序
- 使用SQL SELECT 语句来读取数据并对读取的数据进行排序,可以使用MySQL的 ORDER BY 子句来设定你想按哪个字段哪中方式来进行排序,再返回搜索结果。
- 使用 ORDER BY 子句将查询数据排序后再返回数据:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
- 可以使用任何字段作为排序的条件,从而返回排序后的查询结果。
- 可以设定多个字段进行排序
- 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,ASC 是按升排列。
- 可以添加 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分组
- GROUP BY 语句根据一个或多个列对结果集进行分组。
- 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
- GROUP BY 语法
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
- 使用 GROUP BY 语句 将数据表按性别进行分组,并统计女生有多少
mysql> select sex,name from stu_01
-> where sex = '女'
-> group by name;
+------+--------+
| sex | name |
+------+--------+
| 女 | 李青 |
| 女 | 刘芳 |
| 女 | 刘佳 |
| 女 | 刘琦 |
| 女 | 刘涵 |
| 女 | 罗曦 |
| 女 | 秦然 |
| 女 | 邵珂 |
| 女 | 王雪 |
| 女 | 雨晴 |
| 女 | 张洁 |
| 女 | 张婷 |
+------+--------+
使用 WITH ROLLUP
-
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
-
使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
select coalesce(a,b,c);
-
参数说明:如果
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出现错误: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“(代码片段