如何在MySQL中进行简单的增删改查

— 创建dept表并设置主键
create table dept(
deptno int(2) primary key ,
dname varchar(14),
loc varchar(13)
);

— 查看表结构
desc dept;

— 插入数据
insert into dept values (10,’ACCOUNTING’,’NEW YORK’),
(20,’RESEARCH’,’DALLAS’),
(30,’SALES’,’CHICAGO’),
(40,’OPERATIONS’,’BOSTON’);

— 创建emp表并设置主键和外键约束
create table emp(
empno int(4) primary key,
ename varchar(10),
job varchar(9),
mgr int(4),
hiredate date,
sal float(7,2),
comm float(7,2),
deptno int(2),
constraint deptno foreign key(deptno) references dept(deptno)

);
— 查看表结构
desc emp;
— 插入数据
insert into emp values (7369,’SMITH’,’CLERK’,7902,’1980-12-17′,800.00,NULL,20),
(7499,’ALLEN’,’SALESMAN’,7698,’1981-02-20′,1600.00,300.00,30),
(7521,’WARD’,’SALESMAN’,7698,’1981-02-22′,1250.00,500.00,30),
(7566,’JONES’,’MANAGER’,7839,’1981-04-02′,2975.00,NULL,20),
(7654,’MARTIN’,’SALESMAN’,7698,’1981-09-28′,1250.00,1400.00,30),
(7698,’BLAKE’,’MANAGER’,7839,’1981-05-01′,2850.00,NULL,30),
(7782,’CLARK’,’MANAGER’,7839,’1981-06-09′,2450.00,NULL,10),
(7788,’SCOTT’,’ANALYST’,7566,’1987-04-19′,3000.00,NULL,20),
(7839,’KING’,’PRESIDENT’,NULL,’1981-11-17′,5000.00,NULL,10),
(7844,’TURNER’,’SALESMAN’,7698,’1981-09-08′,1500.00,0.00,30),
(7876,’ADAMS’,’CLERK’,7788,’1987-05-23′,1100.00,NULL,20),
(7900,’JAMES’,’CLERK’,7698,’1981-12-03′,950.00,NULL,30),
(7902,’FORD’,’ANALYST’,7566,’1981-12-03′,3000.00,NULL,20),
(7934,’MILLER’,’CLERK’,7782,’1982-01-23′,1300.00,NULL,10);

— 查询emp表的所有信息
select * from emp;

语法1:alter table 旧表名 rename to 新表名;

alter table bbq rename to bbb;

语法2:rename table 旧表名 to 新表名;

rename table bbp to ppp;

rename table ppp to bbp;

语法1:drop table 表名;

drop table bbb;

语法:create table 新表名 like 被复制的旧表名;

create table aaa like bbp;

语法:create table 新表名 as select * from 被复制的旧表名;

create table bbb as select * from dept;

create table ccc as select * from bbb;

create table fff as select * from ccc;

create table ddd as select * from fff;

drop table aaa;
drop table bbb;
drop table ccc;
drop table bbp;
drop table bbp;

单行插入语法:
insert into表名[(列名1,列名2……] values(值 1,值⒉,值n……);

注意:如果插入的是 string类型的数据则需要用单引号或双引号包裹起来,

书写的值的个数需要与声明的列的个数一致(如果没有声明列,那么插入的值的个数必须与表中的列的个数相等)

多行插入语法: insert into表名[(列名1,列名2…)

values (值1,值⒉,值n…..),(值1,值2,值n….),(值1,值2,值n……);

insert into ccc values(50,’ABB’,’大连’);

insert into ccc values(60,null,null);

insert into ccc values(70,”,”);

一整列的更新语法:update 表名 set 列名=新值;(一般不用)

update a set mark = 99;

某一个值的更新语法:update 表名 set 列名=新值 where 限制条件;
— 将a表中的王五同学的数学成绩更新为100
update a set mark = 100 where sname = ‘王五’ and course = ‘数学’;
— 将a表中的数学更新成100
update a set mark = 100 where course = ‘数学’ ;
— 将a表中的英语更新成98
update a set mark = 98 where course = ‘英语’;

update a set sname =’李四’ where sname =’王五’ and course = ‘数学’;

删除一行的语法:delete from 表名 where 列名 = 值;
注意:如果该语句不用where条件 ,那么表内的所有数据都会被删除(慎用,一般不用)
— delete from ccc;
如果涉及需要删除的表中所有数据,除了使用的delete之外,
还有可以使用truncate语句
— truncate ddd;
drop delete truncate三者的区别

可以删除指定的数据行,不会删除表的结构,可以和where语句搭配使用

可以删除除表中的所有数据,不会删除表的结构,删除速度比delete快

可以删除表中的数据,但是整张表都会被删除,包括但是不限于主键、外键等约束,
但是如果想删主表但是主表中又有列被从表引用,
需要先删除从表才能删除主表

— 删除李四的数学成绩数据
delete from a where sname = ‘李四’ and course = ‘数学’;
删除 来自 a 条件 通过列名和值定位要删除的行;
— 插入数据
insert into a values(‘李四’,’数学’,100);

— 将王五的英语成绩删除(只是删除成绩数据不是删除行数据)
— 思考:将王五的英语成绩删除(只涉及删成绩数据不是删行数据)
— 等同就是将王五的英语成绩改成nuli
update a set mark = null where course = ‘英语’ and sname = ‘王五’;

— 在where条件语句中有比较运算符:

结构化查询语句
structured query language:结构化查询语言 简称sql,是一种应用最广泛的关系型数据库

select 需要查询的列名 如果时全查 *
👇

from 数据来源 如果要查询的数据涉及多张表,那么逗号隔开
👇

where 条件语句
👇

group by 分组列名
👇

having 条件表达书
👇

order by 排序字段 asc 升序(默认的) desc降序
👇

limit m,n m:从哪儿开始,从0开始(位数-1) n:显示几个

— 注意:在查询语句中,句子出现的词语顺序不能乱,否则会报错

— 查询a表中的所有信息
select * from a;
— 查询工号为:7782的所有信息
select * from emp where empno=7782;
— 查询工号为:7769的所有信息
select * from emp where empno=7369;
— 查询工号为:7788的员工姓名
select ename from emp where empno=7788;
— 查询SMITH的岗位和工资
select job,sal from emp where ename=’SMITH’;

select 列1,列2,列n from 表名 where 条件表达式;
注:如果查询的是所有列使用*

avg(需要求平均值的列) 求平均值
sum(需要求和的列) 求和
max(需要求最大值的列) 求最大值
min(需要求最小值的列) 求最小值
count(需要统计计数的列) 计数函数 ,不会计数null的数据
round(需要处理的数据,保留小数位数)四舍五入函数

例如: round(avg(sal),2) 将平均工资保留两位小数
— 查询部门编号10的员工平均工资
select deptno as ‘部门编号’,avg(sal) as ‘平均工资’
from emp
where deptno=10;
— 查询20号部门员工的工资总和
select deptno ,sum(sal) from emp where deptno=20;

— 查询工资最高的员工姓名和工资
select ename,sal
from emp
order by sal desc limit 1;
— select ename,max(sal) from emp;
— 查询工资最低的员工姓名和工资
select ename,sal
from emp
order by sal limit 1;
— select ename,min(sal) from emp;
— 统计有多少个员工
select count(empno)
from emp;
— 求各部门的平均工资保留其两位小数
select deptno,round(avg(sal),2) from emp group by deptno;

— 查询工资在2000-4000之间的员工姓名和工资
select ename, sal from emp where sal between 2000 and 4000;
— 查询职位是MANAGER的平均工资
select round(avg(sal),2)’平均工资’,job
from emp where job=’MANAGER’;

— 查询在DALLAS工作的员工姓名。(需要用到dept表)
select ename from emp ,dept where
emp.deptno=dept.deptno and loc=’DALLAS’;

— 查询工资是800,1250,1300的员工姓名和工资

select ename,sal from emp
where sal=800 or sal=1250 or sal=1300;

select ename,sal from emp
where sal in(800,1250,1300);

select ename,sal from emp
where sal not in(800,1250,1300);

— 查询工资在1000到2000的员工姓名和工资
select ename,sal from emp
where sal >= 1000 and sal

Original: https://www.cnblogs.com/cn-zhouchao/p/16459236.html
Author: 小胖子学编程
Title: 如何在MySQL中进行简单的增删改查

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622391/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 当你想静下来的时候,你就可以静下来。

    当你想静下来的时候,你就可以静下来。1,2年前,我有时还在为当时选的专业恼悔,因为继续教育是同事推荐的,最后同事给我的消息是,他在疫情后去其他公司,做人工智能的公司,拿月薪20K,…

    数据库 2023年6月11日
    097
  • 一篇文章带你掌握主流数据库框架——MyBatis

    一篇文章带你掌握主流数据库框架——MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 在之前的文章中我们学习了MYSQL和JDBC…

    数据库 2023年6月14日
    0108
  • 2022-08-17 DQL—-子查询,日期格式

    子查询、日期格式 DQL查询语言 子查询 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询:结果集只有一行一列(单行子查询) 列子查询:结果集有一列多行 行子查询:结果…

    数据库 2023年6月14日
    097
  • 安装Pycharm2022.2.1版本操作说明

    下载pycharm:https://www.jetbrains.com.cn/pycharm/download/#section=windows 我下载的是社区版”Co…

    数据库 2023年6月14日
    0164
  • 一条SQL更新语句是如何执行的

    文章首发于公众号「蝉沐风」,认真写好每一篇文章,欢迎大家关注交流 这是图解MySQL的第2篇文章,这篇文章会通过 一条SQL更新语句的执行流程让大家清楚地明白: 什么是InnoDB…

    数据库 2023年5月24日
    0108
  • 关于ThreadLocal的一道面试题

    问:上面这段代码会输出什么?为什么? 为什么输出1然后空指针了? 输出1是没有任何问题的。那空指针是为什么呢? 因为这是两个线程,子线程和主线程。子线程设置1,主线程肯定拿不到啊。…

    数据库 2023年6月16日
    0111
  • python_Xpath入门

    下面列出了最有用的路径表达式: 表达式 nodename 选取此节点的所有子节点。 从根节点选取。 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 选取当前节点。 选取…

    数据库 2023年6月11日
    087
  • python_numpy数组入门

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis…

    数据库 2023年6月11日
    095
  • IDEA插件和个性化配置推荐

    插件推荐 我自己现在使用的一些插件和一些自己感觉比较舒服配置分析给大家 idea如何安装插件: 如果打开设置没有看到,直接搜索plugins 然后在这里搜索即可 CodeGlanc…

    数据库 2023年6月16日
    0102
  • IO流

    流的分类 按操作数据不同,分为字节流和字符流。 按数据流的流向分为输出流和输入流。 按流的角色分为节点流和包装流。 抽象基类 字节流 字符流 输入流 InputStreanm Re…

    数据库 2023年6月16日
    091
  • Nginx基础入门篇(3)—返回状态码详解

    一般常见返回状态码 200 – 服务器成功返&a…

    数据库 2023年6月14日
    0191
  • 当mysql表从压缩表变成普通表会发生什么

    本文章做了把mysql表从压缩表过渡到普通表的实验过程,看看压缩表变成普通表会发生什么?本文针对mysql5.7和mysql8分别进行了实验。 1、什么是表压缩 在将压缩表引入普通…

    数据库 2023年5月24日
    070
  • 【JDBC】编程(2)— 写一个JDBC工具类;用 JDBC工具类 实现模糊查询

    JDBC工具类 功能: 简化JDBC部分代码书写 import java.sql.*; public class DBUtil { /** * 工&#…

    数据库 2023年5月24日
    0107
  • 线程池系列二:一张动图,彻底懂了execute和submit

    ​我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息。 【线程池原理:线程池原来是个外包公司,打工人我悟了】 若是…

    数据库 2023年6月6日
    0116
  • [Mysql]root密码忘了怎样重新设置密码

    环境 Ubuntu 20.04 LTSMysql 8.0+ 停止mysql服务 service mysql stop 修改 my.cnf 文件 vim /etc/mysql/my….

    数据库 2023年6月16日
    081
  • mysql拆分字符串做条件查询

    mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以 ,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个d…

    数据库 2023年5月24日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球