MySQL数据库增删改查基础操作(超长详解)

目录

1库的操作

显示数据库:

创建一个库

使用数据库

删除数据库的名

2表操作:

显示表

创建表

查看表

删除表名

新增

查出表的所有行和列;

实例:

别名:

去重:

排序:

限制查找的条数:(limit)

not null(指定某列不能储存null值)

unique (保证某列的每行必须有唯一的值,不能重复的)

default:默认值约束,指定插入数据,如果为空,指定默认值。

primary key :主键约束

聚合查询:

联合查询:

还有一种方法是 join  on

外连接分为左外连接和右外连接:

自连接:

子查询:

合并查询:

数据库的基本操作

1库的操作

显示数据库:

show databases;

创建一个库

create database 数据库名 charset 字符集;

使用数据库

use 数据库名;

删除数据库的名

drop database 数据库名;

2表操作:

显示表

show tables;

创建表

create table 表名 (列名 类型,列名 类型);

查看表

desc 表名;

删除表名

drop table 表名;

新增

insert into 表名 values (值,值);
insert into 表名(列名,列名) values (值,值);

查出表的所有行和列;

select *from 表名;

实例:

创建一个学生表:里面有id,姓名,语文,数学,英语,成绩。

create table exam_result( id int, name varchar(20), chinese decimal(3,1), math decimal(3,1), english decimal(3,1) );

然后插入测试数据:

insert into  exam_result (id,name, chinese, math, english) VALUES (1,'唐三藏', 67, 98, 56), (2,'孙悟空', 87.5, 78, 77), (3,'猪悟能', 88, 98.5, 90), (4,'曹孟德', 82, 84, 67), (5,'刘玄德', 55.5, 85, 45), (6,'孙权', 70, 73, 78.5), (7,'宋公明', 75, 65, 30);

别名:

select id ,name chinese+math +english as total from 表;

去重:

使用distinct 关键字

比如去重数学成绩

select distinct math from 表名;

排序:

order  by(升序)

select id ,math ,chinese from 表名 order by chinese;

升序,如果降序则需在后面加上desc;

基本查询:

比如查询英语不及格的同学:

select id ,english from 表名 where english<60;

如果查完进行排序:

select id ,english from 表名 where english<60 order by english;

查找总成绩小于200的学生:

select name,chinese + math +english from exam_result where chinese +english +math <200;

查找语文大于80 和英语大于80的学生;

select name,chinese,english from exam_result where chinese>80 and english>80;

and的优先级大于or。

查找数学成绩在(58,59,98,99)的学生(in):

select name,math from exam_result where math in(58,59,98,99);

查找名字中带有孙的name(%):

select name from exam_result where name like '孙%';(孙在前)
select name from exam_result where name like '%孙%';(含孙的)

显示一个(_):

select name from exam_result where name like '孙_';

查找名字是否为空的:

 select * from exam_result where name <=> null;

限制查找的条数:(limit)

 select * from exam_result limit 3;

3之后再查找3个:

select * from exam_result limit 3 offset 3;(从最后的3开始查找);

修改:让孙悟空的成绩数学成绩加10;

update exam_result set math=math +10 where name ='孙悟空';

not null(指定某列不能储存null值)

create table student8(id int not null);

unique (保证某列的每行必须有唯一的值,不能重复的)

create table student9(id int not null,name varchar(20) unique);

default:默认值约束,指定插入数据,如果为空,指定默认值。

create table student10(id int default '1',name varchar(20) unique);

primary key :主键约束

指定id为主键

 create table student11(id int not null primary key,name varchar(20) unique);

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大 值+1。

foreign key (外键约束)

创建班级表

create table  classes ( id int primary key auto_increment, name varchar(20), `desc` varchar(100) );

创建学生表

create table student (   id INT PRIMARY KEY auto_increment,   sn ); INT UNIQUE,   name VARCHAR(20) DEFAULT 'unkown',   qq_mail VARCHAR(20), classes_id int, FOREIGN KEY (classes_id) REFERENCES classes(id)

插入和查询结合(可以把一个表查询出的结果,插入到另一个表中):

insert into school1 select *from school;

聚合查询:

 1,select count(*) from fu;(查询行数)count遇到null会跳过2,select sum(salary) from fu;(求和)3,select avg(salary) from fu;(求平均值)4,select role ,count(id) from fu group by role;(分组进行查查询)

实例(比如分组查平均值):

select role,avg(salary) from fu group by role;

先插入一段数据:

insert into student(sn, name, qq_mail, classes_id) values->  ('09982','黑旋风李逵','xuanfeng@qq.com',1),->  ('00835','菩提老祖',null,1),->  ('00391','白素贞',null,1),->  ('00031','许仙','xuxian@qq.com',1),->  ('00054','不想毕业',null,1),->  ('51234','好好说话','say@qq.com',2),->  ('83223','tellme',null,2),->  ('09527','老外学中文','foreigner@qq.com',2);
insert into course(name) values->  ('Java'),('中国传统文化'),('计算机原理'),('语文'),('高阶数学'),('英文');
insert into score(score, student_id, course_id) values-> (70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6),-> (60, 2, 1),(59.5, 2, 5),-> (33, 3, 1),(68, 3, 3),(99, 3, 5),-> (67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6),-> (81, 5, 1),(37, 5, 5),-> (56, 6, 2),(43, 6, 4),(79, 6, 6),->  (80, 7, 2),(92, 7, 6);
insert into classes(name,doing) values-> ('计算机系2019级1班', '学习了计算机原理、C和Java语言、数据结构和算法'),->  ('中文系2019级3班','学习了中国传统文学'),->  ('自动化2019级5班','学习了机械自动化');

例子:查找许仙的成绩

联合查询:

1,先分析用到哪个表

select *from student,score;

2,再寻找对应条件,减少重复数据

select *from student,score where student_id =score.student_id;

3,再减少重复数据,当学生的名字为许仙时

 select *from student,score where student.classes_id =score.student_id and student.name ='许仙';

4,再减少范围,只查找范围内的

select student.name ,score.score from student,score where student.classes_id =score.student_id and student.name='许仙';

还有一种方法是 join  on

(join前后加的是两张表on后面加的是条件)

 select student.name,score.score from student join score on student.classes_id=sc
ore.student_id and student.name='许仙';

外连接分为左外连接和右外连接:

(先创建两个表)

左:

select *from student left join score on student.id =score.id;

右:

select *from student right join score on student.id =score.id;

如果修改一个表的数据,再进行查找会变成null

update score set score.id = 4 where score.id =3;

当进行右外连接的时候,id为3 的一行会变成null

自连接:

一个表的数据自己进行连接

select *from score as s1,score as s2;select *from score as s1,score as s2 where s1.id=s2.id;

子查询:

指嵌入在其他sql语句中的select语句,也叫嵌套查询

单行子查询:返回一行记录的子查询

select *from score where score.id != (select *from score where score.score);

多行子查询:返回多行记录的子查询

in关键字(查询多行数据用的in)

合并查询:

union(可以多个表进行查询)

 selct *from course where id<3 union select *from course where name='英文';

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

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

相关文章

第五课 Vue中的显示隐藏指令

Vue中的显示与隐藏指令 v-show用于显示或隐藏DOM元素&#xff0c;配合布尔值表示显示状态&#xff0c;使用场景较多 基础示例&#xff1a; <style>.test{width: 100px;height: 100px;background: red;}</style><div id"app"><div class"…

01-gcc编译c++过程

GCC编译C的四个主要步骤 预处理&#xff08;Preprocessing&#xff09;编译&#xff08;Compilation&#xff09;汇编&#xff08;Assembly&#xff09;链接&#xff08;Linking&#xff09; 1. 预处理&#xff08;Preprocessing&#xff09; 作用&#xff1a;处理所有预处理…

IC验证面试中常问知识点总结(五)附带详细回答!!!

13、phase相关 13.1 phase列表及分类 task phase: 耗费仿真时间,如run phase;给DUT施加激励、监测DUT的输出都是在这些phase中完成的。 function phase:如build_phase、connect_phase等,这些phase都不耗费仿真时间。 13.2 为什么引入动态运行phase(12个小phase)? 为了…

JNA调用c++动态库返回数据

jna学习网站 JNA Examples 1、返回String, pch.h头文件 // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次&#xff0c;提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能&#xff0c;包括代码完成和许多代码浏览功能。 // 但是&#xff0c;如果此处…

Spring 中的 @AUtowire 和 @Resource 用法和原理,以及避坑

&#x1f31f; Why&#xff1a;了解 Autowire 和 Resource 的高级用法和原理对于开发大型企业级应用至关重要。这些注解不仅帮助我们实现组件之间的松耦合&#xff0c;还能提高代码的可维护性和可测试性。掌握它们的高级用法可以让我们更灵活地处理复杂的依赖关系。 &#x1f…

docker harbor

文章目录 一&#xff0c;搭建私有仓库1.1下载registry1.2在 daemon.json 中添加私有镜像仓库地址1.3重新加载重启docker1.4运行容器1.5拉取一个centos7镜像1.6给镜像加标签1.7上传镜像1.8显示私有仓库的所有镜像1.8查看私有仓库的 centos 镜像有哪些tag 二&#xff0c;什么是ho…

SVN——常见问题

基本操作 检出 提交 更新 显示日志 撤销本地修改 撤销已提交内容 恢复到指定版本 添加忽略 修改同一行 修改二进制文件

个人博客搭建 | Hexo框架

文章目录 1.Hexo安装2.创建博客3.将博客通过GitHub来部署4.更换主题 1.Hexo安装 Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown&#xff08;或其他标记语言&#xff09;解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。搭建Hexo首先要…

项目启动过程中,项目加载并初始化bean时报空指针

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name sysDictTypeServiceImpl: Invocation of init method failed; nested exception is java.lang.NullPointerException 其实对于调试开发项目中的bug很简单,我们要一针见血…

Flink作业骨架结构

前言 Flink 是大数据流计算引擎&#xff0c;开发者通过程序语言开发一个 Flink 作业&#xff0c;然后提交这个作业到服务端并执行&#xff0c;以完成对大数据流的处理。 Flink 作业有一个基本骨架&#xff0c;再复杂的 Flink 作业都离不开这个基本骨架&#xff0c;了解作业的…

spring boot itext7 修改生成文档的作者、制作者、标题,并且读取相关的信息。

1、官方的example文件&#xff1a;iText GitHub itext-java-7.2.5\kernel\src\test\java\com\itextpdf\kernel\pdf\PdfStampingTest.java 2、修改代码&#xff1a; Testpublic void stamping1() throws IOException {String filename1 destinationFolder "stamping1_…

期货考核系统部署/配资net源码

关于期货考核系统部署与配资NET源码的问题&#xff0c;以下是一些相关的信息和建议&#xff1a; 一、期货考核系统部署 期货考核系统的部署是一个复杂的过程&#xff0c;涉及需求分析、系统设计、开发、测试、部署等多个环节。以下是一些关键步骤&#xff1a; 需求分析&…

机器学习——主要分类

前言&#xff1a; 机器学习是人工智能的重要分支之一&#xff0c;它通过分析数据来构建模型&#xff0c;并通过这些模型进行预测、分类或决策。随着数据量的迅速增长&#xff0c;机器学习在多个领域展现出巨大的应用潜力&#xff0c;推动了科技的进步。根据学习方式和数据的使用…

Shell实现查看用户密码有效期

基于 Shell 脚本&#xff0c;实现显示 Linux 用户的密码修改时间、到期时间、到期天数和密码有效期等信息。 Shell 脚本&#xff1a; #!/bin/bash# 获取用户名 read -p "请输入要查询的用户名: " username# 检查用户是否存在 if id "$username" &>…

马化腾:“腾讯只剩半条命,另外半条交给合作伙伴”;服务号消息折叠折腾死生态伙伴另外半条命

马化腾曾坦言&#xff1a;“腾讯只剩半条命&#xff0c;另外半条交给合作伙伴。”这句话道出了腾讯赖以为生的生态布局&#xff0c;腾讯的成功不仅依靠自身强大的平台&#xff0c;还依赖着生态系统中的合作伙伴。而今&#xff0c;微信服务号“消息折叠”的推出&#xff0c;正是…

如何替换OCP节点(二):使用 antman脚本 | OceanBase应用实践

前言&#xff1a; OceanBase Cloud Platform&#xff08;简称OCP&#xff09;&#xff0c;是 OceanBase数据库的专属企业级数据库管理平台。 在实际生产环境中&#xff0c;OCP的安装通常是第一步&#xff0c;先搭建OCP平台&#xff0c;进而依赖OCP来创建、管理和监控我们的生…

前端_003_js扫盲

文章目录 var,let,const严格模式数据类型运算符事件常用对象函数绑定call() ,apply(),bind() 闭包浏览器中事件循环回调和异步Promiseasync和await DOMBOMAjax var,let,const let是var的升级版本&#xff0c;对于块作用域&#xff0c;var无法进行限制&#xff0c;let不会存在该…

营销邮件软件:提升邮件营销效率必备工具!

营销邮件软件选择技巧&#xff1f;免费高效的邮件营销软件推荐&#xff1f; 如何高效地管理和优化邮件营销活动成为了企业面临的一大挑战。营销邮件软件成为提升邮件营销效率的必备工具。MailBing将深入探讨营销邮件软件的功能、优势以及如何选择合适的工具。 营销邮件软件&a…

【深度学习】transformer为什么使用多头注意力极致?为什么不使用一个头

在现代深度学习中,Transformer 模型的多头注意力机制已被广泛应用,特别是在自然语言处理领域。最近我读到一篇有趣的博客文章,详细介绍了为什么 Transformer 采用多头注意力,而不是简单的单头注意力。文章从理论推导到代码实现,对多头注意力机制进行了深入分析。下面我为大…

前端新手教程:HTML、CSS 和 JavaScript 全面详解及实用案例

一、引言 在当今数字化的时代&#xff0c;前端开发扮演着至关重要的角色&#xff0c;它决定了用户与网页和应用程序交互的体验。HTML、CSS 和 JavaScript 作为前端开发的核心技术&#xff0c;分别负责网页的结构、样式和交互。本教程将为前端新手全面深入地介绍 HTML、CSS 和 …