MySQL学习之表查询操作

MySQL学习之表查询操作

准备数据

创建数据表和导入数据

CREATE TABLE user (
  id INT COMMENT '编号',
  name VARCHAR (10) COMMENT '姓名',
  gender CHAR(1) COMMENT '性别',
  age TINYINT UNSIGNED COMMENT '年龄',
  phone VARCHAR(11) COMMENT '手机号',
  idcard CHAR(18) COMMENT '身份证号',
  address VARCHAR (50) COMMENT '地址',
  brithday DATE COMMENT '生日'
  ) COMMENT '用户表';
  
  
  -----
  INSERT INTO user
VALUES
  (1, '张三', '男', '18', '18186325565', '312321212315464242', '北京', '2000-01-01'),
  (2, '雷军', '男', '54', '18136325565', '312321212315464242', '武汉', '1980-01-01'),
  (3, '卢伟冰', '男', '45', '18136332565', '312321212315464242', '北京', '1990-01-01'),
  (4, '马化腾', '男', '50', '18136332562', '312321212315464242', '深圳', '1974-01-01'),
  (5, '张学友', '男', '60', '18136332565', '312321212315464242', '香港', '1955-01-01'),
  (6, '郭富城', '男', '65', '18136332564', '312321212315464242', '香港', '1968-01-01'),
  (7, '周润发', '男', '66', '18136332567', '312321212315464242', '香港', '1957-01-01'),
  (8, '李健', '男', '45', '18136332566', '312321212315464242', '哈尔冰', '1963-01-01'),
  (9, '余华', '男', '65', '18136332568', '312321212315464242', '杭州', '1969-01-01'),
  (10, '马尔克斯', '男', '85', '18136332165', '312321212315464242', '马来西亚', '1885-01-01'),
  (11, '迟子建', '女', '60', '18136332265', '312321212315464242', '哈尔冰', '1974-01-01'),
  (12, '莫言', '男', '65', '18136332365', '312321212315464242', '高密', '1964-01-01'),
  (13, '毛姆', '男', '85', '18136332465', '312321212315464242', '伦敦', '1884-01-01'),
  (14, '刘强东', '男', '50', '18136338565', '312321212315464242', '宿迁', '1976-01-01'),
  (15, '高圆圆', '女', '18', '18136334665', '312321212315464242', '北京', '1991-01-01'),
  (16, '刘亦菲', '女', '18', '18136333565', '312321212315464242', '上海', '1996-01-01'),
  (17, '许三多', '男', '18', '18136330565', '312321212315464242', '上榕树', '1992-01-01');

基础查询

不带任何条件的情况

语法

SELECT 字段1, 字段2, 字段3 ... FROM 表名;  //查询要展示的字段
SELECT * FROM 表名; //查询全部字段
mysql> select id,name from user;
+------+----------+
| id   | name     |
+------+----------+
|    1 | 张三     |
|    2 | 雷军     |
|    3 | 卢伟冰   |
|    4 | 马化腾   |
|    5 | 张学友   |
|    6 | 郭富城   |
|    7 | 周润发   |
|    8 | 李健     |
|    9 | 余华     |
|   10 | 马尔克斯 |
|   11 | 迟子建   |
|   12 | 莫言     |
|   13 | 毛姆     |
|   14 | 刘强东   |
|   15 | 高圆圆   |
|   16 | 刘亦菲   |
|   17 | 许三多   |
+------+----------+
17 rows in set (0.00 sec)

设置别名

mysql> select id as '编号',name as '名字' from user;
+------+----------+
| 编号 | 名字     |
+------+----------+
|    1 | 张三     |
|    2 | 雷军     |
|    3 | 卢伟冰   |
|    4 | 马化腾   |
|    5 | 张学友   |
|    6 | 郭富城   |
|    7 | 周润发   |
|    8 | 李健     |
|    9 | 余华     |
|   10 | 马尔克斯 |
|   11 | 迟子建   |
|   12 | 莫言     |
|   13 | 毛姆     |
|   14 | 刘强东   |
|   15 | 高圆圆   |
|   16 | 刘亦菲   |
|   17 | 许三多   |
+------+----------+
17 rows in set (0.00 sec)

去重

mysql> select distinct address from user;
+----------+
| address  |
+----------+
| 成都     |
| 武汉     |
| 北京     |
| 深圳     |
| 香港     |
| 哈尔冰   |
| 杭州     |
| 马来西亚 |
| 高密     |
| 伦敦     |
| 宿迁     |
| 上海     |
| 上榕树   |
+----------+
13 rows in set (0.00 sec)

条件查询

条件分为两种:一种是比较运算符,一种是逻辑运算符

语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

查询id 大于10的数据

mysql> select * from user where id > 10;
+------+--------+--------+------+-------------+--------------------+---------+------------+
| id   | name   | gender | age  | phone       | idcard             | address | brithday   |
+------+--------+--------+------+-------------+--------------------+---------+------------+
|   11 | 迟子建 ||   60 | 18136332265 | 312321212315464242 | 哈尔冰  | 1974-01-01 |
|   12 | 莫言   ||   65 | 18136332365 | 312321212315464242 | 高密    | 1964-01-01 |
|   13 | 毛姆   ||   85 | 18136332465 | 312321212315464242 | 伦敦    | 1884-01-01 |
|   14 | 刘强东 ||   50 | 18136338565 | 312321212315464242 | 宿迁    | 1976-01-01 |
|   15 | 高圆圆 ||   18 | 18136334665 | 312321212315464242 | 北京    | 1991-01-01 |
|   16 | 刘亦菲 ||   18 | 18136333565 | 312321212315464242 | 上海    | 1996-01-01 |
|   17 | 许三多 ||   18 | 18136330565 | 312321212315464242 | 上榕树  | 1992-01-01 |
+------+--------+--------+------+-------------+--------------------+---------+------------+

查询年龄等于18岁或者年龄为65或者年龄大于80岁的数据

mysql> select * from user where age = 18 or age = 65 or age > 80;
+------+----------+--------+------+-------------+--------------------+----------+------------+
| id   | name     | gender | age  | phone       | idcard             | address  | brithday   |
+------+----------+--------+------+-------------+--------------------+----------+------------+
|    1 | 张三     ||   18 | 18136332565 | 312321212315464242 | 成都     | 2000-01-01 |
|    6 | 郭富城   ||   65 | 18136332564 | 312321212315464242 | 香港     | 1968-01-01 |
|    9 | 余华     ||   65 | 18136332568 | 312321212315464242 | 杭州     | 1969-01-01 |
|   10 | 马尔克斯 ||   85 | 18136332165 | 312321212315464242 | 马来西亚 | 1885-01-01 |
|   12 | 莫言     ||   65 | 18136332365 | 312321212315464242 | 高密     | 1964-01-01 |
|   13 | 毛姆     ||   85 | 18136332465 | 312321212315464242 | 伦敦     | 1884-01-01 |
|   15 | 高圆圆   ||   18 | 18136334665 | 312321212315464242 | 北京     | 1991-01-01 |
|   16 | 刘亦菲   ||   18 | 18136333565 | 312321212315464242 | 上海     | 1996-01-01 |
|   17 | 许三多   ||   18 | 18136330565 | 312321212315464242 | 上榕树   | 1992-01-01 |
+------+----------+--------+------+-------------+--------------------+----------+------------+

模糊查询,查询名称为3个字的数据

mysql> select * from user where name like '___';
+------+--------+--------+------+-------------+--------------------+---------+------------+
| id   | name   | gender | age  | phone       | idcard             | address | brithday   |
+------+--------+--------+------+-------------+--------------------+---------+------------+
|    3 | 卢伟冰 ||   45 | 18136332565 | 312321212315464242 | 北京    | 1990-01-01 |
|    4 | 马化腾 ||   50 | 18136332562 | 312321212315464242 | 深圳    | 1974-01-01 |
|    5 | 张学友 ||   60 | 18136332565 | 312321212315464242 | 香港    | 1955-01-01 |
|    6 | 郭富城 ||   65 | 18136332564 | 312321212315464242 | 香港    | 1968-01-01 |
|    7 | 周润发 ||   66 | 18136332567 | 312321212315464242 | 香港    | 1957-01-01 |
|   11 | 迟子建 ||   60 | 18136332265 | 312321212315464242 | 哈尔冰  | 1974-01-01 |
|   14 | 刘强东 ||   50 | 18136338565 | 312321212315464242 | 宿迁    | 1976-01-01 |
|   15 | 高圆圆 ||   18 | 18136334665 | 312321212315464242 | 北京    | 1991-01-01 |
|   16 | 刘亦菲 ||   18 | 18136333565 | 312321212315464242 | 上海    | 1996-01-01 |
|   17 | 许三多 ||   18 | 18136330565 | 312321212315464242 | 上榕树  | 1992-01-01 |
+------+--------+--------+------+-------------+--------------------+---------+------------+
10 rows in set (0.00 sec)

LIKE 关键字用于在 WHERE 子句中搜索列中的指定模式。LIKE 子句可以与通配符一起使用来搜索一个范围的值。其中两个常用的通配符是:

  • %:表示任意数量的字符(包括零个字符)。
  • _:表示单个字符。

当你使用 LIKE '___' 作为一个查询条件时,这里的三个下划线(_)各自代表一个字符。因此,LIKE '___' 用于匹配那些正好包含三个字符的字符串。

聚合函数

官网聚合函数的使用文档地址如下:

https://dev.mysql.com/doc/refman/8.4/en/aggregate-functions.html

以下是mysql中的所有聚合函数方法

NameDescription
AVG()Return the average value of the argument
BIT_AND()Return bitwise AND
BIT_OR()Return bitwise OR
BIT_XOR()Return bitwise XOR
COUNT()Return a count of the number of rows returned
COUNT(DISTINCT)Return the count of a number of different values
GROUP_CONCAT()Return a concatenated string
JSON_ARRAYAGG()Return result set as a single JSON array
JSON_OBJECTAGG()Return result set as a single JSON object
MAX()Return the maximum value
MIN()Return the minimum value
STD()Return the population standard deviation
STDDEV()Return the population standard deviation
STDDEV_POP()Return the population standard deviation
STDDEV_SAMP()Return the sample standard deviation
SUM()Return the sum
VAR_POP()Return the population standard variance
VAR_SAMP()Return the sample variance
VARIANCE()Return the population standard variance

语法如下:

SELECT 聚合函数(字段列表) FROM 表名 ;

null值不参与聚合函数的运算

一些简单示例如下:

#统计香港地区的员工年龄平均值
SELECT AVG(age) as '平均年龄' FROM `user` WHERE address = '香港';
#统计一共有哪几个岁数
select COUNT(DISTINCT age) FROM `user`;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让美好继续发生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值