数据表的设计和查询

1001-高同学

发表文章数:265

热门标签

首页 » MySQL » 正文

数据库的设计

数据表的设计和查询
数据表的设计和查询

数据表的相关操作

插入数据

使用INSERT INTO

INSERT INTO 表名(各个字段名)VALUES (对应的值)

添加删除字段

添加字段的语句

ALTER TABLE 表名 ADD 字段名称 字段类型

删除字段的语句

ALTER TABLE 表名 DROP 字段名称

数据表的查找

查询表达式

普通的全部查询

mysql> SELECT * FROM test1;
或者:SELECT * FROM test.test1;   test为数据库
+----+--------+-----+
| id | name   | age |
+----+--------+-----+
|  1 | Jony   |  18 |
|  2 | Kitty  |  16 |
|  3 | Rabbit |  19 |
|  4 | Tim    |  14 |
|  5 | Ella   |  10 |
+----+--------+-----+

使用别名的一些查询,用AS关键字,可以把字段、表另起一个名字

mysql> SELECT a.id AS '编号',a.name AS '姓名',a.age AS '年龄' FROM test1 AS a;
+--------+--------+--------+
| 编号   | 姓名   | 年龄   |
+--------+--------+--------+
|      1 | Jony   |     18 |
|      2 | Kitty  |     16 |
|      3 | Rabbit |     19 |
|      4 | Tim    |     14 |
|      5 | Ella   |     10 |
+--------+--------+--------+
5 rows in set (0.00 sec)

带有where的查询,注意要使用<=>作为等于号。

SELECT * FROM test1 WHERE age<=>18;
+----+------+-----+--------+
| id | name | age | school |
+----+------+-----+--------+
|  1 | Jony |  18 | NULL   |
+----+------+-----+--------+

使用IS来判断该字段是否存在空值:

mysql> SELECT * FROM test1 WHERE school IS NOT NULL;
Empty set (0.00 sec)

mysql> SELECT * FROM test1 WHERE school IS  NULL;
+----+--------+-----+--------+
| id | name   | age | school |
+----+--------+-----+--------+
|  1 | Jony   |  18 | NULL   |
|  2 | Kitty  |  16 | NULL   |
|  3 | Rabbit |  19 | NULL   |
|  4 | Tim    |  14 | NULL   |
|  5 | Ella   |  10 | NULL   |
|  6 | fdasf  |  19 | NULL   |
+----+--------+-----+--------+
6 rows in set (0.05 sec)

BETWEEN AND 指定范围[X,Y](如果为字符,则不区分大小写)

SELECT * FROM test1 WHERE age BETWEEN 10 AND 20;

IN或者NOT IN用于进行固定的集合查询:

mysql> SELECT * FROM test1 WHERE id IN(1,3,5,7,9);

模糊查询 (如果为字符,则不区分大小写)
%表示0个1个或者多个任意字符
_表示一个任意字符

mysql> SELECT * FROM test1 WHERE name LIKE '%a%';
+----+--------+-----+--------+
| id | name   | age | school |
+----+--------+-----+--------+
|  3 | Rabbit |  19 | NULL   |
|  5 | Ella   |  10 | NULL   |
|  6 | fdasf  |  19 | NULL   |
+----+--------+-----+--------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM test1 WHERE name LIKE '____';
+----+------+-----+--------+
| id | name | age | school |
+----+------+-----+--------+
|  1 | Jony |  18 | NULL   |
|  5 | Ella |  10 | NULL   |
+----+------+-----+--------+
2 rows in set (0.00 sec)

分组查询
使用GROUP BY语句,如果直接使用:

SELECT * FROMGROUP BY 字段

则只会出现字段第一次出现的记录,而不知道相关记录有几条,如下代码所示:

mysql> SELECT * FROM test1 GROUP BY sex|5;
+----+-------+-----+--------+--------+
| id | name  | age | school | sex    |
+----+-------+-----+--------+--------+
|  1 | Jony  |  18 | NULL   ||
|  2 | Kitty |  16 | NULL   ||
|  5 | Ella  |  10 | NULL   | 保密   |
+----+-------+-----+--------+--------+
3 rows in set (0.00 sec)

按照多个字段进行分组:先按照第一个字段分组,再按照第二条记录进行分组,但是也是按照第一次出现的内容进行分组

mysql> SELECT * FROM test1 GROUP BY sex,age;
+----+--------+-----+--------+--------+
| id | name   | age | school | sex    |
+----+--------+-----+--------+--------+
|  1 | Jony   |  18 | NULL   ||
|  3 | Rabbit |  19 | NULL   ||
|  4 | Tim    |  14 | NULL   ||
|  2 | Kitty  |  16 | NULL   ||
|  6 | fdasf  |  19 | NULL   ||
|  5 | Ella   |  10 | NULL   | 保密   |
+----+--------+-----+--------+--------+
6 rows in set (0.00 sec)

关于GROUP BY
数据表的设计和查询
GROUP_CONCAT()函数

mysql> SELECT GROUP_CONCAT(name) FROM test1 GROUP BY sex;
+--------------------+
| GROUP_CONCAT(name) |
+--------------------+
| Jony,Rabbit        |
| Kitty,Tim,fdasf    |
| Ella               |
+--------------------+

可以加一点内容:SELECT id,sex,GROUP_CONCAT(name) FROM test1 GROUP BY sex;
结果:

+----+--------+--------------------+
| id | sex    | GROUP_CONCAT(name) |
+----+--------+--------------------+
|  1 || Jony,Rabbit        |
|  2 || Kitty,Tim,fdasf    |
|  5 | 保密   | Ella               |
+----+--------+--------------------+

使用聚合函数,聚合函数放置在SELECT语句后面,FROM语句的前面。其中,SUM(字段)函数用于求分组中该字段的和;AVG(字段)函数用于求分组中该字段的平均值,MAX(字段)函数用于求分组中该字段的最大值;MIN(字段)函数用于求分组中该字段的最小值,COUNT()函数用于求数量,一般使用COUNT(*),但是COUNT()不统计值为NULL的数据。
注意:聚合函数不能在WHERE子句中出现。

拜师教育学员文章:作者:1001-高同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《数据表的设计和查询》 发布于2020-04-09

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录