1、创建表的结构和数据

CREATE TABLE `t_student`(

`id` INT PRIMARY KEY,

`stuName` VARCHAR(10) NOT NULL,

`age` INT NOT NULL,

`sex` VARCHAR (4),

`gradeName` VARCHAR(10) NOT NULL

);

插入数据:

INSERT INTO `t_student`

(`id`,`stuName`,`age`,`sex`,`gradeName`)

VALUES

('1','张三','23','男','一年级')

('2','麻子','25','男','二年级'),

('3','李四','22','男','一年级'),

('4','王五','23','男','三年级'),

('5','小龙女','21','女','一年级'),

('6','周芷若','26','女','二年级'),

('7','汪峰','20','男','三年级'),

('8','黄欧阳锋','21','男','二年级'),

('9','杨过','22','男','二年级'),

('10','令狐冲','19','男','三年级'),

('11','东方不败','25','男','一年级'),

('12','无崖子','30',NULL,'一年级'),

('13','连城诀','28',NULL,'一年级');

2.单表查询

查询所有字段

SELECT 字段1,字段2,字段3.......FROM 表名;

SELECT id,stuName,age,sex,gradeName FROM t_student;

SELECT * FROM t_student;

两者区别在于前者可以通过查询字段的顺序来调整显示结果的顺序,后者是按照表结构的顺序显示。

where条件查询

SELECT 字段1,字段2,字段3......FROM 表名;

SELECT age,sex,gradeName FROM t_student WHERE 条件表达式;

查询编号为1的学生:

SELECT * FROM t_student WHERE id=1;

mysql> SELECT * FROM t_student WHERE id=1;

+----+---------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+---------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

+----+---------+-----+------+-----------+

1 row in set (0.00 sec)

查询年龄大于22岁的学生:

SELECT * FROM t_student WHERE age >22;

mysql> SELECT * FROM t_student WHERE age >22;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 麻子 | 25 | 男 | 二年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

| 12 | 无崖子 | 23 | NULL | 一年级 |

| 13 | 连城诀 | 23 | NULL | 一年级 |

+----+--------------+-----+------+-----------+

8 rows in set (0.00 sec)

查询性别为男的学生:

SELECT * FROM t_student WHERE sex='男';

mysql> SELECT * FROM t_student WHERE sex='男';

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 麻子 | 25 | 男 | 二年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

| 9 | 杨过 | 22 | 男 | 二年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

+----+--------------+-----+------+-----------+

9 rows in set (0.00 sec)

带IN关键字的查询

查询年龄为22或者23岁的学生:

SELECT * FROM t_student WHERE age IN (22,23);

mysql> SELECT * FROM t_student WHERE age IN (22,23);

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 9 | 杨过 | 22 | 男 | 二年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

| 12 | 无崖子 | 23 | NULL | 一年级 |

| 13 | 连城诀 | 23 | NULL | 一年级 |

+----+--------------+-----+------+-----------+

8 rows in set (0.00 sec)

查询学号不是1和9 的学生记录:

SELECT * FROM t_student WHERE ID NOT IN (1,9);

mysql> SELECT * FROM t_student WHERE ID NOT IN (1,9);

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 2 | 麻子 | 25 | 男 | 二年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

| 12 | 无崖子 | 23 | NULL | 一年级 |

| 13 | 连城诀 | 23 | NULL | 一年级 |

带BETWEEN的范围查询

SELECT 字段1,字段2,字段3....FROM 表名 WHERE 条件表达式 [NOT] BETWEEN 数值1,AND数值2;

SELECT * FROM t_student WHERE age NOT BETWEEN 22 AND 25;

mysql> SELECT * FROM t_student WHERE age NOT BETWEEN 22 AND 25;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

+----+--------------+-----+------+-----------+

4 rows in set (0.00 sec)

查询学号为1-9的学生记录:

SELECT * FROM t_student WHERE id BETWEEN 1 AND 9;

mysql> SELECT * FROM t_student WHERE id BETWEEN 1 AND 9;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 麻子 | 25 | 男 | 二年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

| 9 | 杨过 | 22 | 男 | 二年级 |

+----+--------------+-----+------+-----------+

9 rows in set (0.00 sec)

查询年龄小于22但是大于25 的学生信息:

SELECT * FROM t_student WHERE age NOT BETWEEN 22 AND 25;

mysql> SELECT * FROM t_student WHERE age NOT BETWEEN 22 AND 25;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

+----+--------------+-----+------+-----------+

4 rows in set (0.00 sec)

带LIKE的模糊查询:

SELECT 字段1,字段2,字段3 FROM 表名 WHERE 条件表达式 [NOT] LIKE '字符串';

查询姓名中包含张的学生信息:

SELECT * FROM t_student WHERE stuName LIKE '%张%';

mysql> SELECT * FROM t_student WHERE stuName LIKE '张%';

+----+-----------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+-----------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 张三丰 | 25 | 男 | 二年级 |

+----+-----------+-----+------+-----------+

2 rows in set (0.00 sec)

查询姓名中第一个字为张的学生信息:

SELECT * FROM t_student WHERE stuName LIKE '张%';

mysql> SELECT * FROM t_student WHERE stuName LIKE '张%';

+----+-----------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+-----------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 张三丰 | 25 | 男 | 二年级 |

+----+-----------+-----+------+-----------+

2 rows in set (0.00 sec)

查询姓为张,名为一个字的学生信息:

SELECT * FROM t_student WHERE stuNAME LIKE '张_';

mysql> SELECT * FROM t_student WHERE stuNAME LIKE '张_';

+----+---------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+---------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

+----+---------+-----+------+-----------+

1 row in set (0.00 sec)

空值查询:

SELECT 字段1,字段2,字段3 FROM 表名 WHERE 条件表达式 IS [NOT] NULL;

SELECT * FROM t_student WHERE sex IS NULL;

mysql> SELECT * FROM t_student WHERE sex IS NULL;

+----+-----------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+-----------+-----+------+-----------+

| 12 | 无崖子 | 23 | NULL | 一年级 |

| 13 | 连城诀 | 23 | NULL | 一年级 |

+----+-----------+-----+------+-----------+

2 rows in set (0.00 sec)

查询性别不为NULL 的学生信息:

SELECT * FROM t_student WHERE sex IS NOT NULL;

mysql> SELECT * FROM t_student WHERE sex IS NOT NULL;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 2 | 张三丰 | 25 | 男 | 二年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 6 | 周芷若 | 26 | 女 | 二年级 |

| 7 | 汪峰 | 20 | 男 | 三年级 |

| 8 | 黄欧阳锋 | 21 | 男 | 二年级 |

| 9 | 杨过 | 22 | 男 | 二年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

+----+--------------+-----+------+-----------+

11 rows in set (0.00 sec)

注意:在插入数据库的时候如果是NULL的话就直接插入NULL,这个值不等于空,也不等于'NULL';

带AND的多条件查询:

SELECT 字段1,字段2,字段3 FROM 表名 WHERE 表达式1 AND 表达式2 [...AND表达式N];

SELECT * FROM t_student WHERE gradeName='一年级' AND sex='男';

mysql> SELECT * FROM t_student WHERE gradeName='一年级' AND sex='男';

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

+----+--------------+-----+------+-----------+

3 rows in set (0.01 sec)

带OR的多条件查询:

SELECT 字段1,字段2,字段3 FROM 表名 WHERE 表达式1 OR 表达式2 [...OR表达式N];

SELECT * FROM t_student WHERE gradeName='一年级' OR age=23;

mysql> SELECT * FROM t_student WHERE gradeName='一年级' OR age=23;

+----+--------------+-----+------+-----------+

| id | stuName | age | sex | gradeName |

+----+--------------+-----+------+-----------+

| 1 | 张三 | 23 | 男 | 一年级 |

| 3 | 李四 | 22 | 男 | 一年级 |

| 4 | 王五 | 23 | 男 | 三年级 |

| 5 | 小龙女 | 21 | 女 | 一年级 |

| 10 | 令狐冲 | 23 | 男 | 三年级 |

| 11 | 东方不败 | 23 | 男 | 一年级 |

| 12 | 无崖子 | 23 | NULL | 一年级 |

| 13 | 连城诀 | 23 | NULL | 一年级 |

+----+--------------+-----+------+-----------+

8 rows in set (0.00 sec)

去重复查询:

SELECT DISTINCT gradeName FROM t_student;

mysql> SELECT DISTINCT gradeName FROM t_student;

+-----------+

| gradeName |

+-----------+

| 一年级 |

| 二年级 |

| 三年级 |

+-----------+

3 rows in set (0.01 sec)

对查询结果进行排序:

SELECT 字段1,字段2,字段3.... FROM 表名 GROUP BY 字段名;[HAVING 条件表达式][WITH ROLLUP];

1、GROUP BY单独使用时并无太大意义

2、与GROUP_CONCAT()函数一起使用;

3、与聚合函数一起使用;

4、与HAVING一起使用(对查询结果进行排序)

5、与WITH ROLLUP 一起使用(最后一行加入一个总和行)

查询每个年级所有学生的姓名:

SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;

mysql> SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;

+-----------+----------------------------------------------------------+

| gradeName | GROUP_CONCAT(stuName) |

+-----------+----------------------------------------------------------+

| 一年级 | 张三,无崖子,东方不败,连城诀,小龙女,李四 |

| 三年级 | 王五,令狐冲,汪峰 |

| 二年级 | 周芷若,黄欧阳锋,杨过,张三丰 |

+-----------+----------------------------------------------------------+

3 rows in set (0.00 sec)

查询每一个年级的学生数量:

SELECT COUNT(stuNAme) AS '学生总数',gradeName AS '年级' FROM t_student GROUP BY gradeName;

mysql> SELECT COUNT(stuNAme) AS '学生总数',gradeName AS '年级' FROM t_student GROUP BY gradeName;

+--------------+-----------+

| 学生总数 | 年级 |

+--------------+-----------+

| 6 | 一年级 |

| 3 | 三年级 |

| 4 | 二年级 |

+--------------+-----------+

3 rows in set (0.00 sec)

查询每个年级的学生,并且筛选出人数大于3的年级:

SELECT COUNT (stuName) AS '学生总数',gradeName AS '年级' FROM t_student GROUP BY gradeName HAVING COUNT(stuName) >3;

mysql> SELECT COUNT(stuName) AS '学生总数',gradeName AS '年级' FROM t_student GROUP BY gradeName HAVING COUNT(stuName) >3;

+--------------+-----------+

| 学生总数 | 年级 |

+--------------+-----------+

| 6 | 一年级 |

| 4 | 二年级 |

+--------------+-----------+

2 rows in set (0.00 sec)

查询每个年级的学生并在查询的结果添加一个总和行:

SELECT COUNT(studName ) AS '学生人数',gradeName AS '年级' FROM t_student GROUP BY gradeNAME AS ’总数‘ WITH ROLLUP;

mysql> SELECT COUNT(stuName) AS '学生人数',gradeName AS '年级' FROM t_student GROUP BY gradeName WITH ROLLUP;

+--------------+-----------+

| 学生人数 | 年级 |

+--------------+-----------+

| 6 | 一年级 |

| 3 | 三年级 |

| 4 | 二年级 |

| 13 | NULL |

+--------------+-----------+

4 rows in set (0.00 sec)

查询LIMIT分页:

SELECT 字段1,字段2,字段3 FROM表名LIMIT 条件开始,条件结束;

查询前5条学生的详细信息:

SELECT stuName, age,sex gradeName From t_student LIMIT 0,5;

mysql> SELECT stuName,age,sex,gradeName From t_student LIMIT 0,5;

+-----------+-----+------+-----------+

| stuName | age | sex | gradeName |

+-----------+-----+------+-----------+

| 张三 | 23 | 男 | 一年级 |

| 张三丰 | 25 | 男 | 二年级 |

| 李四 | 22 | 男 | 一年级 |

| 王五 | 23 | 男 | 三年级 |

| 小龙女 | 21 | 女 | 一年级 |

+-----------+-----+------+-----------+

5 rows in set (0.00 sec)

mysql单表操作_深入学习之mysql(三)单表操作相关推荐

  1. 数mysql据分析优化_从零开始学习数据分析-mysql架构与优化理论

    mysql的逻辑分层:连接层 服务层 引擎层 存储层 引擎层主要分为两类:InnoDB.MyIsam(使用show engines;查看) InnoDB是事务优先的,会进行行锁,适合高并发操作 MyI ...

  2. mysql数据库学号数据类型_数据库学习笔记——MySQL数据类型

    一.数据类型: 1.整型(xxxint) 2.浮点型(float和double) 3.定点数(decimal) 4.字符串(char,varchar,xxxtext) 5.二进制数据(xxxBlob) ...

  3. servlet+javabean+jdbc+mysql基于MVC模式的课件管理系统,有三个表的增删改查和课件搜索、课件上传、课件下载功能, 具体功能请看界面上的导航条

    源码支持在idea.eclipse.myeclipse运行,数据库采用MySQL数据库,项目采用mvc设计模式开发,页面采用jsp+html+css+js完成. servlet+javabean+jd ...

  4. mysql创建表属性引_【学习之Mysql数据库】mysql数据库创建表的属性详解

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 MySQL中create table语句的基本语法是: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name ...

  5. mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...

    基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...

  6. mysql导入dat文件_从零开始学习 MySQL 系列--索引、视图、导入和导出

    前言 上篇文章我们学习了数据库和数据表操作语句,今天我们学习下数据库索引,视图,导入和导出的知识. 作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会了解,尤其是关于索引的内 ...

  7. mysql text 查询速度_数据库学习之让索引加快查询速度(四)

    数据库学习之让索引加快查询速度 目录 索引简介 mysql的索引分类 创建索引 添加与删除索引 索引简介 索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构. ...

  8. left join on多表关联_资深DBA整理MySQL基础知识三:迅速理解MySQL的关联和子查询...

    接上篇: 上篇主要介绍select的基本的构成,和一些简单常用条件语句.这篇着重说几种常用的多表关联关系. 前面入门只说了一种表的简单查询.但在实际工作几乎不会出现单表操作的情况,大多数还是多表的连接 ...

  9. mysql gtidpurged_Mysql 5.7 Gtid内部学习(五) mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的更改时机...

    本节将集中讨论下面三种Gtid更新的时机,这部分相当重要,后面的故障案列会和这节有关.下面先来看一下他们的定义 mysql.gtid_executed表:Gtid持久化的介质,Mysql启动阶段会读取 ...

最新文章

  1. uniapp实战项目仿糗事百科_项目设计最好用的底层思考模型——黄金圈
  2. leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)
  3. JAVA自行车类代码_你好 请问你还有 java Web编写的自行车租赁管理系统源代码么...
  4. PMON分析(1)- ROM阶段
  5. Matlab中loglog函数使用
  6. 鸡与蛋问题(先有Class还是先有Object)
  7. SpringBoot(三)配置文件
  8. SQL 04 计算时间差(天数)
  9. Hadoop学习笔记——入门教程(虚拟机安装LinuxHadoop环境搭建配置)
  10. 阿里云GPU计算型实例规格族gn6i配置性能详解
  11. 一起打造自己的自动驾驶小车mycar - 4.手柄控制小车移动
  12. openwrt 处理间歇性无法上网(DNS故障)问题
  13. Python3 序列解包
  14. 机器人巨头争霸,谁主沉浮?
  15. 旗舰版win7系统电脑administrator密码忘记了破解
  16. 趣抖音短视频站在行业风口,如何脱颖而出?
  17. 【水文模型】SWAT水文模型原理及数据库简介
  18. 巧用DHCP服务器 防止IP地址冲突
  19. python分割语音端点检测_python的webrtc库如何实现语音端点检测 科大讯飞输入法PC体验版下载:语音+手写+...
  20. (1)定义一个Circle类,包含一个double型的radius属性代表圆的半径,一个 findArea()方法返回圆的面积。 (2)定义一个类PassObject,在类中定义一个方法printA

热门文章

  1. 个人网站名称怎么写可以通过备案?
  2. 如何在Linux中检查硬盘上的坏道或坏块
  3. js实现简易数码时钟
  4. 网络骨架:Backbone(神经网络基本组成——卷积层)
  5. 《深入理解mybatis原理三》 Mybatis数据源与连接池
  6. 用Python实现图片风格迁移,让你的图片更加的高逼格!
  7. 小知识分享:adb uiautomator 命令 dump ui 树信息
  8. 在 Raspberry Pi (树莓派) 上安装 CMake
  9. 基于.NET实现的家电维修保养信息系统[含文档+PPT+源码等]精品
  10. echarts关系图graph点击折叠