MySQL- CRUD-单表查询

一、INSERT  添加

公式  INSERT INTO table_name [(column [, column...])] VALUES (value [, value...]);

示例:

CREATE TABLE `goods` (
						id INT ,
						good_name VARCHAR(10),
						price DOUBLE );
#添加数据
INSERT INTO goods (id,good_name,price ) VALUES (20,'华为手机', 2000);				

 ·细节说明
1.插入的数据应与字段的数据类型相同。比如把‘abc'添加到int类型会错误
2.数据的长度应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
3.在values中列出的数据位置必须与被加入的列的排列位置相对应
4.字符和日期型数据应包含在单引号中。
5.列可以插入空值[前提是该字段允许为空],insert into table value(null)
6.insert into tab_name (列名..) values(),(),() 形式添加多条记录

INSERT INTO goods  (id,good_name,price)VALUES (31,'三星手机',2000),(40,'小米手机',2000),(50,'vivo手机',2000);	


7.如果是给表中的所有字段添加数据,可以不写前面的字段名称

INSERT INTO goods  VALUES (30,'华为手机', 2000);					

8.默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错

二、UPDATE 更新

UPDATE    tbl name
                 SET col_namel=exprl [, col_name2=expr2 ..]
                 [WHERE where definition]

特别注意,一定要写where条件, 更新一时爽,交付火葬场! (强烈建议备份好数据)

#给101员工的工资增加1000
UPDATE employee SET salary = salary+1000 where id = 101;

三、DELETE 删除

特别注意,一定要写where条件, 更新一时爽,交付火葬场! (强烈建议备份好数据)

  公式  delete from tbl_name
                 [WHERE where definition]

delete from tbl_name
              [WHERE where definition]

1.如果不使用where子句,将删除表中所有数据。
2.Delete语句不能删除某一列的值(可使用update设为null或者")
3.使用delete语句仅删除记录,不删除表本身。如要删除表,使用droptable语句。drop table表名;

四、SELECT 添加 

 1、公式: 

SELECT [DISTINCT] *|{columnl,column2.column3..} FROM tablename;

解释:DISTINCT 表示筛掉重复数据,

示例:

CREATE TABLE student (
				id INT NOT NULL DEFAULT 1,
				`name` varchar(20) not null default '',
				 chinese float not null default 0.0,
				 english float not null default 0.0,
				 math float not null default 0.0 );
 insert into student values (1,'曹操',77,89,85);
  insert into student values (2,'刘备',80,89,90);
	 insert into student values (3,'孙权',87,79,86);
	  insert into student values (4,'诸葛亮',88,89,90);
		 insert into student values (5,'郭嘉',82,89,85);
		  insert into student values (6,'周瑜',79,89,99);
			 insert into student values (7,'荀彧',79,90,80);
#查询所有学生成绩			 
select * from student;
#查询所有学生姓名及对应的英语成绩
select `name`, english from student; 
#查询所有英语成绩并除去重复的值
select distinct english from student;

2、使用表达式对查询的列进行运算

        SELECT *|{columnl |expression, column2 |expression,..}
              FROM tablename;

3、别名

        select colunm_name as 别名 from table_name;

#统计所有学生的总分
select name, (chinese+english+math) from student;
#给所有学生的总分加十分
select name, (chinese+english+math+10) from student;
#使用别名表示学生分数
select name, (chinese+english+math+10) AS TOTAL_SCORE from student;

4、where子句中,经常使用的运算符

#查询姓名为荀彧的学生成绩
select name, (chinese+english+math) from student where name = '荀彧';
#查询英语成绩大于等于90分的同学
select name, (chinese+english+math) from student where english >=90;
#查询总分大于200分的所有同学
select name, (chinese+english+math) from student where (chinese+english+math) >200;
#查询math大于60分且id>90的学生成绩
select name, (chinese+english+math) from student where math >60 and id <3;
#查询总分大于200分且数学成绩小于语文成绩的孙姓同学
select name, (chinese+english+math) from student where  (chinese+english+math) >200 and math < chinese and `name` like '孙%';
#1、查询英语分数在80 - 90 之间的同学
select *  from student where english between 80 and 90 
#2查询数学分数为89,90,91的同学
select * from student where math in (89,90,91);
#3查询所有姓李的学生成绩
select * from student where 	`name` like '李%';
#4查询数学分>80,语文分>80的同学
select * from student where math>80 and chinese >80;
#1查询语文分数在70 - 80之间的同学
select * from student where chinese between 70 and 80;
#2查询总分为189,190,191的同学
select * from student where (chinese+english+math) in (189,190,191);
#3查询所有姓孙 或者 姓曹 的学生成绩
select * from student where `name` like '孙%' or `name` like '曹%';
#4查询数学比语文多30分的同学
select * from student where (math-chinese)>30;

5、使用order by子句排序查询结果。

公式:  SELECT columnl,column2. column3..
            FROM     table
           order by column asc|desc, ...;

1.Order by指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。
2.Asc升序[默认]、Desc降序
3.ORDER BY子句应位于SELECT语句的结尾。

#对数学成绩排序后输出【升序】
select math  from student order by math;
#对总分按从高到底的顺序输出
select (chinese+english+math) as total_score from student order by total_score;
#对姓刘的学生成绩(总分)排序输出(升序)
select (chinese+english+math) as total_score from student where `name` like '刘%' order by total_score;

五、查询增强

先建立三张表并添加测试数据

#新建一张部门表
create table dept (
				deptno MEDIUMINT  UNSIGNED  NOT NULL DEFAULT 0,
				dname varchar(20) not null default '',
				loc varchar(13) not null default '');
INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');
#新建一张员工表
create table emp (
				empno MEDIUMINT unsigned not null default 0,
				ename varchar(20) not null default '',  /* 名字*/
				job varchar(9) not null default '',
				mgr mediumint unsigned , /* 上级编号*/
				hiredate date not null, /* 入职时间*/
				sal  decimal (7,2) not null , /* 薪水*/
				comn decimal(7,2), /* 红利*/
				deptno MEDIUMINT unsigned not null default 0);  /* 部门编号*/
				
INSERT INTO emp VALUES (7369,'SMITH','CLERK', 7902, '1990-12-17', 800.00, NULL , 20);
INSERT INTO emp VALUES ( 7499,'ALLEN' , 'SALESMAN', 7698, '1991-2-20', 1600.00, 300.00, 30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN', 7698,'1991-2-22', 1250.00, 500.00, 30);
INSERT INTO emp VALUES (7566,'JONES','MANAGER', 7839,'1991-4-2', 2975.00, NULL, 20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'1991-9-28',1250.00,1400.00,30);
INSERT INTO emp VALUES (7698, 'BLAKE', 'MANAGER', 7839,'1991-5-1', 2850.00, NULL, 30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'1991-6-9',2450.00,NULL,10);
INSERT INTO emp VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1997-4-19', 3000.00, NULL, 20);
INSERT INTO emp VALUES (7839, 'KING', 'PRESIDENT' , NULL, '1991-11-17' , 5000.00, NULL,10);
INSERT INTO emp VALUES (7844,'TURNER', 'SALESMAN', 7698, '1991-9-8', 1500.00, NULL, 30);
INSERT INTO emp VALUES (7900, 'JAMES', 'CLERK' , 7698, '1991-12-3', 950.00, NULL, 30);
INSERT INTO emp VALUES (7902,'FORD', 'ANALYST', 7566, '1991-12-3', 3000.00, NULL, 20);
INSERT INTO emp VALUES (7934,'MILLER' , 'CLERK', 7782,'1992-1-23', 1300.00,NULL, 10) ;
SELECT * from emp;

#工资级别表
CREATE TABLE salgrade 
(
 grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, -- 级别
losal DECIMAL(17,2) NOT NULL, -- 该级别最低工资
hisal DECIMAL(17,2) NOT NULL); -- 该级别最高工资

RENAME TABLE salgradegrade TO salgrade;

INSERT INTO salgrade VALUES(2, 1201, 1400);
INSERT INTO salgrade VALUES(3,1401, 2000);
INSERT INTO salgrade VALUES(4, 2001, 3000);
INSERT INTO salgrade VALUES(5,3001,9999);
INSERT INTO salgrade VALUES(1,700,1200);

使用where子句
    ?如何查找1992.1.后入职的员工

SELECT * from emp where hiredate>'1992-1-1';

如何使用like操作符
    %:表示0到多个字符   _:表示单个字符
    ?如何显示首字符为S的员工姓名和工资

SELECT ename,sal FROM emp where ename like 'S%';

      ?如何显示第三个字符为大写O的所有员工的姓名和工资如何显示

SELECT ename,sal FROM emp where ename like '__O%';

   没有上级的雇员的情况 (IS NULL,注意在java中用的是等号,mysql用的是is)

SELECT * from emp where mgr IS NULL;

   查询表结构

DESC emp;

使用order by 子句

?如何按照工资的从低到高的顺序,显示雇员的信息(order by 子句默认是升序

SELECT *  from emp ORDER BY sal;

?  按照部门号升序而雇员的工资降序排列,显示雇员信息

SELECT * from emp ORDER BY deptno asc,sal desc;

六、分页查询

需求背景: 

        当我们有很多数据时,例如上万条数据, 需要展示到前端页面,那么我们一次性肯定展示不完,需要一页一页地展示。在客户端请求下一页时,服务器再查询下一页的数据并返回。

基本语法:   select.….limit start,rows
                     表示从start+1行开始取,取出rows行,start 从0开始计算

示例:

        数据表接上文。

--  按雇员的id号升序取出,每页显示3条记录,请分别显示第1页,第2页,第3页

-- 按雇员的id号升序取出,每页显示3条记录,请分别显示第1页,第2页,第3页

select * from emp order by empno limit 0,3;

select * from emp order by empno limit 3,3;

select * from emp order by empno limit 6,3;

-- 推导公式
select * from emp 
                 order by empno 
								 limit 每页显示记录数* (第几页-1),每页显示记录数

七、分组增强

	-- 显示每种岗位的雇员总数、平均工资。
	select count(*),AVG(sal) from emp order by job ;
  -- 显示雇员总数,以及获得补助的雇员数。
	select count(*) , count(comn) from emp;
	
	-- 扩展 统计没有获得补助的雇员数
	select count(*) , count(IF(comn is null,1,null)) from emp;
	select count(*) , count(*)-count(comn) from emp;

  -- 显示管理者的总人数。
	select count(mgr) from emp;
  -- 显示雇员工资的最大差额。							 
select MAX(sal)-MIN(sal) from emp;

八、多子句查询

分组的总结

?如果select语句同时包含有group by,having,limit
order by那么他们的顺序是group by,having,orderby,limit

多子句顺序 (一定要按照这个顺序)

SELECT columnl, column2. column3.. FROM   table
                                       group by column
                                       having  condition
                                       order by column
                                       limit start, rows;

理解:  mysql数据库在底层应该 最先要分组, 然后给各个分组排序,最后limit再取出页。having就不用说了,having是一定在group by 后的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209238.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用autodl服务器,两个3090显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度23 words/s

1&#xff0c;演示视频地址 https://www.bilibili.com/video/BV1Hu4y1L7BH/ 使用autodl服务器&#xff0c;两个3090显卡上运行&#xff0c; Yi-34B-Chat-int4模型&#xff0c;用vllm优化&#xff0c;增加 --num-gpu 2&#xff0c;速度23 words/s 2&#xff0c;使用3090显卡 和…

(11_29)畅捷通的 Serverless 探索实践之路

作者&#xff1a;计缘 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商&#xff0c;成立于2010年。畅捷通在2021年中国小微企业云财税市场份额排名第一&#xff0c;在产品前瞻性及行业全覆盖方面领跑市场&#xff0c;位居中国小微企业云财税厂商矩阵领军象限前…

算法通关村第十四关-青铜挑战认识堆

大家好我是苏麟 , 今天带大家认识认识堆 . 堆 堆是将一组数据按照完全二叉树的存储顺序&#xff0c;将数据存储在一个一维数组中的结构。 堆有两种结构&#xff0c;一种称为大顶堆&#xff0c;一种称为小顶堆 : 大顶堆 大顶堆的任何一个父节点的值&#xff0c;都大于或等于…

道可云会展元宇宙平台全新升级,打造3D沉浸式展会新模式

随着VR虚拟现实、人工智能、虚拟数字人等元宇宙技术的快速发展&#xff0c;各个行业正试图通过元宇宙技术寻求新的发展突破口&#xff0c;会展行业也不例外。会展作为经贸领域的重要产业形态&#xff0c;越来越多的企业和组织开始寻求通过元宇宙技术为展会赋能&#xff0c;以满…

【MySQL】视图 + 用户管理

视图 前言正式开始视图用户管理user表创建新用户修改用户密码权限管理给用户赋权剥夺权限 前言 本篇所讲的视图和我上一篇事务中所讲的读视图不是一个东西&#xff0c;二者没有任何关系&#xff0c;如果看过我前一篇博客的同学不要搞混了。 其实视图和用户管理本来是想着分开…

集简云语聚AI新增模型测试,支持多模型同时进行交互,快速评估不同模型性能

语聚AI模型测试 在ChatGPT爆火的推动下&#xff0c;由生成式 AI 掀起的全球人工智能新浪潮就此拉开了序幕&#xff0c;人工智能也成为越来越多企业提升业务效率、优化业务流程的首选方案。 然而&#xff0c;面对层出不穷的AI模型&#xff0c;每个模型在完善度、功能性、易用性…

php5构造无字母数字的webshell实现任意命令执行

目录 引言 如果是在php7 如果是在php5 现在我们来上传文件 最后的结果&#xff1a; 看本篇前可以先看这一篇&#xff1a;利用异或、取反、自增bypass_webshell_waf-CSDN博客 引言 上一篇介绍了如何构造出一个无字母数字的webshell&#xff0c;但是如果后端的代码变成了这…

MIT线性代数笔记-第20讲-克拉默法则,逆矩阵,体积

目录 20.克拉默法则&#xff0c;逆矩阵&#xff0c;体积求逆公式克拉默法则用行列式关联体积 打赏 20.克拉默法则&#xff0c;逆矩阵&#xff0c;体积 求逆公式 考虑二阶方阵&#xff0c;有 [ a b c d ] − 1 1 a d − b c [ d − b − c a ] \begin{bmatrix} a & b \\ …

若依项目前后端部署记录

前言 本文较乱&#xff0c;用于笔者记录项目部署过程&#xff0c;对于想学习若依项目部署的同学看文章可能会导致误导&#xff0c;建议读者多查资料&#xff0c;保持疑问并谨慎验证。 项目官方指导&#xff1a; 环境部署 | RuoYi 1、环境部署相关 JDK > 1.8 (推荐1.8版本…

堆排序算法

我们之前学了堆&#xff1a; 数据结构---堆-CSDN博客 数据结构&#xff1a;堆的实现-CSDN博客 我们知道堆有小堆和大堆之分&#xff0c;根节点不是最小就是最大的&#xff0c;我们可以利用这个特点实现堆排序 思路&#xff1a; 为什么我们要选择堆排序呢 它的效率相比于冒泡…

【Java】浅析FutureTask的核心方法get

前言 在进行多线程编程时&#xff0c;我们离不开两个重要的任务接口&#xff1a;Runnable、Callable。一个线程想要运行&#xff0c;首先它得知道它的任务是什么&#xff08;它要做什么&#xff09;&#xff0c;而这两个接口恰好是用于表示一个线程需要执行的任务。 Runnable和…

Vmware安装Centos7

CentOs7镜像文件下载 centos7 镜像文件下载-CSDN博客 配置虚拟机 打开Vmware&#xff0c;点击新建虚拟机 典型安装与自定义安装 典型安装&#xff1a;VMware会将主流的配置应用在虚拟机的操作系统上&#xff0c;对于新手来很友好。 自定义安装&#xff1a;自定义安装可以针…

【Python表白系列】如何实现爱心光波的表白效果(完整代码)

文章目录 爱心光波环境需求完整代码详细分析系列文章爱心光波 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://w…

如何下载IEEE出版社的Journal/Conference/Magazine的LaTeX/Word模板

当你准备撰写一篇学术论文或会议论文时&#xff0c;使用IEEE&#xff08;电气和电子工程师协会&#xff09;的LaTeX或Word模板是一种非常有效的方式&#xff0c;它可以帮助你确保你的文稿符合IEEE出版的要求。无论你是一名研究生生或一名资深学者&#xff0c;本教程将向你介绍如…

【C/PTA —— 13.指针2(课内实践)】

C/PTA —— 13.指针2&#xff08;课内实践&#xff09; 一.函数题6-1使用函数实现字符串部分复制6-2 拆分实数的整数部分和小数部分6-3 存在感 二.编程题7-1 单词反转 一.函数题 6-1使用函数实现字符串部分复制 void strmcpy(char* t, int m, char* s) {int len 0;char* ret …

Python过滤掉特定区域内的矩形框

Python过滤掉特定区域内的矩形框 前言前提条件相关介绍实验环境过滤掉特定区域内的矩形框方法一&#xff1a;直接法&#xff08;for循环遍历&#xff09;代码实现输出结果 方法二&#xff1a;列表推导式代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#x…

Vue2+echarts 实现图表的简单绘制

Echarts是一个基于JavaScript的开源可视化库&#xff0c;由百度开发和维护。它通过简单的配置方式&#xff0c;就可以实现各种复杂的数据可视化和图表展示。Echarts支持多种图表类型&#xff0c;包括柱状图、折线图、饼图、散点图、漏斗图等&#xff0c;同时还支持地图可视化和…

zabbix6.4.0配置邮件及企微机器人群聊告警

一、邮件告警 根据公司邮箱自行配置&#xff0c;电子邮件、用户账号密码填自己的邮箱账号密码 动作本次使用的默认的&#xff0c;如果为了更加美观可自行修改。 二、企业微信机器人告警 首先在企微上创建群聊&#xff0c;之后添加群聊机器人 将地址复制&#xff0c;后面用 …

0Ω电阻最大过流能力及作用用途

0Ω电阻最大过流能力及作用用途 0Ω电阻过流能力0Ω电阻的作用 0Ω电阻过流能力 0Ω电阻不一定是真正的0Ω电阻&#xff0c;0Ω电阻存在一定的阻值偏差&#xff0c;主要看生产电阻厂商做哪种了。厂商都是根据电阻标准文件 EN60115-2&#xff0c; 里头0Ω电阻实际最大阻值有 10…

五、关闭三台虚拟机的防火墙和Selinux

目录 1、关闭每台虚拟机的防火墙 2、关闭每台虚拟机的Selinux 2.1 什么是SELinux