MySQL笔记(三):修改表

news2024/9/28 11:22:10

##注:需要在cmd管理员命令行链接mysql再打开sqlyog

一、基本介绍
在这里插入图片描述

二、CRUD([create][read][update][delete],增删改查)语句
1、insert语句
(添加数据)

insert into table_name(第一项,第二项,..) 
			values(数据1,数据2,...);

在这里插入图片描述

#insert注意事项
#1、插入的数据应与字段的数据类型相同,如:'abc'添加到'int'型中会出错
#2、数据的长度应在列的规定范围内,如:不能将一个长度为80的字符串加入到长度为40的列中
#3、在values中列出的数据位置必须与被加入的列的排列位置相对应
#4、字符和日期型数据应该包含在单引号''中
#5、列可以插入空值【前提是该字段允许为空】。insert into table value(null)
#6、insert into table_name(第一项,第二项,..) values(),(),()形式添加多条记录
INSERT INTO `goods` VALUE(4,'三星手机',4000,'beijing'),(5,'小米手机',6000,'wuhan');
SELECT * FROM goods;

#7、如果是给表中所有的字段添加数据,可以不写前面的字段名称
#8、默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
	-- 如果牧歌列没有指定not null ,那么当添加数据是,没有给定制,则会默认给null
	-- 如果我们希望指定某个列的默认值,可以在创建表时指定,如:prices double not null default 100
INSERT INTO `goods`(id,goods_name) 
	VALUES(6,'格力手机');

2、update语句

在这里插入图片描述

#演示update语句
UPDATE employee SET salary = 500;
#如果没有where语句,会修改所有的salary

UPDATE employee
	SET Salary = 2000
	WHERE `user_name`='小妖怪';
SELECT * FROM employee;
DESC employee;
INSERT INTO employee VALUES(200,'老妖怪','2001-12-24','2013-11-10 15:23:23','看门的','3400','我把太阳当晚餐','king');
#在原来薪水的基础上+1000
UPDATE employee
	SET Salary = salary + 1000
	WHERE `user_name`='老妖怪';
	

#update使用细节
#1、update语法可以用新值更新原有表行中的各列
#2、set子句知识要修改哪些列和要给予哪些值
#3、whiere子句指定应更新那些行,如没有,where,则更新所有行
#4、如果需要修改多个字段,则以通过set 字段1=值1,字段2=值2,...
UPDATE employee 
	SET salary=600,job='做饭的'
	WHERE `user_name`='老妖怪';

在这里插入图片描述

3、delete语句

delete from table_name
			where  ();
#演示delete语句,只能删除一行,不能删除一列(可使用update设为null或者'')
#delete只删除记录,不删除表本身,删表用drop table
DELETE FROM employee
	WHERE `user_name`='老妖怪';
UPDATE employee
	SET `image`='';
SELECT * FROM employee;

在这里插入图片描述

4、select语句(查询语句)
分成单表和多表

在这里插入图片描述

#演示select语句
#****创建新的友(studcnt)*****
CREATE TABLE stu(
	`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 stu(id,NAME,chinese,english,math) VALUES(1,'韩顺平',89,78,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(2,'张飞',45,76,67);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(3,'关羽',98,95,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(4,'松江',79,78,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(5,'李逵',89,70,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(6,'张顺',80,78,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(7,'母夜叉',89,75,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(8,'诸葛亮',87,78,90);
INSERT INTO stu(id,NAME,chinese,english,math) VALUES(9,'曹操',89,78,99);



-- 查询表中所有学生的信息
SELECT * FROM stu;

-- 查询表中给所有学生的姓名和对应的英语成绩
SELECT `name`,`english` FROM stu;

-- 过滤表中重复数据 distinct
SELECT DISTINCT `english` FROM stu;

-- 要查询的记录,每个字段都相同,才会去重
SELECT DISTINCT `name`,`english` FROM stu;
#select语句可以使用表达式对查询的列进行运算
#在select中可以使用as语句修改列名


SELECT `name`,(`chinese`+`english`+`math`) FROM stu;
SELECT `name`,(`chinese`+`english`+`math`+100) FROM stu;
SELECT `name`,(`chinese`+`english`+`math`+100) AS total_score FROM stu;
SELECT `name` AS `stu_name` FROM stu;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#查询姓名为张飞的同学的成绩
SELECT * FROM `stu`
	WHERE `name`='张飞';
	
#查询英语成绩大于90的同学
SELECT * FROM `stu`
	WHERE `english`>90;
	
#查询总分大于200的同学
 SELECT * FROM `stu`
	WHERE (`chinese`+`english`+`math`)>200;

#查询math>60且id>4的同学
SELECT * FROM stu
	WHERE `math`>60 AND `id`>4;

#查询英语》语文
SELECT * FROM stu
	WHERE `english`>`chinese`;
	
#查询总分>200,且math<chinese,且姓李的
-- 李% 表示以李开头的姓名
SELECT * FROM stu
	WHERE (`chinese`+`english`+`math`)>200 AND `math`<`chinese` AND `name` LIKE '张%';
	
#查询数学在80-90的人
SELECT * FROM stu
	WHERE math BETWEEN 80 AND 90;

#查询数学在89 90 91中的人
SELECT * FROM stu
	WHERE math IN (89,90,91);

在这里插入图片描述

#演示order by的使用
-- 对数学成绩排序后升序输出
SELECT * FROM stu
	ORDER BY math;
	
-- 对总分降序输出
SELECT `name`,(`chinese`+`english`+`math`) AS total_score FROM stu
	ORDER BY total_score DESC;

-- 对姓李的成绩升序输出
INSERT INTO stu VALUES(12,'李飞',45,79,80);
SELECT * FROM stu
	WHERE `name` LIKE '李%'
	ORDER BY math;

5、统计、合计函数(count、sum、avg、max\min)

#演示mysql 统计函数
-- (1)count的使用

-- 统计一个班级多少学生
SELECT COUNT(*) FROM stu;

-- 统计数学设估计大于90的学生有多少个
SELECT COUNT(*) FROM stu
	WHERE `math`>=90;
	
-- 统计总分大于250的有多少人
SELECT COUNT(*) FROM stu
	WHERE (`chinese`+`english`+`math`)>250;
	
-- count(*)和count(列)的区别
-- count(*):返回满足条件的记录的行数
-- count() : 返回满足条件的某列有多少个,但是会排除null

CREATE TABLE t15(
	`name` VARCHAR(32));
INSERT INTO t15 VALUES('tom');
INSERT INTO t15 VALUES('jack');
INSERT INTO t15 VALUES('tomy');
INSERT INTO t15 VALUES(NULL);

SELECT COUNT(*) FROM t15;
SELECT COUNT(`name`) FROM t15;

-- (2) sum的使用:只对数字起作用
-- 统计一个班级数学总成绩
SELECT SUM(math) FROM  stu;

-- 统计各科总成绩
SELECT SUM(math) AS total_math,SUM(english) AS total_en,SUM(chinese) AS total_ch FROM stu;

-- 统计语文平均分
SELECT SUM(chinese)/COUNT(*) FROM stu;



#演示avg
-- 求数学平均分
SELECT AVG(math) FROM stu;

#演示max/min
SELECT MAX(`chinese`+`math`+`english`),MIN(`chinese`+`math`+`english`) FROM stu;

6、分组函数

在这里插入图片描述


```bash
#演示mysql分组函数的使用group_by + having
CREATE TABLE dept(
deptno MEDIUMINT 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','BOSHTON');

SELECT * FROM dept;



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,  /*薪水*/
comm 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),
(7499,'ALLEN','SALESMAN',7698,'1991-2-20',1600.00,300.00,30),
(7521,'WARD','SALESMAN',7968,'1991-2-22',1250.00,500.00,30),
(7566,'JONES','MANAGER',7839,'1991-4-2',2975.00,NULL,20),
(7654,'MARTIN','SALESMAN',7968,'1991-9-28',1250.00,1400.00,30),
(7698,'BLAKE','MANAGER',7839,'1991-5-1',2850.00,NULL,30),
(7782,'CLARK','MANAGER',7839,'1991-6-9',2450.00,NULL,10),
(7788,'SCOTT','ANALYST',7566,'1991-4-19',3000.00,NULL,20),
(7839,'KING','PRESIDENT',NULL,'1991-11-17',5000.00,NULL,10),
(7844,'TURNER','SALESMAN',7698,'1991-9-8',1500.00,NULL,30),
(7900,'JAMES','CLERK',7698,'1991-12-3',950.00,NULL,30),
(7902,'FORD','ANALYST',7566,'1991-12-3',3000.00,NULL,20),
(7934,'MILLER','CLERK',7782,'1991-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  /*该级别的最高工资*/
);
INSERT INTO salgrade VALUES(1,700,1200),
(2,1201,1400),
(3,1401,2000),
(4,2001,3000),
(5,3001,9999);

SELECT * FROM salgrade;


-- having子句用于限制分组显示结果
-- 如何显示每个部门的平均工资和最高工资
SELECT AVG(sal),MAX(sal),deptno FROM emp GROUP BY deptno;

-- 显示每个部门每种岗位的平均工资和最低工资
SELECT AVG(sal),MIN(sal),deptno,job FROM emp GROUP BY deptno , job;

-- 显示平均工资低于2000的部门号和它的平均工资
-- select avg(sal),deptno from emp
-- 	where avg(sal)<2000
--	group by deptno;  //这种写法不对
	
SELECT AVG(sal),deptno FROM emp
	GROUP BY deptno
	HAVING AVG(sal)<2000;
	
-- 使用别名避免计算两次avg
SELECT AVG(sal) AS avg_sal,deptno FROM emp
	GROUP BY deptno
	HAVING avg_sal<2000;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode(力扣)数组篇 JAVA刷题详解

1 简介 是不是有许多小伙伴在刷力扣的时候感觉无从下手&#xff1f;从头按顺序开始刷的童鞋们可能会比较有感触&#xff0c;为什么才第四题就感觉很难了?没关系&#xff0c;本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类&#xff0…

Linux网络编程之dpdk的环境配置详解

文章目录 一、dpdk是什么&#xff1f;二、dpdk的环境配置多队列网卡是什么&#xff1f;怎么判断是否为多队列网卡&#xff1f;怎么修改成多队列网卡&#xff1f;修改内存配置&#xff0c;使其支持hugepage(巨页)下载dpdk编译dpdk 一、dpdk是什么&#xff1f; DPDK&#xff08;…

用苹果Vision Pro隔空操控机器人,英伟达:「人机合一」也不难嘛

昨日,英伟达创始人黄仁勋在 SIGGRAPH 2024 Keynote 演讲中讲到了其人形机器人通用基础模型「Project GR00T」。该模型在功能上迎来了一系列更新。 德克萨斯大学奥斯汀分校助理教授、英伟达高级研究科学家朱玉可发推,在视频中演示了英伟达如何将通用家务机器人大规模仿真训练…

(STM32笔记)十一、通过EXTI外部中断实现 按键控制LED

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 十一、通过EXTI外部中断实现 按键控制LED 十一、通过EXTI外部中断实现 按键控制LED1、按键模块按键原理图按键程序思路 2、中…

【数据结构】mapset详解

&#x1f341;1. Set系列集合 Set接口是一种不包含重复元素的集合。它继承自Collection接口&#xff0c;所以可以使用Collection所拥有的方法&#xff0c;Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等&#xff0c;它们各自以不同的方式存储元素&#xff0c;但都遵…

Linux常用得操作命令

1.查看ip地址------ifconfig 2.在终端中输入该命令&#xff0c;可以查看当前所在位置------pwd 3.man和–help man命令 1.man命令可以查看某个命令得具体用法 2.man命令怎么翻页 空格 3.man命令按q退出 help命令------help&#xff0c;也可以查看一个命令的帮助&#xff0c…

JavaWeb基础2:XML/Tomcat/Servlet

JavaWeb基础2&#xff1a;XML/Tomcat/Servlet (qq.com)

vim编辑器的使用【vim常用指令介绍】

1.1 vim 简介 vim 编辑器最初是 vi 编辑器&#xff0c;vi 编辑器是 Unix 系统最初的编辑器。允许查看文件内容和在文件中移动、插入、编辑和替换文本。后来开发人员对它做了一些改进。并重命名为 vim。 1.2 学习 vim 的理由 因为几乎任何一个发行版都有 vi/vim 编辑器&#xf…

从手动到自动:WMS系统带来的仓储革命

仓库管理系统&#xff08;WMS&#xff0c;Warehouse Management System&#xff09;在仓储业的发展中扮演了至关重要的角色。它的演变从手动管理到自动化管理&#xff0c;不仅大提升了仓储效率&#xff0c;还改变了企业的运营模式。 一、手动管理阶段 在WMS系统普及之前&#…

nginx负载均衡及软件平滑升级!!!

一、负载均衡 早期的网站流量和业务功能都比较简单&#xff0c;单台服务器足以满足基本的需求&#xff0c;但是随着互联网的发展&#xff0c;业务流量越来越大并且业务逻辑也跟着越来越复杂&#xff0c;单台服务器的性能及单点故障问题就凸显出来了&#xff0c;因此需要多台服…

【Visual Studio Code】源代码管理 传入/传出 更改配置开关

July 2024 (version 1.92)版本更新的Visual Studio Code 增加了 【源代码管理 - 传入/传出】的可视化视图。 但是目前发现也会导致加载变慢 占用页面的影响&#xff0c;如果希望关闭该视图&#xff0c; 可以在设置里搜索 scm.showHistoryGraph 关闭即可

计网:从输入URL到网页显示期间发生了什么

1、URL包含的信息 我们输入的url中包含着一些信息&#xff1a; http&#xff1a;表示的此次我们使用的什么协议/www.baidu.com&#xff1a;表示的是我们想要访问的服务器名称&#xff0c;也就是域名dir3/home.html&#xff1a;表示我们所要访问的资源 2、通过DNS解析URL获得I…

JAVA中的JMM(Java 内存模型)详解

1.JMM概念 Java 内存模型&#xff08;Java Memory Model 简称JMM&#xff09;是一种抽象的概念&#xff0c;并不真实存在&#xff0c;指一组规则或规范&#xff0c;通过这组规范定义了程序中各个变量的访问方式。 因为在不同的硬件生产商和不同的操作系统下&#xff0c;内存的访…

嵌入式安全:Provencore Secure os

嵌入式安全有何独特之处? 嵌入式安全领域的领导者 ProvenRun 宣布,其旗舰产品 ProvenCore for ARM™ Cortex-A 最近获得了 通用标准 (CC) EAL7 认证。这是全球首创,因为没有其他操作系统或可信执行环境 (TEE) 达到该安全级别。相比之下,移动安全市场上第二安全的 TEE(对于…

版本控制案例:全球虚拟制片领导者Dimension借助Perforce Helix Core管理大型二进制文件,实现跨地域团队协作,简化制作流程(上)

创建虚拟世界和人类角色需要一系列的软件工具。但最终愿景很少是由单一工作室独立完成的。对于大型项目&#xff0c;工作室需要通力合作&#xff0c;将全球的团队成员和数字资产联合起来。 Dimension Studio——体积内容捕捉和虚拟制片领域的领导者——不断将新技术和新方法融…

传统产品经理 vs AI产品经理

随着科技的日新月异和技术的不断革新&#xff0c;AI技术如今已深度融入各行各业&#xff0c;使得身处此领域的产品经理们迎来了前所未有的新挑战与广阔机遇。以下是我精心整理的内容&#xff0c;旨在分享传统产品经理如何顺应时代洪流&#xff0c;成功转型为AI产品经理的策略与…

Java面试之操作系统

1、冯诺依曼模型 运算器、控制器、存储器、输入设备、输出设备 32位和64位CPU最主要区别是一次性能计算多少字节数据&#xff0c;如果计算的数额不超过 32 位数字的情况下&#xff0c;32 位和 64 位 CPU 之间没什么区别的&#xff0c;只有当计算超过 32 位数字的情况下&#…

中国篆刻孙溟㠭凿木《应无所住而生其心》

应无所住而生其心 弘一法师言&#xff1a;学佛不是让你出家&#xff0c;也不是让你变得与众不同。学佛就是一个正常生活的人&#xff0c;一个善良的人懂得用佛法降服自心&#xff0c;消除烦恼所有有皆是虚妄&#xff0c;若见诸相非相&#xff0c;即见真我。 孙溟㠭凿木《应无…

Vue3发送验证码,开启倒计时,并且倒计时结束前无法点击

目录 1.最终效果 2.HTML 3.JS 1.最终效果 先看效果&#xff0c;点击发送验证码&#xff0c;然后开启倒计时&#xff0c;倒计时结束前无法再次发送&#xff0c;并且该按钮处于无法选中状态 废话少说&#xff0c;上干货&#xff0c;直接看代码 2.HTML 按钮部分内容&#xf…

揭秘eBay店铺排名提升秘诀:测评自养号的好处

在竞争激烈的电商市场&#xff0c;eBay作为全球知名的在线拍卖及购物网站&#xff0c;为卖家提供了广阔的舞台。如何在众多商品中脱颖而出&#xff0c;提升产品排名&#xff0c;成为每位eBay卖家关注的焦点。 eBay卖家如何提升排名&#xff1f; 1、关键词优化&#xff1a;关键…