首页 > 数据库 >MySQL查询语句汇总附练习带注释(二)

MySQL查询语句汇总附练习带注释(二)

时间:2023-09-07 22:01:06浏览次数:42  
标签:语句 -- 数据类型 列名 表名 汇总 学员 MySQL 表中

数据库查询语句包含

条件查询

语法:

SELECT */列名 FROM 表名
WHERE 条件
ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC;
-- 条件可以包含关系运算符、逻辑运算符、特殊情况等
-- 是
-- 在几个选项之中
-- between and 在一定范围内

-- 要求查询emp表中员工编号大于等于50的员工编号
SELECT *
FROM 员工表
WHERE 员工编号>=50;

-- 查询员工表中员工编号是50的员工信息
SELECT *
FROM 员工表
WHERE 员工编号=50;

-- 查询员工表中员工编号在50-100之间的员工信息
SELECT *
FROM 员工表
WHERE 员工编号 BETWEEN 50 AND 100;

常见聚合函数

MySQL查询语句汇总附练习带注释(二)_数据

-- 查询EMP表中员工工资的最大值
SELECT MAX(SAL)
FROM EMP;

-- EMP表中员工编号的最大值
SELECT MAX(员工编号)
FROM EMP;

-- 查询学生表中学员分数的最小值
SELECT MIN(学员分数)
FROM 学生表;

-- 查询学生表中所有学员分数的平均值
SELECT AVG(学员分数)
FROM 学生表;

-- 查询EMP表中所有员工奖金总和
SELECT SUM(员工奖金)
FROM EMP;

-- 统计EMP表中职位是经理的个数
SELECT COUNT(经理)
FROM EMP;

字符串处理函数

MySQL查询语句汇总附练习带注释(二)_表名_02

-- 获取emp表中,员工姓名的长度
SELECT ename,LENGTH(ename)
FORE emp;

-- 查询emp表中,员工的姓名和姓名最后2个字符
-- ABCD EF    6-1
-- ABCDE FR
SELECT 姓名,SUBSTRING(姓名,LENGTH(姓名)-1,2)
FROM EMP;

数值处理函数

MySQL查询语句汇总附练习带注释(二)_数据类型_03

-- 保留小数点后两位
SELECT ROUND(12.123,2);
-- 生成随机数
SELECT RAND();

日期处理函数

MySQL查询语句汇总附练习带注释(二)_数据类型_04

•字符串处理函数

例:查询emp表中,员工的姓名和姓名最后2个字符

方法1:

select ename,substring(ename, length(ename)-1, 2) from emp;

方法2:

select ename,substring(ename, -2, 2) from emp;

查询student表中,姓名中含有唐的,学员的姓名、分数、班级

select sname,score,sclass from student where sname like '%唐%';

查询emp表中,倒数第2个字母是N的,员工的姓名、职位、入职时间

select ename,job,hiredate from emp where ename like '%N_';

查询student表中,分数(score)在70--99分之间的,班级名称(sclass),班级的人数,班级的平均分数,根据班级的平均分数降序排列

select sclass,count(*),avg(score)
from student
where score >= 70 and score <= 99
group by sclass
order by avg(score) desc;

创建数据表时添加列级别主键约束

CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) PRIMARY KEY
);
-- 创建数据表时添加表级别唯一约束,可以多个主键约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围),
      列名2 数据类型(数据范围) ,
      PRIMARY KEY(列名1,列名2)
);

修改表时添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY(列名1,列名2);

删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY;

-- 创建数据表时添加列级别主键约束

CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) UNIQUE [KEY]
);
-- 创建数据表时添加表级别唯一约束
CREATE TABLE 表名(
      列名1 数据类型(数据范围),
      列名2 数据类型(数据范围) ,
      UNIQUE KEY(列名1,列名2)
);

修改表时添加唯一约束

ALTER TABLE 表名 ADD UNIQUE KEY(列名1,列名2);

删除唯一约束

ALTER TABLE 表名 DROP INDEX 约束名称;

查看某张表中全部的索引

SHOW KEYS FROM 表名;

默认值约束

CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) DEFAULT 参数值
);

修改表时添加默认值

ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT 默认值;

删除默认值

ALTER TABLE 表名 MODIFY 列名 数据类型 DEFAULT NULL;
ALTER TABLE 表名 MODIFY 列名 数据类型;

非空约束

CREATE TABLE 表名(
      列名1 数据类型(数据范围) PRIMARY KEY UNIQUE [KEY],
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名2 数据类型(数据范围) DEFAULT 参数值,
      列名2 数据类型(数据范围) NOT NULL
);

修改表时添加非空约束

ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NUL

删除非空约束

ALTER TABLE 表名 MODIFY 列名 数据类型;

外键约束

CREATE TABLE 表名1(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2 数据类型(数据范围) UNIQUE [KEY],
      列名3 数据类型(数据范围) DEFAULT 参数值,
      列名4 数据类型(数据范围) NOT NULL
);

CREATE TABLE 表名2(
      列名1 数据类型(数据范围) PRIMARY KEY,
      列名2a 数据类型(数据范围) UNIQUE [KEY],
      列名3 数据类型(数据范围) DEFAULT 参数值,
      列名4 数据类型(数据范围) NOT NULL,
      FOREIGN KEY(列名2a) PEFERENCES 表名1(列名2)
);

修改表时添加外键约束

ALTER TABLE 子表 ADD CONSTRAINT 约束名称 FOREIGN KEY(列名) PEFERENCES 主表(列名);

删除外键约束

ALTER TABLE 表名 DROP FOREIGN KEY 约束名称;

插入语句,指定列插入数据

INSERT INTO 表名(列名1,列名2) VALUES(列值1,列值2),(列值1,列值2);
-- 表名中的列名必须和VALUES 中的列值一一对应

全部列插入数据

INSERT INTO 表名 VALUES(列值1,列值2);
-- VALUES 中的列值,必须和表结构中的列名是对应的

修改记录(更新语句)

UPDATE 表名 SET 列名1=该列新值,列名2=该列新值 WHERE 条件;
-- 如果不指定条件WHERE,将更新表中所有记录

删除记录

DELETE FROM 表名 WHERE 条件;
1、查询stu01表中,全部列的数据
SELECT * FROM stu01;

MySQL查询语句汇总附练习带注释(二)_查询语句_05

2、查询cou01表中,课程编号、课程名称
SELSECT cno,cname FROM cou01;
-- cno课程编号
-- cname课程名称
3、查询sco01表中,学员编号、学员成绩并给每列起别名
SELECT sno,score FROM sco01;
-- SELECT 学员编号 别名,学员成绩 别名 FROM sco01;
-- select sno 编号,score 成绩 from sco01;


4、查询stu01表中,学员编号是2020005的,学员的编号、学员姓名、学员年龄
SELECT sno,sname,age FROM stu01 WHERE sno=2020005;
-- 查询指定数据,没有就为空
5、查询stu01表中,学员姓名是Jones的,学员的编号、学员姓名、学员地址
SELECT sno,sname,address FROM stu01 WHERE sname=’Jones’;
-- 学员姓名是! SNAME=!
6、查询stu01表中,学员姓名含有o的,学员的编号、学员姓名、学员性别
SELECT sno,sname,sex FROM stu01 WHERE sname LIKE ‘%O%’;
-- 包含...LIKE '%...%'
7、查询stu01表中,学员姓名首字母以J开头的,学员编号、学员姓名
SELECT sno,sname FROM stu01 WHERE sname LIKE ‘J%’;
-- 模糊查询
-- 以...开头 LIKE '...%'
-- 以...结尾 LIKE '%...'
8、查询sco01表中,学员成绩不在60~80之间的,学员的编号、学员成绩
select sno,score from sco01 where not score between 60 and 80;
-- 条件 不在60-80之间not...BETWEEN....AND
9、查询stu01表中,学员编号是2020001、2020003、2020009的学员信息
SELECT * FROM stu01 WHERE sno in(2020001、2020003、2020009);
-- in




















标签:语句,--,数据类型,列名,表名,汇总,学员,MySQL,表中
From: https://blog.51cto.com/u_16239022/7402134

相关文章

  • mysql8关闭binlog并清空Binlog
    编辑my.ini或者my.cnf文件清空binlog信息#查看现存的binlog文件列表showmasterlogs;#重置清空binlog文件resetmaster;#重置清空后重新查看现存的binlog文件列表是否都被清空了showmasterlogs;停用binlog功能为啥要关闭binlog功能呢?是因为反正是个测试服务器,......
  • mysql8 Found option without preceding group错误
    这个错误说起来是真的坑,今晚帮同学在window操作系统上安装mysql8当自定义my.ini文件的时候就出现一下错误,死活启动不起来一直报错。当删掉这个my.ini文件的时候却能启动,刚开始以为是my.ini里的配置选项不对,一个一个筛查后依然不行。最后发现尽然是my.ini文件格式编码不对。改为A......
  • MyBatis操作Oracle(实现兼容Oracle和MySQL)
    MyBatis操作Oracle(实现兼容Oracle和MySQL)以Oracle11g来演示,只需要创建序列,不需要创建触发器,通过ORM框架操作来生成主键MySQL版本是8.x代码地址:https://gitee.com/zhang-zhixi/springboot-mp-oracle-auto.git1、分别创建Student表Oracle:CREATETABLE"STUDENT"("ID"N......
  • docker启动mysql报错Can't read dir of '/etc/mysql/conf.d/'
    执行命令:dockerrun-p3306:3306--privileged=true-v/mysql/data:/var/lib/mysql-v/mysql/log:/var/log/mysql-v/mysql/conf:/etc/mysql-eMYSQL_ROOT_PASSWORD=1234--name=mysql-server-dmysql:8.0 错误信息:[ERROR][Entrypoint]:mysqldfailedwhileat......
  • 深度理解vue3中选项式语句和组合式语句的区别
    选项式语句和组合式语句是Vue3中的两种不同的编程风格,它们都是用于编写Vue组件的方法。在本文中,我将详细介绍选项式语句和组合式语句的概念、区别和使用场景。选项式语句是Vue3中最常用的编写组件的方式之一。它使用了Vue的选项对象,其中包含了组件的各种选项,如数据、计算......
  • MYSQL 存储过程
    存储过程1、定义:存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。存储过程是数据库中的一个重要对象。2、存储过程特点:能完成较复杂的判断和运算可编程性强,灵活SQL编程的......
  • 关于sql语句进行删除时不能使用简称的问题记录
    1、问题:在代码中使用到了sql删除的功能,最简单的删除sql:deletefrompeoplepwherep.id=1;但是出现了问题,提示我无法删除,报错为:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear......
  • sql建表添加注释的语句
    官方自带的,我觉得麻烦,稍微‘封装’一下createprocProc_AddExplian@tablevarchar(200),@clolumvarchar(200),@textvarchar(200)asbeginEXECsp_addextendedproperty'MS_Description',@text,'USER',dbo,'TABLE',@table,'COLUMN',......
  • 详解canal同步MySQL增量数据到ES
    这篇文章,将使用canal将MySQL增量数据同步到ES 。如果想学Java项目的,强烈推荐我的......
  • Mysql更新时间列只改日期为指定日期不更改时间
    场景Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132342164上面通过如下方式实现日期列增加指定天数。UPDATEbus_vehicle_position_record20230801SETrecord_date=DATE_AD......