当前位置: 首页 > news >正文

找客网怎么样广州中小企业seo推广运营

找客网怎么样,广州中小企业seo推广运营,建筑工程网名大全霸气,开发小程序的目的文章目录 数据的查询(补充)条件查询关于SQL语句的执行顺序分页查询(LIMIT) 数据的修改数据修改基础知识 数据的查询(补充) 这一节接着写, 包括数据的查询(补充), 数据的更新, 数据的删除 条件查询 其实就是根据给定的一些条件, 然后过滤掉不符合实际情况的记录, 把符合条件的…

文章目录

    • 数据的查询(补充)
      • 条件查询
      • 关于SQL语句的执行顺序
      • 分页查询(LIMIT)
    • 数据的修改
      • 数据修改基础知识

数据的查询(补充)

这一节接着写, 包括数据的查询(补充), 数据的更新, 数据的删除

条件查询

其实就是根据给定的一些条件, 然后过滤掉不符合实际情况的记录, 把符合条件的记录返还给用户, 执行这些操作是通过一些运算符, 比如说比较运算符, 逻辑运算符, 和Java中的思路的是一样的

运算符说明
> , >= , < , <=大于, 大于等于, 小于, 小于等于
=等于, NULL不安全, 如NULL= NULL的结果就是NULL(参加运算)
<=>等于, NULL安全, NULL <=> NULL 的结果是1(表示真)
!=, <>不等于, NULL不安全
betweed m and n范围匹配, [m, n], 如果m <= value <= n, 返回1(表示真)

小练习(关于NULL) :

-- 进行简单的select操作不需要使用数据库
select NULL > 1;
select NULL = NULL;
select NULL <=> NULL;
select not (NULL = NULL);
select not (NULL <=> NULL);
select NULL <> NULL;-- 执行结果 : NULL, NULL, 1, NULL, 0, NULL
-- 总结就是 : 
关于NULL的数学运算结果都是NULL
关于NULL的含有安全等于的运算是有一定意义的
运算符说明
in (option,…)如果是option中的任意一个返回1(表示真)
is null是NULL
is not null不是NULL
like模糊查询, %表示任意个(包括0个)任意字符; _表示任意一个字符

小练习 :

-- 进行简单的select操作不需要使用数据库
select 1 in (1, 2, 3);
select 5 in (1, 2, 3);
select NULL is null;
select NULL is not null;
-- 查询结果是 1, 0, 1, 0-- 关于模糊查询的操作就需要使用数据库了
use sel_test;
select * from exam where name like '%孙%';
-- 上面的查找的是名字中有 '孙' 这个字的信息
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    6 | 孙权      |    70.0 | 73.0 |    78.5 |
+------+-----------+---------+------+---------+
select * from exam where name like '孙_';
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    6 | 孙权   |    70.0 | 73.0 |    78.5 |
+------+--------+---------+------+---------+-- 之前我们查看当前数据库的字符集的时候用的下面这个指令就是模糊查询(下面一致)
show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8mb4                                                 |
| character_set_connection | utf8mb4                                                 |
| character_set_database   | utf8mb4                                                 |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8mb4                                                 |
| character_set_server     | utf8mb4                                                 |
| character_set_system     | utf8mb3                                                 |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
show variables like '%charac%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8mb4                                                 |
| character_set_connection | utf8mb4                                                 |
| character_set_database   | utf8mb4                                                 |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8mb4                                                 |
| character_set_server     | utf8mb4                                                 |
| character_set_system     | utf8mb3                                                 |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
运算符说明
and(&&)多个条件必须都为true(1), 结果才是true(1)
or(l l)任意一个条件为true(1), 结果就是true(1)
not条件为true(1), 结果为false(0), 类似于Java中!
特殊说明一下, 逻辑运算符的优先级不建议记忆, 建议使用的时候还是通过小括号的方式, 手动的去指定优先级, 使用where条件的语法
select * from 表名 where 列名/表达式 运算符 条件;

首先展示一下我们的数据中的数据(等会测试验证)

select * from exam;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    1 | 唐三藏       |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空       |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能       |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德       |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    6 | 孙权         |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
|    9 | 孙行者       |    NULL | 84.0 |    83.5 |
|   10 | 宋江         |    76.0 | NULL |    77.0 |
|   11 | 李逵         |    67.0 | 90.0 |    NULL |
+------+--------------+---------+------+---------+

练习
需求1 : 找到英语成绩不及格的同学(english < 60)

mysql> select * from exam where english < 60;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    5 | 刘玄德    |    55.5 | 85.0 |    45.0 |
|    7 | 宋公明    |    75.0 | 65.0 |    30.0 |
+------+-----------+---------+------+---------+
因为 NULL < 60 不论什么时候都是不成立的, 所以直接过滤, 留下三条记录

需求2 : 找打数学成绩好于英语成绩的同学(math > english)

mysql> select * from exam where math > english;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    1 | 唐三藏       |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空       |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能       |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德       |    82.0 | 84.0 |    67.0 |
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
|    9 | 孙行者       |    NULL | 84.0 |    83.5 |
+------+--------------+---------+------+---------+

需求三 : 查询总分在200以下的同学(结果降序排列)

select id, name, chinese + math + english 
as '总分' from exam where chinese + math + english < 200 
order by '总分' desc;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    5 | 刘玄德    |  185.5 |
|    7 | 宋公明    |  170.0 |
+------+-----------+--------+

思考上面的代码, 如果把where中的chinese + math + english替换为’总分’可以么 ?
在这里插入图片描述

关于SQL语句的执行顺序

主要就是下面几个点的执行顺序

  1. select 2. from 3. where 4. order by

关于这个问题, 我有一套自己的逻辑, 我们可以把一个数据库类比为一个数据池, 我们想要从中筛选指定的数据, 首先要搬出来数据池, 也就是from, 那么就需要一个滤网去过滤, 也就是where, 筛选出来指定的数据之后就select把数据选到结果集, 最后再次进行排序(order by)
也就是首先是from, 然后是where, 其次是select, 最后是order by

where中的别名问题
由上面的结论可以得到, 如果在where中通过别名进行筛选的话, 就不会筛选出来指定的结果, 但是有一个例外, 就是当别名通过引号进行标注的话, 就可以正常的执行
在这里插入图片描述
但是也会生成一个警告
在这里插入图片描述

分页查询(LIMIT)

限制结果集中的数据的条数, 在上一节我们说过如果不对数据的条数进行限制, 是一个很危险的操作, 所以就出现了分页查询的操作, 分页查询在实际的项目中应用是十分的频繁的, 只要是多条数据的集合, 一般都是用分页进行查询, 分页查询的优点也是很明显的, 可以有效的控制一次查询出来的结果集记录的条数, 减小数据库的压力, 同时对用户也是十分友好的

基础语法

-- 第一种分页语法(从索引为0的位置开始查询n条记录, 索引的起始位置是0)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit n;
-- 第二种分页语法(从索引为s的位置开始查询n条记录)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit s,n;
-- 第三种分页语法(跟第二种一样但是语法更加严密)
select[字段]from[表名]where[查询条件]order by[字段][asc|desc]limit n offset s;

假设上面的数据库我们要用分页查询法, 每4个是一页, 按照id排序

-- 分页的偏移量是 (页数 - 1) * 每页数据量
mysql> select * from exam order by id limit 4 offset 0;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    1 | 唐三藏    |    67.0 | 98.0 |    56.0 |
|    2 | 孙悟空    |    87.5 | 78.0 |    77.0 |
|    3 | 猪悟能    |    88.0 | 98.0 |    90.0 |
|    4 | 曹孟德    |    82.0 | 84.0 |    67.0 |
+------+-----------+---------+------+---------+
4 rows in set (0.00 sec)mysql> select * from exam order by id limit 4 offset 4;
+------+--------------+---------+------+---------+
| id   | name         | chinese | math | english |
+------+--------------+---------+------+---------+
|    5 | 刘玄德       |    55.5 | 85.0 |    45.0 |
|    6 | 孙权         |    70.0 | 73.0 |    78.5 |
|    7 | 宋公明       |    75.0 | 65.0 |    30.0 |
|    8 | 齐天大圣     |    87.5 | 78.0 |    77.0 |
+------+--------------+---------+------+---------+
4 rows in set (0.00 sec)mysql> select * from exam order by id limit 4 offset 8;
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    9 | 孙行者    |    NULL | 84.0 |    83.5 |
|   10 | 宋江      |    76.0 | NULL |    77.0 |
|   11 | 李逵      |    67.0 | 90.0 |    NULL |
+------+-----------+---------+------+---------+
3 rows in set (0.00 sec)

现在分页查询需求是按照总分进行排序(每一页四条数据)

mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 0;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    1 | 唐三藏    |  221.0 |
|    2 | 孙悟空    |  242.5 |
|    3 | 猪悟能    |  276.0 |
|    4 | 曹孟德    |  233.0 |
+------+-----------+--------+
4 rows in set (0.00 sec)mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 4;
+------+--------------+--------+
| id   | name         | 总分   |
+------+--------------+--------+
|    5 | 刘玄德       |  185.5 |
|    6 | 孙权         |  221.5 |
|    7 | 宋公明       |  170.0 |
|    8 | 齐天大圣     |  242.5 |
+------+--------------+--------+
4 rows in set (0.00 sec)mysql> select id, name, chinese + math + english as '总分' from exam order by '总分' desc limit 4 offset 8;
+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    9 | 孙行者    |   NULL |
|   10 | 宋江      |   NULL |
|   11 | 李逵      |   NULL |
+------+-----------+--------+
3 rows in set (0.00 sec)

思考, 我们的null进行运算完之后数据都是null, 但现在我们的需求是如果是null默认为0, 那就要用到我们ifnull函数了, 关于函数我们会详细讲解, 这里简单说一下

select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 0;select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 4;select id, name, ifnull(chinese, 0) + ifnull(math, 0) + ifnull(english, 0) as '总分' from exam order by '总分' desc limit 4 offset 8;

最后一个SQL语句执行结果就会按照需求进行调整

+------+-----------+--------+
| id   | name      | 总分   |
+------+-----------+--------+
|    9 | 孙行者    |  167.5 |
|   10 | 宋江      |  153.0 |
|   11 | 李逵      |  157.0 |
+------+-----------+--------+

数据的修改

数据修改基础知识

也就是CRUD中的U(update), 更新某一张表中的数据, 这个才是真正意义上的’更改器’
基础语法

update [表名] set [字段1] = [期望值] ... where 筛选条件 order by 排序规则 limit..

需求1 : 将孙悟空同学的数学成绩变为80分

在这里插入图片描述
Rows matched 指的是匹配到了多少行, Changed 是指真正修改的数据行数

mysql> select * from exam where name = '孙悟空';
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    87.5 | 80.0 |    77.0 |
+------+-----------+---------+------+---------+

需求2 : 将孙悟空同学的语文成绩加20分
在这里插入图片描述
注意这里不可以使用math += 10, mysql不支持这种操作

mysql> select * from exam where name = '孙悟空';
+------+-----------+---------+------+---------+
| id   | name      | chinese | math | english |
+------+-----------+---------+------+---------+
|    2 | 孙悟空    |    97.5 | 80.0 |    77.0 |
+------+-----------+---------+------+---------+

需求3 : 把总分排名倒数前3的人的数学成绩加上10分

 update exam set math = math + 10 where math is not null order by math + chinese + english asc limit 3;
http://www.dt0577.cn/news/18110.html

相关文章:

  • 萧山工程建设有限公司网站百度高级检索入口
  • 优惠券的网站怎么做的搜索引擎是网站吗
  • 做实验教学视频的网站百度写作助手
  • 申请注册公司需要哪些条件网站内容优化方法
  • 国外网站域名太原百度推广开户
  • 柳州高端网站建设个人在百度上发广告怎么发
  • 鞍山市住房和城乡建设委员会网站广州网站推广运营
  • 广州b2b网站建设网站开发用什么软件
  • 建设我们的网站 教案百度竞价推广方法
  • 海外网购哪个平台最好seo人员是什么意思
  • 响应式网站一般怎么设计外链发布网站
  • 洛阳网站建设外包seo优化6个实用技巧
  • 建站公司咨询windows优化大师怎么使用
  • 为企业做贡献的文章南宁seo做法哪家好
  • 网站建设时时彩有什么软件可以推广
  • 罗庄网站建设优化游戏的软件
  • 市住房城乡建设委官方网站九江天津网站排名提升多少钱
  • 电商网站建设计划书aso搜索优化
  • 代理上海建站公司注册互联网推广销售是做什么的
  • wordpress 简洁主题网站推广关键词排名优化
  • 微盟微商城怎么样昆明百度关键词优化
  • 聊城手机站网站公司电话百度软件中心
  • 做网站除甲醛需不需要营业执照个人友情链接推广
  • 泰州市做网站网站怎么快速被百度收录
  • 网站建设优化推广杭州网站收录排名
  • 淄博北京网站建设公司腾讯与中国联通
  • wordpress 进度条整站seo排名费用价格
  • 做特产网站百度一下首页百度一下
  • 贵州省建设厅网站首页电商运营主要工作内容
  • 企业网站seo优化怎么做如何做网站