MySQL进阶-增删查改(全网最详细sql教学)

MySQL最基础的增删查改命令 MySQL增删改查 阅读详情

目录

数据库约束

约束类型概览

NOT NULL

UNIQUE

DEFAULT

PRIMARY KEY

FOREIGN KEY

表的设计

无关联

一对一

一对多

多对多

进阶增删改查

增

查

聚合查询

COUNT

SUM

AVG

MAX

MIN

GROUP BY

分组前查询

2.分组后查询

3.同时在分组前分组后筛选

联合查询

笛卡尔积

联合查询

1.求两张表的笛卡尔积:

2.过滤无效数据:

3.联合合并聚合查询

JOIN ON

内外连接

内连接

外连接

多表连接

自连接

子查询

单行子查询

多行子查询

合并查询

联合查询的一般步骤

注意事项


😘😘创作不易,多多支持嘞,如果能帮到你的话, 就点个赞吧!!!


基础目录

详细请点击目录跳转~

  • 数据库约束

  • 约束类型概览

  • not all

  • unique

  • default

  • primary key

  • foreign key

  • check

  • 表的关系(设计)

  • 一对一

  • 一对多

  • 多对多

  • 进阶增删改查

  • 新增:

  • 删除

  • 修改

  • 查询

数据库约束

数据库约束其实是一种强制让数据库内容变得更加完整的方式, 就比如说有的字段里面可以为null, 但是为了其完整性, 可以使用not null 约束他来让他变得更加完整.

约束类型概览

  1. not null

  1. unique

  1. default

  1. primary key

  1. foreign key

NOT NULL

唯一约束, 对应字段的记录不能为null

创建表的时候,可以指定某个字段不为空, 例如:

drop table if exists student;
create table student (
id int not null,
sn int,
name varchar(20)
);

对于表student的id字段,我们将其设置为not null, 如果此时插入的记录里面,如果id为null,则会插入失败:

有时候, 一些实体所抽象出来的数据, 必须有一个识别码,也可以成为sn码, 就如同人的身份证一样,用来标识这些实物或者信息, 这些sn码是必不可少的, 所以这些用来标识身份的sn码就可以设置为not null约束(当然也需要避免重复), 来避免sn码为空, 数据也就更有意义和价值了.

UNIQUE

唯一约束, 对应字段的记录不能与其他记录重复.

创建表的时候, 指定sn码为unique约束

DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT NOT NULL,
sn INT UNIQUE,
name VARCHAR(20),
);

被unique修饰的字段, 那么这个字段里面的每一条数据是唯一的,例如:

例如往里面插入:

然后插入具有相同sn码的"lisi":

发生异常:

Duplicate entry '1' for key 'sn': 键“sn”的重复条目“1”

注意: 所有的null 都遵循unique约束原则:

例如,对sn字段被unique修饰后, 连续插入两个null将不会抛出异常.

DEFAULT

默认值约束, 被default修饰的字段, 如果输入为null, 就会使用默认值来代替, 但是代替的类型必须一致

例如, 将name 设置为default约束, 如果输入name 的值没有被指定的时候, 那么就用 "unknown"代替(若name被指定为null, null不会被默认值替代)

PRIMARY KEY

主键约束, 指定字段约束为主键,能唯一的 标识表中的每一行

一个表中只能有一个primary key 主键列,被primary key 修饰的列不能为空,并且主键列的所有值都是唯一的.相当于同时被 not null 和 unique修饰

对于整形类型的主键, 一般搭配auto_increment 来使用, 插入字段的记录不给值的时候,使用表中主键的最大值 +1 .

例如:

create table student(
id int not null primary key,
sn int unique,
name varchar(20) default 'unknown'
);

表中已经有一个记录,如果继续插入:

搭配auto_increment :

插入两个记录,其中被primary key auto_increment 标记的字段传入值为null ,自动从0开始记录:

如果这个时候, 被 primary key auto_increment标记的id 传入一个指定 值的时候,然后再传空值:

结果是主键最大值2,直接跳过被设置为指定的数值,然后后面的空值会继续跟着主键最大值自增.

FOREIGN KEY

外键约束

使用语法:

foreign key 字段 references 主表

添加class表,classId为主键:

create table class(classId int primary key auto_increment, className varchar(20));

添加student表,studentId为主键:

create table student(studentId int primary key auto_increment, name varchar(20), classId int, foreign key( classId) references class( classId));

设置student中的classId字段被foreign key约束, 其约束项为class 表中的classId字段, 也就是说:

student 表中的classId 中的每一个数据, 都必须在class表中的classId 字段的记录中存在.

此时,student表被class表约束, 我们称student为class的子表, 称class 为student 的父表

如果向student里面插入或者修改的记录对应的foreign key 外键约束的字段数据在对应父表中不存在的话, 那么就会插入失败.

相反,如果要删除class表中的数据, 如果对应约束项的记录已经在子表中存在, 那么删除就会失败

更直观的来看个例子:

创建两个表:

商品表(Id, name, price....)

订单表(orderId, userId, goodsId, time.....)

其中商品id被外键约束, 其约束的内容为订单表中的goodsId, 用MySQL的语言就是:

create table orderList (orderId int primary key auto_increment , userId int, goodsId int, foreign key(id) references goodsList(Id));

假如这个商品表需要有一个商品下架功能, 但是, 这里面的id又有外键约束, 如果要在商品表中删除一个商品, 但是他的id 在订单表中还在被使用, 那么此时就无法直接删除, 那么这个功能该如何实现??

解决办法:给商品表加一个列字段, 用来表示该商品是否被下架,通过update 来修改这个字段, 此时外界约束就不会收到影响, 订单可以继续实时查看.

表的设计

如何设计表?

  1. 了解实际信息体的"实体"

  1. 明确实体之间的关系

  1. 按照实体的关系带入到表的体系当中.

无关联

各表之间没有关系, 只需要根据实体的个性 自行设计即可

一对一

例如, 一个学生表中 有许多关于学生的字段, 这些字段可以是姓名, 年龄等, 同时还存在一个账号表, 这两张表有很直接的关联, 那就是一个账号只能供一个学生使用, 同时 一个学生也只能拥有一个账号.

这种一对一的, 就可以直接设计成一张表:

student -- account ( studentId, studentName, studentAccount);

此外,更推荐将其设计成两个表, 然后让他们相互关联, 可以使用studentId进行关联, 也可以使用account进行关联.

一对多

一个班级可以包含多个学生, 但是一个学生只能存在于一个班级, 这就形成了一对多或者多对一的情况

student (studentID, name, age ....)
class (classID, className, studentList(每个记录为一个学生数据 集合 ) )

student表包含学生的基本数据, class 包含班级的数据, 同时也包含着具有的学生列表, 但是学生列表有很多行学生的数据, 不可能在一行里面显示, 但是使用数组的形式存放这些学生的记录的方法在MySQL是不支持的. 但是有些数据库支持以数组的形式存放, 比如redis ,

此外还可以使用外键约束来设计这个一对多的表:

多对多

例如, 一个学生可以上多个课程, 一个课程也可以有多个学生:

studentList (studentID, name );
course ( courseID, courseName );

将他们两个关联起来:

student_courseList (studentID, courseID );

进阶增删改查

增

与前面的直接使用insert into 表名 values (value1, value2, value3, ....)了不同的是, 这里的新增是直接插入查询结果. ;例如:

这里创建两张学生表:

student (id int, name varchar(20))
student2 (id int, name varchar(20))

student表中插入三个数据:

insert into student values (1, "张三"),(2, "李四"),(3, "王八");

如果这个时候, 我想把student表中的数据拷贝到student2 当中去, 使用将values改成select查询语句:

insert into student2 select * from student;

注意 :这并不代表任何两个表之间都可以这样操作, 查询的结果得到的列数, 对应字段的数据类型必须一样( 列名可以不一样, 但是类型必须一致 )

查

聚合查询

在查询的过程中, 对表的行与行之间进行一定的运算, 这种查询需要依赖SQL提供的库函数. 常见的有统计总数, 计算平均值等操作, 如下表:

函数

说明

COUNT([DISTINCT] exam)

返回查询到的数据的数量

SUM([DISTINCT] exam)

返回查询到的数据的总和

AVG([DISTINCT] exam)

返回查询到的数据的平均值

MAX([DISTINCT] exam)

返回查询到的数据的最大值

MIN([DISTINCT] exam)

返回查询到的数据的最小值

COUNT

新建一张学生表 :

student (id , name)
create table student(id int, name varchar(20));

然后向里面插入四个数据如下:

然后使用count, 语句如下:

select count(*) from student;
select count(id) from student;
select count(name) from student;

这个操作可以理解为, 先执行select* 操作去查询所有数据, 然后去计算select* 查询结果有多少行.例如上面的select count(id) 和 select count(*) 操作, 但是如果数据里面遇到的记录为NULL, 那么这一行记录是不会被count计算进去的, 就例如select count(name) .

如果你不想将NULL指定为有效行数, 那么就可以直接使用count来指定列查询, 如果你认为NULL也为有效数据, 那么你可以使用count(*) 来进行查询.

SUM

sum求和只是针对数字列有效, 如果是字符串或者其他类型的列, 将无法计算

例如我们创建这样的一张表:

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)
(8,'鲁班七号', null, null, null);

使用sum函数来对所有记录的chinese 字段进行求和:

select sum(chinese) from exam_result;

说明: 如果里面数据为null, sum会自动跳过结果为null的数据.

如果对name这种非数字类型进行sum操作:

select sum(name) from exam_result;

结果显示:

1 row in set, 8 warnings (0.00 sec)

使用show warnings 来查看警告内容:

show warnings;

Truncated incorrect DOUBLE value : 当前类型向double类型转换失败.

AVG

计算平均数据,计算出来的数据为double类型

还是这个数据表:

对其chinese 的成绩进行AVG计算平均分操作:

select avg(chinese) from exam_result;

也可以搭配表达式使用: 例如求总分的成绩 :

select avg( chinese + math + english) from exam_result;

也可以使用as来对其命名:

select avg( chinese + math + english) as totalAVG from exam_result;

下面max和min的例子同样使用如下表格:

MAX

查询表中指定列的最大值, 例如查询chinese的最大值:

select max(chinese) from exam_result;
MIN

同MAX, 这里不做过多介绍.

GROUP BY

通常搭配聚合函数,select 语句中使用group by 可以对指定列进行分组查询,

例如这里创建一个员工表,如下:

create table emp (id int, name varchar(20), role varchar(20), salary int);

插入七条记录:

如何求出每个岗位的平均工资?

这个时候就需要使用分组查询了, 也就是group by操作.

使用group by语句, 可以让指定的列里面, 相同的值分到同一个组当中:

要求每个岗位的平均工资, 就需要指定岗位的类型来进行分组

然后对其进行平均工资计算:

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

  1. 分组前查询

使用where.

例如求每个岗位的平均值, 但是不包括"张三".

select role, avg(salary) from emp where name != "张三" group by role;
2.分组后查询

使用having关键字

例如, 求所有岗位的平均薪资, 但是不包括老板:

select role, avg(salary) from emp group by having role != "老板";
3.同时在分组前分组后筛选

使用where在分组前筛选, 同时使用having关键字在分组后筛选.

select role, avg(salary) from emp where name != "张三" group by role having role != "老板";

联合查询

也成为多表查询, 这种多表查询依赖于一个笛卡尔积的前提.

笛卡尔积

定义:设A,B为集合, 用A中元素为第一元素, B中的元素为第二元素, 构成有序数对, 所有这样的有序数对组成的集合称作A和B的笛卡尔积,记作AXB = {<x,y>| xA ^ y B}.

例如 A = {a, b}, B = {0, 1, 2}.

AXB = {<a,0>,<a,1>,<a,2>,<b,0>,<b,1>,<,2>}.

有序数对: 由两个元素x和y按一定的顺序成的二元组成为一个有序对, 记作<x,y>.

存在两张表:

studentList (studentID, name, class)
classList (classID, className )

里面存在着如上图的数据

让两张表进行笛卡尔积运行算,形成一张新表如下:

resultList (studentID, name, classID, className);

新的表的数据如图: 班级表里面的数据依次对学生表里面的每一个记录进行组合的一个排列

这份结果表, 就是学生表和班级表的笛卡尔积结果.

笛卡尔积出来的表格有很多数据,但并不是所有的数据都是有效数据, 就比如说上表数据中的记录:

这些记录的左边的班级ID和右边的班级ID不相同, 是没有意义的数据.

当我们去掉这些数据之后, 笛卡尔积的结果表就是两个表合并的结果.

要去掉这些数据, 可以增加where条件语句, 来过滤掉这些没有意义的数据.



联合查询

下面创建和插入以下表格和数据:

drop table if exists classes;
drop table if exists student;
drop table if exists course;
drop table if exists score;

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 varchar(20),  name varchar(20), qq_mail varchar(20) ,
        classes_id int);

create table course(id int primary key auto_increment, name varchar(20));

create table score(score decimal(3, 1), student_id int, course_id int);

insert into classes(name, `desc`) values 
('计算机系2019级1班', '学习了计算机原理、C和Java语言、数据结构和算法'),
('中文系2019级3班','学习了中国传统文学'),
('自动化2019级5班','学习了机械自动化');

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),
-- tellme
(80, 7, 2),(92, 7, 6);

四张表的记录显示如下:

classes

student

course

score

各表之间的关联如下:

student和classes >一对多

student和course > 多对多关系

score相当于一张关联表, 起着关联student 和 course 的作用, 从图中可以明显看出来

我们需要实现以下功能:

查询"许仙"同学的成绩和其他相关信息

由于许仙同学的成绩和相关信息,存在于两张中表,就需要联合查询了, 首先我们需要score和student两张表进行笛卡尔积运算, 然后过滤掉无效信息

1.求两张表的笛卡尔积:
select * from student, score;
2.过滤无效数据:

去掉id 和student_id不匹配的情况,使用where语句

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

(此处通过表名.列名的形式来指定列, 因为如果两张表中有重名的列则会存在指定不明确的问题)

得到下表,一张学生id能匹配正确的表格.

在过滤掉无效信息后, 还需要指定为许仙同学的数据:

select * from student, score where student.id = score.student_id and name = "许仙";

于是就得到了我们所需要的许仙的成绩和相关信息表了.

也可以过滤掉除了name和score外的其他信息:

3.联合合并聚合查询

查询所有同学的总成绩, 及其个人信息

首先求笛卡尔积, 然后过滤掉无效数据

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

这个里面已经有了学神搞得各科成绩,但是我们需要的是总成绩 :

所以我们需要根据学生的名字或者学号进行分组(group by), 然后再针对分组进行求和:

select name, sum(score.score) from student, score where student.id = score.student_id group by student.id;

JOIN ON

有以下语句

select * from student, score;

此操作为获取student和score的笛卡尔积表, student和score中间用","逗号连接, 但是除了用逗号, 还可以使用关键字join, 也可以完成笛卡尔积表的操作:

select * from student join score;

不同于使用逗号获取的笛卡尔积表, join的条件筛选需要使用on关键字,而不是where

select student.name, score.score from student join score on student.id = score.student_id and student.name = "许仙";

以上这两种方法效果是一样的

内外连接

我们上面所说的例子, 都是两张表的记录都能一一对应, 但是在实际操作当中, 肯定存在数据量不一样的两张表, 或者是记录不能一一对应的两张表. 这种情况进行笛卡尔积, 没有一一对应的数据和其他数据进行笛卡尔积计算, 就必定只能产生无效数据,或者没有意义的数据, 这个时候不仅浪费空间,而且浪费性能,所以就要指定一个表为主的显示模式.

例如:

内连接

如果两张表的记录不一一对应, 这个时候使用内连接来连接两个表,两张表里面都有相互一一对应的记录的记录进行笛卡尔积.如 上图:将会忽略 student中id = 4, 和score表中student_id = 3 的记录.

内连接

select * from 表1, 表2 where 条件1 and 条件2;

语法如上

外连接

外连接分两种, 一种是左外连接, 一种是右外连接.顾名思义, 左外连接就是以左表为基础, 与表2进行笛卡尔积计算. 如果表1中的数据没有与表2中与之对应的, 那么这个数据任然后存在于生成的临时表, 对于找不到的字段记录, 一般使用NULL填写:

例如: 存在两张表

使用左连接来进行笛卡尔积:

select name, score from student left join score on student.id = score.student_id;

右连接同理:

select name, score from student right join score on student.id = score.student_id;
多表连接

使用join语法:

select * from 表1 join 表2 on 条件1 join 表3 on 条件2......;

执行逻辑为: 表1 先和 表2 进行笛卡尔积计算然后根据条件1筛选有效数据, 随后让表1和表2 生成的笛卡尔积表和表3进行笛卡尔积, 然后一句条件2进行有效数据的筛选. 根据情况进行左外连接或者右外连接或者是内连接

自连接

自连接是一种特殊情况的特殊操作, 如何理解? 也就是一张表, 自己和自己进行笛卡尔积表计算. 自己和自己笛卡尔积有什么用处呢??

首先存在一张表:

将这张表进行自连接:

select * from student, student;

如果直接这样写, 会出现warnings:

因为生成的临时表, 系统不知道对应的字段为那个表的,需要使用 as 来指定这两张表的别名加以区分, 同时过滤掉无效数据:

select * from student as student1, student as student2 where student1.id = student2.id;

此时 想要进行行与行之间的条件查询, 现在转到一个列来了

SQL中的条件查询, 都是指定列进行查询, 他没办法进行行与行之间的条件查询

子查询

多个查询语句合并成一个.

单行子查询

例如有student表, 如下:

想查询 许仙的同班同学, 该如何查询? 首先使用条件查询找到许仙所在的班级, 然后通过班级搜索在这个班级里面的同学:

select class_id from student where name = "许仙";

得知许仙同学的班级号为1后, 开始查看class_id 为1 的班级, 来搜寻他的同班同学:

select name, class_id from student where class_id = 1;

子查询该如何进行? 也就是将这个class_id = 1 的这个1 替换为上面第一个的查询语句:

select name, class_id from student where class_id = (select class_id from student where name = "许仙");

这种子查询虽然语言简便, 但是不方便理解, 当有多层次的子查询嵌套的时候, 非常影响SQL语句的可行性.

多行子查询

有以下两张表:

要求: 查询"语文" 和"英文"课程的成绩信息

  1. 首先查询英文和语文的课程id,

select id from course where name = "英文" or name = "语文";

2.根据课程id到student表中去查询成绩

select * from score where course_id in(4,6);

使用多行子查询, 合并为一句:

select * from score where course_id in (select id from course where name = "语文" or name = "英文");

具有相同的效果

合并查询

在实际操作当中, 为了合并多个select语句的执行结果,可以使用集合操作符union.

有如下表:

要求查询:课程id 小于3 或者课程名称为 英文的记录

  • union

select * from course where id < 3 union select * from course where name = "英文";
  • union all

union all 会去重

联合查询的一般步骤
  1. 分析清楚需求,所设计到的信息都在哪些表中

  1. 针对分析出来的这些表,来进行笛卡尔积

  1. 根据实际情况(关联字段), 筛选出有效数据

  1. 进一步加强条件查询, 查询更加精确的记录

  1. 针对需要对表进行简化

注意事项

在实际操作当中我们应该慎重使用

联合查询的基础是笛卡尔积,笛卡尔积是把两个表进行重组, 例如第一张表的记录量为20, 第二张表记录量为30, 那么这两张表格进行笛卡尔积计算, 那么新的笛卡尔积表的记录量就会达到20 x 30 = 600 条, 因为其中还包含了许多无效数据需要我们去主动过滤, 但是当数据量来到千万, 甚至几亿的级别的时候, 那么笛卡尔积的操作就会产生大量的数据, 这些数据可能是当前外存无法存储的.

数据量大的时候, 笛卡尔积的开销是非常大的, 会对机器的性能造成很大的影响.

MySql数据库增删改查操作 本文从创建数据库、创建数据表、删除数据库/表,增删改查数据表操作一步一步进行讲述和实战操作,教程详细,一定让你有所收获。 阅读详情

相关推荐

MySQL常用增删改查语法命令

与 DELETE 不同的是,TRUNCATE 只能删除表中的全部数据,而不能通过 WHERE 子句指定条件来删除部分数据。语法:insert into 表名 values(值1,值2,值3),(值4,值5,值6),(值7,值8,值9)语法:UPDATE 表名 SET 字段名= 值 WHERE 字段名 in ('值1','值2','值3');语法:INSERT INTO 表名(列名1,列名2,...) values(值1,值2,...)语法:INSERT INTO 表名 SET 列名 = 值,列名 = 值。

m0_58394647的博客 1563

MySQL:基础操作(增删查改)

本篇博客详细介绍了MySQL数据库增删改查的基础操作,也有使用示例帮助理解

一名还在努力学习技术的程序员的博客 8620

Linux系统centos7安装网卡驱动

有时候我们装完Centos或Ubuntu系统会发现没有网卡信息,说明网卡驱动不配置,所以我们要重新安装。 首先去服务器主板官网下载网卡驱动,注意32位和64位。 先查看网卡型号 lspci | grep -i ethernet 我的网卡型号是 00:1f.6 Ethernet controller: Intel Corporation Device 0d55。 网上一找,压根没找到这型号的网卡,别说驱动了。怀着试一试的心态,就安装i219-v系的网卡驱动,还别说,成功了。 针对i21...

wshc18的博客 2万+

MySQL增删改查(万字详解 基础+进阶)

万字详解,一文掌握mysql关于增删改查等常用知识点.

qq_54469537的博客 7888

手把手搭建你的第一个OCT仿真模型:用Python和光学仿真库重现A-SCAN信号

本文详细介绍了如何使用Python和光学仿真库搭建OCT仿真模型,重现A-SCAN信号。从环境配置、干涉仪建模到信号处理全流程,手把手教你实现光学相干层析成像的核心技术。通过代码示例和性能优化技巧,帮助开发者深入理解OCT原理并应用于医疗诊断等领域。

weixin_42562079的博客 240

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

MySQL数据库常用命令汇总(全网最全)

进入数据库,在win系统下,打开cmd,切换用户权限,进入root。

自动化测试技术栈 5056

M1/M2 Mac用户看过来:不装VirtualBox,用PD虚拟机也能跑ENSP的保姆级教程

本文为M1/M2 Mac用户提供了一份不依赖VirtualBox,使用Parallels Desktop虚拟机运行ENSP的详细指南。通过ARM架构的Win10镜像选择、组件替代方案和网络配置优化,实现ENSP核心功能的高效运行,特别适合网络工程师在苹果芯片设备上进行网络模拟。

weixin_28683065的博客 411

【一步到位】全网最全的MySQL数据库讲解

SQL其实是一个比较古老的编程语言,辈分跟c语言差不多,比java早多了。

2401_87735879的博客 954

从隐式求解器到显式求解器:COMSOL接触仿真中的求解策略对比与选择

本文深度解析了COMSOL中隐式与显式求解器在接触仿真中的应用与选择策略。针对非线性接触问题的核心挑战,详细对比了两种求解器的数学框架、优化技术及适用场景,并提供了参数调优和调试技巧,帮助工程师高效解决接触仿真中的收敛问题。

weixin_28347369的博客 682

学Simulink——基于Simulink的Buck-Boost变换器双闭环PI+抗饱和设计建模示例

本文详细介绍了基于Simulink的非反相Buck-Boost变换器双闭环控制设计方法。针对Buck-Boost变换器特有的右半平面零点(RHPZ)和控制挑战,提出了电压-电流双闭环PI控制架构,并集成抗积分饱和机制。通过Simulink建模,实现了主电路、电流内环PI、电压外环PI、PWM及占空比限幅等模块的搭建,验证了在输入电压跌落(20V→10V)和负载突变(2A→4A)等场景下的稳定性能。仿真结果表明,输出电压波动小于0.35V,恢复时间快于1ms,电感电流有效限幅。文章还讨论了工程实践要点和扩展方

xiaoheshang_123的博客 318

(Mysql)系统性带你认识 Mysql 数据库!本文带你了解数据库的概念与基本对表(数据库)操作的SQL语句!快来完成从0到1的飞越吧!

好像从来没有详细的讲过SQL语句啊!不过无妨!本专栏带你使用Mysql数据库、全方面了解SQL语句!专栏第一篇,先带你了解什么是数据库!以及SQL语句对表格、数据库的操作!

拔高、提升、创新! 924

【考试大纲】中级多媒体应用设计师考试大纲

中级多媒体应用设计师考试大纲

邓邓子的博客 382

冬季实战营 动手实战-MySQL数据库快速部署实践 领鼠标 云小宝

云起实验室 冬季训练营(1.17-3.8) 可补卡!!!领云小宝 五期冬季实战,从入门到进阶,以最佳实践帮助开发者,快速云上实践,云上学习。 体验有礼,点击前往:https://developer.aliyun.com/adc/series/wintercamp 冬季实战营第一期:从零到一上手玩转云服务器 单期任务奖励:实战营技能证书+定制鼠标 三期任务奖励:全网首发冬奥限量版云小宝 五期任务奖励:冬季实战营奖牌+定制书包+无影试用 体验简介 本实验提供一个Linux系统。首先,安装mysql;然后,执.

gangyikeji的博客 232

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8899

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

视频教程-跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL-Python

跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL 教...

weixin_32135861的博客 286

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Mysqlt速成笔记 (全网最全的知识点涵盖)

/启动服务brew services start mysql //开机自动启动//这个启动的是服务端//使用客户端来链接服务端-u root 表示使用 root 用户进行链接-p 表示使用密码登入用来查看数据库可以使用 use 命令切换到数据库show table#查看数据库中有哪些表#用来查看tables_priv表中数据mysqlsh#启动mysql服务\help#查看帮助信息链接本地msql服务\use 使用数据库。

2303_79299383的博客 596

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Java基础开发】基于 Java Swing +MySQL + JDBC 版实现图书管理系统

本文介绍了一个基于Java Swing和MySQL的桌面端图书管理系统。系统采用模块化设计,实现了图书信息的增删查改、多条件组合检索等功能。主要技术包括Java SE开发语言、Swing GUI框架、MySQL数据库和JDBC连接技术,支持ISBN唯一性约束和数据校验。系统界面简洁直观,操作便捷高效,通过异常处理和自定义弹窗提升用户体验。功能演示包括图书添加、查询(按书名/作者/ISBN)和删除操作,数据库实时同步更新。代码示例展示了数据库配置、表初始化和GUI界面实现,为开发类似信息管理系统提供了参考。

A_aspectJ的博客 1094

MySQL又来撩你了!

MySQL 是目前互联网中热门的数据库,因在业务开发中的重要性,备受企业“偏爱”。大部分开发人员每天都在跟它“较劲儿”,觉得对它足够了解,但到面试往往又懵了。怎样选择正确的存储引擎?插入...

ITMuch的专栏 284

跟着王进老师学python之django篇_跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL语句...

适合人群:1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友;2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友;3、有Django基础,但是想学习企业级项目实战的朋友;4、喜欢 Django 框架并想深入研究的朋友;5、有一定的数据库基础课程目标:本系列课程是从零基础开始并深入讲解Django,最终学习使用Dja...

weixin_39950764的博客 184

被连问MySQL索引,慌了!

MySQL 是目前互联网中热门的数据库,因在业务开发中的重要性,备受企业“偏爱”。大部分开发人员每天都在跟它“较劲儿”,觉得对它足够了解,但到面试往往又懵了。怎样选择正确的存储引擎?插入...

weixin_44421461的博客 152

跟着王进老师学python第二季_跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL...

适合人群:1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友;2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友;3、有Django基础,但是想学习企业级项目实战的朋友;4、喜欢 Django 框架并想深入研究的朋友;5、有一定的数据库基础课程目标:本系列课程是从零基础开始并深入讲解Django,最终学会使用Dja...

weixin_39854288的博客 143

跟着王进老师学python第二季_跟着王进老师学Python之Django篇第二季:数据库开发之原生SQL视频教程...

适合人群:1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web框架的朋友;2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友;3、有Django基础,但是想学习企业级项目实战的朋友;4、喜欢 Django 框架并想深入研究的朋友;5、有一定的数据库基础课程目标:本系列课程是从零基础开始并深入讲解Django,最终学会使用Dja...

weixin_39995764的博客 136

跟着王进老师学开发第一季,王进的个人网站

在学习完本系列中所有的课程后,从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发,让你升职加薪不是梦!本季课程介绍了Django的原生SQL语句开发,包含了:Centos环境下mysql的部署、mysql创建数据库和表、mysql数据库的增删查改、数据库引擎pymysql的介绍,pymysql的部署和使用,项目实战:学生信息管理系统,使用事务提交数据。2、学习完“跟着王进老师学开发Python篇”“跟着王进老师学Web前端开发”的朋友;

小发猫 363

Java学习路线图完整版(适合零基础自学)

从0到1实现一套完整的企业级微服务架构,整个架构基于SpringBoot和SpringCloud Alibaba基础之上,整合了Redis、Elasticsearch、RocketMQ、SpringSecurity、Oauth2等时下主流的一些技术框架与服务,灵活运用多种设计模式,非常完整的呈现出来企业中项目开发架构的设计与实现过程。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

关注我!带你一路 "狂飙" 到底! 2万+
上一篇: MySQL数据库操作
下一篇: Java的Integer和int有什么区别?
吴迪大肥牛
博客等级 码龄4年 858粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴迪大肥牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值