文章目录

  • 数据表的操作
    • 1、创建成绩表
    • 2、select表达式
    • 3、查询
    • 4、修改(AS)
    • 5、筛选(WHERE)
    • 6、排序(ORDER)
    • 7、分组(GROUP)
    • 8、过滤(HAVING)
    • 9、聚合函数
    • 10、限制取值(LIMIT)

本篇是延续上一篇文章的内容,依旧是关于数据表操作方面的内容,这方面内容相对较多,毕竟操作数据表才是学习数据库的核心。

数据表的操作

1、创建成绩表

--创建成绩表
CREATE TABLE ExamResult(id INT PRIMARY KEY  auto_increment,name VARCHAR (20),JavaScript DOUBLE ,jQuery DOUBLE ,C_language DOUBLE
);--添加数据到表中
INSERT INTO ExamResult VALUES  (1,"Luffy",98,98,98),(2,"Nami",35,98,67),(3,"Zoro",59,59,62),(4,"Chopper",88,89,82),(5,"ViewIn",88,98,67),(6,"ZaHuw",86,100,55);

2、select表达式

  • select查询:SELECT *|field1,filed2 … FROM tab_name
  • where筛选:WHERE 条件
  • 分组:GROUP BY field
  • having过滤:HAVING 筛选
  • 排序:ORDER BY field
  • 限制个数:LIMIT 限制条数
    注意:
    select只是一个显示效果,不会真正去除或者删除数据库中的数据

3、查询

其中from指定从哪张表筛选,*表示查找所有列,也可以指定一个列;
distinct用来剔除重复行。

--只查所有名字
select name from ExamResult;--看名字和JavaScript的成绩
select name, JavaScript from ExamResult;--去除重复的内容:去除所有重复的的name,只留一个
select distinct name from ExamResult;

4、修改(AS)

UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。

--修改数据来显示:将成绩分别加10,20,30
select name, JavaScript+10, jQuery+20, C_language+30 FROM ExamResult;--用as来修改显示:修改name和科目名称
select name as "NAME", JavaScript as JS, jQuery as JQ, C_language as CC from ExamResult;

5、筛选(WHERE)

WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

  • 多个条件逻辑运算符:and or not
    关系运算:> < >=(大等于) <=(小等于) !=(不等于)
    in运算:表示在某些数据中任选一个
    like运算:以某字符开头的字段
--筛选语句:
--将JS成绩大于85的name和JS成绩显示出来
SELECT name, JavaScript from examresult where JavaScript>85;--筛选JS成绩在70到100之间的name和JS成绩
SELECT name, JavaScript from ExamResult where JavaScript between 70 and 100;--筛选JS成绩不是88的name和JS成绩
select name, JavaScript from ExamResult where JavaScript!=88;--筛选JS成绩是88和98的name和JS成绩
select name, JavaScript from ExamResult where JavaScript in(88,98);--筛选name是z开头的name与JS成绩
select name, JavaScript from examresult where name like "z%";--只添加名字,不添加成绩
insert into ExamResult (name) values ( "new_one" );
--删除JS成绩为空的name
select name from ExamResult where JavaScript is null;

6、排序(ORDER)

--排序(默认升序):按照JS成绩高低排序
select name, JavaScript from ExamResult order by JavaScript;--过滤之后再排序(desc降序):JS成绩大于70的name按JS成绩从低到高排序
select name, JavaScript from ExamResult where JavaScript>70 order by JavaScript desc;--对总分进行排序:总成绩从高到低排序
SELECT name, JavaScript+jQuery+C_language as SUM from ExamResult order by SUM desc;--精确定位:对name为ZaHuw且JS成绩在50分以上的总成绩进行从高到低排序
SELECT name, JavaScript+jQuery+C_language as SUM from ExamResult where name="ZaHuw" and JavaScript>=50 order by SUM desc;

7、分组(GROUP)

--按照name来分组,实际上就是分成了6组,同一个名字为一组
select * from ExamResult group by name;--按照JS成绩来分,同一个成绩为一组
select * from ExamResult group by JavaScript;--分组之后进行操作(函数):通过name分组之后对每一组的JS成绩进行求和操作
select name, sum(JavaScript) from ExamResult group by name;

这是原数据表:

分组求和过后的表:

8、过滤(HAVING)

having和where的区别:
having对分组过后的数据进行过滤(而where是分组之前的),不过能用where的地方都可以用having替换

--用name分组过后,求每一组jquery的成绩总和,最后筛选jQuery成绩总和大于150的成绩对应的name
select name, sum(jQuery) from ExamResult group by name having sum(jQuery)>150;--统计JS成绩大于80的name的个数
select count(name) from ExamResult where JavaScript>80;--计算所有name的JS平均分:JavaScript总分/name个数
select sum(JavaScript)/count(name) from ExamResult;

9、聚合函数

--简单化的求平均分:AVG
select AVG(JavaScript) FROM ExamResult;--最大值:MAX
select MAX(JavaScript) from ExamResult;--最小值:MIN,排除null用ifnull(JavaScript,0),意思是如果JS成绩是null,则当做0
select MIN(ifnull(JavaScript,0)) FROM ExamResult;--求总成绩的最大值
select MAX(JavaScript+jQuery+C_language) from ExamResult;--求分组过后总成绩的最大值和组名
select name, MAX(JavaScript+jQuery+C_language) from ExamResult group by name;

10、限制取值(LIMIT)

--只取id排序前三的数据
select * from ExamResult limit 3;--从第二个开始,取5个(类似索引一样,从0开始算的)
select * from ExamResult limit 1,4;


本篇结束,谢谢大家!
所有select的基本操作都介绍完了,不过学习这种事情主要还是需要自己去练习,得出结果才印象深刻,效果才好。

MySQL数据库基础(数据表的SELECT操作)相关推荐

  1. 从零开始学 MySQL —数据库和数据表操作

    ​前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...

  2. MySQL数据库与数据表的创建

    MySQL数据库与数据表的创建 文章目录 MySQL数据库与数据表的创建 前言 一.创建数据库 二.使用数据库 三.创建数据表 前言 MySQL的介绍 什么叫数据库: 作用:存储数据,能够长期保存(断 ...

  3. Mysql数据库和数据表的创建和信息更改的常用指令

    文章目录 数据库和数据表的创建和信息更改 后续小实验做准备 一. 关于数据库和数据表的其它操作 1)数据库 ①创建数据库 ②显示目前所有的数据库 ③数据库重命名 2.1 先创建新库: 2.2 使用`R ...

  4. php如何在mysql数据库里创建表_php创建mysql数据库以及数据表

    php创建mysql数据库以及数据表 用php链接到mysqli,成功后利用,mysqli_query()创建数据库以及数据表. $con = mysqli_connect("localho ...

  5. 6.MySQL数据库与数据表操作

    数据库的操作:数据库创建 :数据库删除 数据表的操作:数据表的创建:数据表的修改 (表结构) :数据表的删除 数据库的操作 1.数据库的创建 # 链接mysql数据库后,进入mysql后可以操作数据 ...

  6. mysql显示表已存在_MySQL数据库与数据表的相关操作

    数据库相关操作: 显示数据库:show databases; 如果是0.00秒并不代表没有花费时间,而是时间非常短,小于0.01秒. 创建数据库: Query OK表示创建成功,1行受到影响,处理时间 ...

  7. MySQL数据库、数据表和字段字符集查询、修改和配置

    一.设置编码 LINUX  修改vi/etc/my.cnf WINDOWS my.ini 在[client]下添加    default-character-set=utf8 在[mysqld]下添加 ...

  8. mysql数据库复制数据表时的风险

    最近在使用redis的缓存技术时,在项目中需要在插入mysql数据表记录的同时,缓存数据到redis.在创建数据表时,为了方便,直接使用复制另外一个数据库中的数据表,结果就悲剧了 package co ...

  9. MySQL 数据库与数据表的管理

    MySQL 数据库管理 1.创建一个管理系统数据库 CZX,代码如下: create database if not exists CZX charset=utf8; 2. 选择当前数据库为 CZX, ...

最新文章

  1. 国际C语言乱码大赛(IOCCC)经典之作
  2. 实用技巧:Excel中的常见问题以及解决方法
  3. EBS通过SQL查找所有的定时请求
  4. 论文浅尝 | 对于知识图谱嵌入表示的几何形状理解
  5. Eclipse中自动提示的方法参数都是arg0,arg1的解决方法
  6. HTML的基本知识(三)
  7. 搞深度学习框架的那帮人,不是疯子,就是骗子
  8. i5200u处理器 HD5500集成显卡安装黑苹果教程
  9. 对比UltraCompare和Beyond Compare我这么选,你会怎么选?
  10. 如何在Foobar2000中使用iPod
  11. 电脑录屏方法qq录屏
  12. 使用POI操作Excel的基本读写
  13. JLA服务器性能测试,Shell脚本 | 性能测试之CPU占有率
  14. Activity高级学习
  15. 如何无损把flac格式转换成mp3?将flac转mp3的技巧
  16. VCC、 VDD、VSS、VEE 电压符号的解释
  17. 《国风·豳(bin)风·七月》
  18. 《红面书生》的算法博客
  19. 毕业论文排版及格式修改“骚操作”和常见误区(Word基础)
  20. IP/tzgm.php,龙之异界手游私服双端APP+本地更新+Gm授权+附视频教程

热门文章

  1. ps cc 生成html,使用photoshop生成网页的方法
  2. mysql 5.7 my default_Windows64位mysql5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)...
  3. mysql workbench 存储过程_MySQL Workbench创建存储过程教程示例
  4. 改进的有效边表算法_优硕微展 | 张和慧:基于邻域保持嵌入算法的间歇过程故障检测研究...
  5. nginx中文url php,使Nginx服务器支持中文URL的相关配置详解
  6. okhttp3图片压缩上传_支持 图片压缩、PDF压缩 合并 分割的网址、极力推荐、超奈斯...
  7. matlab自带同步电机数学模型,永磁同步电机的数学模型及方程
  8. linux nginx安装php5.5,linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装
  9. Toast.makeText(MainActivity.this, R.string.alert, Toast.LENGTH_SHORT).show(); 解释
  10. linux 多进程 同步,Linux内核同步,进程,线程同步