首页 > 数据库 >【技术积累】Mysql中的SQL语言【技术篇】【二】

【技术积累】Mysql中的SQL语言【技术篇】【二】

时间:2023-07-12 23:34:22浏览次数:40  
标签:语句 SQL 技术 查询 student Mysql WHERE SELECT

数据操作

插入数据

Mysql使用INSERT语句来插入数据。INSERT语句的一般格式如下:

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

其中,表名是要插入数据的表名;列1, 列2, 列3 是要插入数据的列名;值1, 值2, 值3是要插入的具体值。

下面以一个学生表student为例进行说明。

假设student表结构如下:
表名:student
列名:id (int, 主键)
   name (varchar(50))
   age (int)
   gender (varchar(10))

插入一条数据的SQL语句为:

INSERT INTO student (id, name, age, gender) VALUES (1, 'John', 20, 'Male');

这条SQL语句向student表插入了一条学生数据,该学生的id为1,姓名为John,年龄为20,性别为Male。

解释该SQL语句的具体含义如下:
1. INSERT INTO student:指定要插入数据的表为student。
2. (id, name, age, gender):指定要插入数据的列为id, name, age, gender。
3. VALUES (1, 'John', 20, 'Male'):指定要插入的具体值为1, 'John', 20, 'Male'。注意,值的顺序要与列的顺序对应。

该SQL语句执行后,student表中将插入一条新的学生数据,即id为1,姓名为John,年龄为20,性别为Male的数据。

查询数据

Mysql使用SELECT语句来查询数据。SELECT语句的一般格式如下:

SELECT 列1, 列2, 列3, ... FROM 表名 WHERE 条件;

其中,列1, 列2, 列3是要查询的列名;表名是要查询的表名;WHERE条件是可选的,用于筛选符合条件的数据。

以下以学生表student为例进行说明。

假设student表结构如下:
表名:student
列名:id (int, 主键)
   name (varchar(50))
   age (int)
   gender (varchar(10))

查询所有学生的SQL语句为:

SELECT * FROM student;

这条SQL语句查询student表中的所有数据。

解释该SQL语句的含义如下:
1. SELECT *:表示查询所有列的数据。可以替换为具体的列名,例如SELECT id, name, age, gender。
2. FROM student:指定要查询数据的表为student。

该SQL语句执行后,将返回student表中所有学生的数据。

更新数据

Mysql使用UPDATE语句来更新数据。UPDATE语句的一般格式如下:

UPDATE 表名 SET 列1=值1, 列2=值2, 列3=值3, ... WHERE 条件;

其中,表名是要更新数据的表名;列1, 列2, 列3是要更新的列名;值1, 值2, 值3是要更新的具体值;WHERE条件是用于确定要更新的行。

以下以学生表student为例进行说明。

假设student表结构如下:
表名:student
列名:id (int, 主键)
   name (varchar(50))
   age (int)
   gender (varchar(10))

更新学生年龄的SQL语句为:

UPDATE student SET age=22 WHERE id=1;

这条SQL语句将会更新id为1的学生的年龄为22。

解释该SQL语句的含义如下:
1. UPDATE student:指定要更新数据的表为student。
2. SET age=22:指定要更新的列为age,值为22。
3. WHERE id=1:指定更新的条件为id等于1的行。

该SQL语句执行后,将会更新student表中id为1的学生的年龄为22。

需要注意的是,UPDATE语句可以同时更新多个列,只需要在SET后面使用逗号分隔。例如:

UPDATE student SET age=22, name='Tom' WHERE id=1;

这条SQL语句会将id为1的学生的年龄更新为22,姓名更新为Tom。

通过上述例子,你可以根据实际需求来更新不同的列和具体值。

删除数据

Mysql使用DELETE语句来删除数据。DELETE语句的一般格式如下:

DELETE FROM 表名 WHERE 条件;

其中,表名是要删除数据的表名;WHERE条件是用于确定要删除的行。

以下以学生表student为例进行说明。

假设student表结构如下:
表名:student
列名:id (int, 主键)
   name (varchar(50))
   age (int)
   gender (varchar(10))

删除id为1的学生数据的SQL语句为:

DELETE FROM student WHERE id=1;

这条SQL语句将会删除student表中id为1的学生数据。

解释该SQL语句的含义如下:
1. DELETE FROM student:指定要删除数据的表为student。
2. WHERE id=1:指定删除的条件为id等于1的行。

该SQL语句执行后,将会删除student表中id为1的学生数据。

需要注意的是,DELETE语句可以根据不同的条件删除不同的数据。例如:

DELETE FROM student WHERE age > 20;

这条SQL语句会删除student表中年龄大于20的学生数据。

通过上述例子,你可以根据实际需求来使用不同的条件进行数据删除操作。

数据过滤与排序

WHERE 子句

WHERE是MySQL中的查询条件,用于指定筛选条件,从表格中选择符合条件的记录。它通常用于SELECT、DELETE、UPDATE等语句中。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要筛选出性别为男性且年龄大于30岁的员工信息。

SQL语句如下:

SELECT * FROM employees WHERE gender = '男' AND age > 30;

解释: 此SQL语句中的WHERE条件为"gender = '男' AND age > 30",它包含了两个筛选条件。第一个条件"gender = '男'"表示筛选出性别为男的员工,第二个条件"age > 30"表示筛选出年龄大于30岁的员工。通过AND运算符将两个条件连接在一起,保证了筛选结果符合两个条件的员工信息。最终结果包含了满足所有筛选条件的员工的所有信息。

需要注意的是,WHERE条件中的字段和条件之间需要进行正确的语法和逻辑运算符的组合,以便得到正确的结果。

LIKE语句

LIKE是MySQL中的模糊查询条件,用于指定模式匹配的筛选条件。它通常用于SELECT语句中,用于查询符合特定模式的记录。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、职位等)。我们想要筛选出所有姓氏以"王"开头的员工信息。

SQL语句如下:

SELECT * FROM employees WHERE name LIKE '王%';

解释: 此SQL语句中的WHERE条件为"name LIKE '王%'",其中使用了LIKE关键字和%通配符。关键字LIKE表示进行模糊匹配,然后通过%通配符指定匹配的模式。在本例中,%表示任意字符出现任意次数。所以"王%"表示匹配以"王"开头的任意字符。最终结果将包含以"王"开头的所有姓氏的员工信息。

需要注意的是,LIKE条件中的%通配符可以放在模式的任何位置,以实现不同的匹配需求。在使用LIKE时,还可以结合其他通配符(如_表示匹配单个字符)进行更灵活的模糊查询。

IN语句

IN是MySQL中的条件运算符,用于指定一个条件范围,如果字段的值在该范围内,则符合筛选条件。它通常用于SELECT、DELETE、UPDATE等语句中。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要筛选出职位为经理或副经理的员工信息。

SQL语句如下:

SELECT * FROM employees
WHERE position IN ('经理', '副经理');

解释:
此SQL语句中的WHERE条件为"position IN ('经理', '副经理')",其中使用了IN关键字。IN关键字后面跟着一个括号,括号里用逗号分隔多个条件值。在本例中,我们指定了职位为经理或副经理的条件值。如果字段"position"的值在指定的条件值范围内,就会符合筛选条件。最终结果将包含职位为经理或副经理的员工信息。

需要注意的是,IN条件可以用来筛选出字段值在一个固定列表内的记录,提供了一种简洁的方式来进行多个值的筛选。对于更复杂的条件范围,也可以使用其他条件运算符(如BETWEEN、NOT IN等)来实现。

BETWEEN语句

BETWEEN是MySQL中的条件运算符,用于指定一个范围条件,如果字段的值在该范围内,则符合筛选条件。它通常用于SELECT、DELETE、UPDATE等语句中。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要筛选出年龄在30岁到40岁之间的员工信息。

SQL语句如下:

SELECT * FROM employees
WHERE age BETWEEN 30 AND 40;

解释:
此SQL语句中的WHERE条件为"age BETWEEN 30 AND 40",其中使用了BETWEEN关键字。BETWEEN关键字后面跟着一个范围值,范围值由两个数值和关键字AND连接。在本例中,我们指定了年龄在30岁到40岁之间的范围条件。如果字段"age"的值在指定的范围内,就会符合筛选条件。最终结果将包含年龄在30岁到40岁之间的员工信息。

需要注意的是,BETWEEN条件是包含边界值的,即范围内的值都是符合条件的。如果想要排除边界值,可以使用其他条件运算符(如>, <)来实现。此外,BETWEEN条件也可以用于日期和时间类型的字段进行范围筛选。

ORDER BY语句

ORDER BY是MySQL中的查询语句,用于对查询结果进行排序。它通常用于SELECT语句中,用于按照指定的列或表达式对结果进行升序或降序排序。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要按照年龄对员工信息进行升序排序。

SQL语句如下:

SELECT * FROM employees
ORDER BY age ASC;

解释:
此SQL语句中的ORDER BY子句用于对结果按照指定的列进行排序。在本例中,我们使用了age列进行排序。关键字ASC表示升序排序,默认是升序排序,也可以省略不写。如果想要进行降序排序,可以使用DESC关键字。最终结果将按照年龄从小到大进行排序。

需要注意的是,ORDER BY子句可以指定多个排序条件,以逗号分隔。如果有多个排序条件,则第一个条件相同的记录再按照第二个条件进行排序,依此类推。可以根据实际需求选择合适的排序方式,以得到期望的查询结果。

LIMIT语句

LIMIT是MySQL中的查询语句,用于限制查询结果的返回数量。它通常用于SELECT语句中,用于指定查询结果的起始位置和返回的记录数。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要查询前5条员工信息。

SQL语句如下:

SELECT * FROM employees LIMIT 5;

解释: 此SQL语句中的LIMIT关键字用于限制查询结果的返回数量。在本例中,我们使用LIMIT 5来限制返回结果的记录数为5。这将返回表中的前5条员工信息。

LIMIT也可以接受两个参数,分别指定返回结果的起始位置和记录数。例如,如果我们想要查询从第6条记录开始的3条员工信息,可以使用LIMIT 5, 3。

需要注意的是,LIMIT子句可以用于将查询结果分页显示,结合OFFSET关键字可以指定从结果集的某个位置开始返回记录。对于大型数据集,使用LIMIT来控制返回结果的数量是提高查询效率和减少资源消耗的好方法。

OFFSET语句

OFFSET是MySQL中的查询语句,用于指定查询结果的偏移量,配合LIMIT关键字来实现分页查询。它通常用于SELECT语句中。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要查询从第10条记录开始的5条员工信息,实现分页查询。

SQL语句如下:

SELECT * FROM employees LIMIT 5 OFFSET 10;

解释: 此SQL语句中的LIMIT子句用于限制查询结果的返回数量,OFFSET子句用于指定查询结果的偏移量。在本例中,LIMIT 5表示返回5条记录,OFFSET 10表示从第10条记录开始返回。这将返回从第10条记录开始的5条员工信息。

OFFSET子句通常与LIMIT关键字配合使用,用于实现分页查询。通过指定不同的偏移量和限制数量,可以在查询结果中获取不同页的记录。

需要注意的是,OFFSET的偏移量是从0开始计数的,即第一条记录的偏移量为0。如果不需要偏移量,只需要指定返回结果的数量,可以省略OFFSET子句。对于大型数据集,使用LIMIT和OFFSET来分页查询可以减少数据的传输量,提高查询效率。

GROUP BY语句

GROUP BY 是 MySQL 中的查询语句,用于按照一个或多个列对结果进行分组。它通常与聚合函数(如SUM、COUNT、AVG等)一起使用,以便对每个分组的数据进行统计或计算。

以下是一个基本的案例,假设有一个名为 "sales" 的表格,其中包含了销售记录(日期、产品、销售数量、销售额等)。我们想要按照产品对销售记录进行分组,并计算每个产品的总销售数量和总销售额。

SQL 语句如下:

SELECT product, SUM(quantity) AS total_quantity, SUM(amount) AS total_amount FROM sales GROUP BY product;

解释: 此 SQL 语句中的 GROUP BY 子句用于根据指定的列(在本例中是 "product" 列)对结果进行分组。在每个分组内,使用聚合函数(SUM)对相应的列进行计算。在本例中,我们计算每个产品的总销售数量(total_quantity)和总销售额(total_amount)。

需要注意的是,SELECT 语句中的列可以是被 GROUP BY 子句引用的列或者使用聚合函数的列。同时,聚合函数也可以用于非分组的列。在使用 GROUP BY 时,除非被 GROUP BY 引用或用于聚合的列,否则非分组的列将无法使用。

GROUP BY 还可以使用多个列来进行分组,以更细粒度地对数据进行分组。在这种情况下,结果将按照指定的多个列进行分组,并计算每个组的统计值。

总而言之,GROUP BY 子句用于将查询结果按照指定的列进行分组,并对每个分组进行聚合计算。它常用于在查询中进行数据的分类汇总和统计分析。

HAVING语句

HAVING是MySQL中的查询语句,用于在分组查询中对分组后的结果进行筛选。它通常与GROUP BY和聚合函数一起使用,用于筛选满足指定条件的分组。

以下是一个基本的案例,假设有一个名为 "sales" 的表格,其中包含了销售记录(日期、产品、销售数量、销售额等)。我们想要按照产品对销售记录进行分组,并筛选出销售数量大于100的产品分组。

SQL语句如下:

SELECT product, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product
HAVING total_quantity > 100;

解释:
此SQL语句中,首先使用GROUP BY子句将销售记录按产品进行分组。然后使用SUM函数计算每个产品的销售数量(total_quantity)。最后,使用HAVING子句筛选出满足条件(销售数量大于100)的产品分组。

需要注意的是,HAVING子句是在分组之后对结果进行筛选,类似于WHERE子句用于对原始数据进行筛选。但是,HAVING子句只能用于对使用聚合函数进行分组的列进行筛选,而不能用于非分组的列。

类似于WHERE子句,HAVING子句支持使用逻辑运算符(如AND、OR)和比较运算符(如>、<、=)来结合多个条件进行筛选。可以根据实际需求,在HAVING子句中指定不同的条件来获取期望的查询结果。

总而言之,HAVING子句在GROUP BY分组查询中用于对分组后的结果进行筛选,从而筛选出满足指定条件的分组。它常用于在分组查询中对聚合结果进行进一步的筛选和限制。

DISTINCT语句

DISTINCT是MySQL中的查询语句,用于返回查询结果中不重复的行。它通常用于SELECT语句中,用于消除重复的数据。

以下是一个基本的案例,假设有一个名为"employees"的表格,其中包含员工的信息(员工号、姓名、性别、年龄、职位等)。我们想要查询出所有不重复的职位。

SQL语句如下:

SELECT DISTINCT position FROM employees;

解释:
此SQL语句中的DISTINCT关键字用于指定查询结果中的唯一行数据,即去除重复的行。在本例中,我们查询出了"employees"表中所有不重复的职位(position)。

需要注意的是,DISTINCT关键字指定的唯一性是基于所有选择的列的组合。如果指定多个列,那么只有在这些列的值完全相同的情况下,才会被视为重复行。

可以在SELECT语句中选择多个列使用DISTINCT关键字,以获取多个列组合的唯一数据。

DISTINCT关键字常用于避免结果集中的重复数据,特别是在具有关联表或复杂查询条件的查询中。对于大型数据集,使用DISTINCT可以使结果的数量更加准确和易于分析。

标签:语句,SQL,技术,查询,student,Mysql,WHERE,SELECT
From: https://www.cnblogs.com/yyyyfly1/p/17549167.html

相关文章

  • 【热门技术】一文详细解读云计算
    ......
  • 就是个复述吧,去年九月份我确实找到工作了,今年5月底离职了,公司技术架构和项目太杂太老
    手写简易spring`packagecom.spring.utils;importcom.spring.BeanDefinition;importcom.spring.inteface.Autowried;importcom.spring.inteface.Component;importcom.spring.inteface.ComponentScan;importcom.spring.inteface.Scope;importcom.spring.service.UserS......
  • 脚本化修改Oracle用的密码以及执行sql
    一、脚本化检查Oracle是否能正常登录 #shell定义检查函数functioncheck(){VALUE=`sqlplus-S用户名/$1@数据库网络服务名<<EOFsetheadingofffeedbackoffselectcount(1)fromdual;EOF`if[.$VALUE-eq1];thenecho"yes"elseecho"no"fi}......
  • PostgreSQL在线修改数据类型
    修改大表中列的数据类型几乎总是一件痛苦的事情。由于altertable语句获得的排他锁,它可能会锁定整个表的读写。本文中,我们将探讨如何以最小的影响、最少的锁来执行这样的操作。它适用于任何数据类型;让我们以int到bigint的变化为例。 示范用例假设我们有一个有许多列的表。其......
  • mysql数据库2
    约束条件 在数据类型的基础上再添加限制条件"""约束条件的意思是,在数据类型的基础上再添加限制条件"""'约束条件通常在创建表的时候添加'。1.unsigned去除符号(一般用过来去除负号(-)也可用来取出@*/等特殊符号)createtablet1(idintunsigned);2.zerofill位数......
  • MySQL
    目录针对库的sql语句针对表的sql语句针对记录的SQL语句配置文件统一字符编码存储引擎MySQL的基本数据类型严格模式整型中括号内的数字作用创建表的完整语法约束条件补充一些其他SQL语句查询关键字查询关键字之where筛选查询关键字之groupby分组补充说明group_concat、concat、con......
  • MySQL铺垫
    目录数据的演变史数据存储发展史数据库的本质数据库的分类sql与NoSqlMySQL简介修改管理员密码及忘记密码怎么办概念补充基本SQL语句数据的演变史#以ATM为例#1.把数据存放在单个文件里面 1.文件名不规范2.数据格式也不规范 kevin|123kevin$123kevin*123#......
  • 说透MySQL:从数据结构到性能优化,附实际案例和面试题
    typora-copy-images-to:imgmysql索引第一章MySQL性能(掌握)1分析-数据库查询效率低下我们进入公司进行项目开发往往关注的是业务需求和功能的实现,但是随着项目运行的时间增加,数据量也就增加了,这时会影响到我们数据库的查询性能。所以我们要提高操作数据库的性能,有如下两种方式:1.......
  • Java面试高频技术线程池,源码笔记答案全纪录
    有一定的java基础(线程),尤其是正要或正准备找工作的童鞋如果想在众多面试者中脱颖而出,你就需要多准备一些知识点,多刷一些面试题。而对于企业而言,有这么多的选择那我们就提高面试门槛,可能我需要的仅仅是CRUD的初中级,但我也希望你能了解JVM、多线程、Spring源码、Sql优化、分布......
  • 助教工作总结(2022下路由交换技术上)
    一、助教工作的具体职责和任务1.线上线下给同学解答问题2.给老师布置的作业做一份尽可能标准且好理解的答案文档给同学们参考由于我大一提前学完了这门课程,所以作为刚学完且同班的同学,我更能体会到入门路由交换技术的疑难点。由于这门课的实验作业比较多,为了让......