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,一经查实,立即删除!

相关文章

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;如果此处…

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首先要…

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; 需求分析&…

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

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

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

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

element checkbox选框和文字分开点击---更改一列checkbox的顺序(进阶版)

选框和文字分开点击&#xff0c;找了很多&#xff0c;没有我想要的效果&#xff0c;但也借鉴了一下&#xff0c;实现了&#xff0c;记录一下 样式看起来倒是没多大区别&#xff0c;需求&#xff1a; 勾选了选框才可以点击文字 &#xff0c;一次只能点击一条数据&#xff0c;点…

Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey阅读笔记

Parameter-Efficient Fine-Tuning for Large Models: A Comprehensive Survey 综述阅读笔记 仅记录个人比较感兴趣的部分 基本知识 PEFT的三种分类&#xff1a;additive, selective, reparameterized, and hybrid fine-tuning selective fine-tuning 不需要任何额外的参数&am…

Axure横向菜单高级交互

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;横向菜单高级交互 主要内容&#xff1a;横向菜单左右拖动、选中效果 应用场景&#xff1a;app横向菜单、pc后台动态区域 案例展示&#xff1a; 演…

SpringBoot技术的车辆管理流程自动化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

uniapp-实现天地图以及行政区划图层覆盖

前言&#xff1a; 在uniapp中&#xff0c;难免会遇到使用地图展示的功能&#xff0c;但是百度谷歌这些收费的显然对于大部分开源节流的开发者是不愿意接受的&#xff0c;所以天地图则是最佳选择。 此篇文章&#xff0c;详细的实现地图展示功能&#xff0c;并且可以自定义容器宽…

探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱

文章目录 探索 Jupyter 笔记本转换的无限可能&#xff1a;nbconvert 库的神秘面纱背景&#xff1a;为何选择 nbconvert&#xff1f;库简介&#xff1a;nbconvert 是什么&#xff1f;安装指南&#xff1a;如何安装 nbconvert&#xff1f;函数用法&#xff1a;简单函数示例应用场…

安装vue发生异常:npm ERR! the command again as root/Administrator.

一、异常 npm ERR! The operation was rejected by your operating system. npm ERR! Its possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you lack permissions to access it. npm ERR! npm ERR! If you believe this might b…

安卓开发中轮播图和其指示器的设置

在安卓开发中&#xff0c;轮播图&#xff08;Carousel&#xff09;是一种常见的UI组件&#xff0c;用于展示一系列图片或内容&#xff0c;用户可以左右滑动来切换不同的视图。轮播图通常用于展示广告、新闻、产品图片等。 轮播图的指示器&#xff08;Indicator&#xff09;则是…

大模型生图安全疫苗注入赛题解析(DataWhale组队学习)

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月实践赛的大模型生图安全疫苗注入赛道&#xff1b;本文主要整理本次赛事的基本流程和优化方法。&#x1f495;&#x1f495;&#x1f60a; 一…

IEC104规约的秘密之九----链路层和应用层

104规约从TCP往上&#xff0c;分成链路层和应用层。 如图&#xff0c;APCI就是链路层&#xff0c;ASDU的就是应用层 我们看到报文都是68打头的&#xff0c;因为应用层报文也要交给链路层发送&#xff0c;链路层增加了开头的6个字节再进行发送。 完全用于链路层的报文每帧都只有…

好用,易用,高效,稳定 基于opencv 的 图像模板匹配 - python 实现

在定位、搜索固定界面图块时&#xff0c;经常用到模板匹配&#xff0c;opencv自带的图像模板匹配好用&#xff0c;易用&#xff0c;高效&#xff0c;稳定&#xff0c;且有多种匹配计算方式。 具体示例如下&#xff1a; 模板图&#xff1a; 待搜索图&#xff1a; 具体实现代码…