数据库day(03)事务、约束、多表联查

智慧工地算法视频分析服务器区域入侵检测AI视频分析技术在煤矿的实战应用 通过实时分析和处理井下视频资料,智慧矿山算法视频分析服务器不仅能够及时发现并预警人员违规行为和设备异常状况,还能够通过智能分析预防潜在的安全风险,从而显著提高煤矿的安全管理水平和生产效率。 阅读详情

事务

概念:数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。

特性:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中如果发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

事务隔离分为不同级别,包括

读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
读提交(read committed) Oracle默认的隔离级别
可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发

查询mysql的隔离级别

在默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务。如果需要在一个事务中包含多条SQL语句,那么需要手动开启事务和结束事务。

  • 开启事务:start transaction;
  • 结束事务:commit(提交事务)或rollback(回滚事务) 

约束:

默认约束:default

CREATE TABLE test01(
id INT PRIMARY KEY AUTO_INCREMENT,
sex CHAR(3) DEFAULT '男'
) 

检查约束:check

CREATE TABLE tb_user (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, #自增主键
NAME VARCHAR(50) NOT NULL UNIQUE, #非空,唯一索引
sex CHAR(2) DEFAULT '男', #默认值
age INT,
CHECK (age>0 AND age<=200) 
);

外键约束:子表里主键的值必须来自于主表,主表里的记录想要删除时,必须保证子表没有引用

CREATE TABLE tb_user(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
age INT,
phone VARCHAR(11)
)
CREATE TABLE tb_user_address(
user_id INT PRIMARY KEY,
daaress VARCHAR(100),
FOREIGN KEY(user_id) REFERENCES tb_user(id)
)

表关联 association

表的关系分为四种

一对一 one to one QQ和QQ邮箱,员工和员工编号

一对多 one to many 最常见,部门和员工,用户和订单

多对一 many to one 一对多反过来,员工和部门,订单和用户

多对多 many to many 老师和学生,老师和课程

 多表联查:join,笛卡尔积,子查询

courses表:

scores表:

 students表:

teachers表:

 

join,笛卡尔积查询练习:

#统计陈冰老师能讲的课程
SELECT tname,cname FROM courses JOIN teachers
ON teachers.tno=courses.tno
AND teachers.tname="陈冰"
#或者:
SELECT tname,cname FROM courses ,teachers
WHERE teachers.tno=courses.tno
AND teachers.tname="陈冰"

子查询:当子查询 查询出的结果不止一个时,需要用in连接

SELECT tname FROM teachers WHERE tno=(
SELECT tno FROM courses WHERE cname="高等数学"
)
//三种方式查询可以教高等数学的老师
SELECT tname FROM teachers WHERE tno=(
SELECT tno FROM courses WHERE cname="高等数学"
)

SELECT teachers.tname FROM courses JOIN teachers
ON courses.tno=teachers.tno
WHERE courses.cname="高等数学"

SELECT teachers.tname FROM courses ,teachers
WHERE courses.tno=teachers.tno
AND courses.cname="高等数学"

课程回顾:

  1. 数据库相关SQL
  • 查询所有 show databases;
  • 创建 create database db1 charset=utf8/gbk;
  • 查看数据库信息: show create database db1;
  • 删除数据库: drop database db1;
  • 使用: use db1;
  1. 表相关SQL
  • 创建表: create table t1(name varchar(20),age int) charset=utf8/gbk;
  • 查询所有: show tables;
  • 查询表信息: show create table t1;
  • 表字段: desc t1; 
  • 删除表: drop table t1;
  • 修改表名: rename table t1 to t2;
  • 添加表字段: alter table t1 add gender varchar(5) first/after xxx;
  • 删除表字段: alter table t1 drop gender;
  • 修改表字段: alter table t1 change 原名 新名 新类型;
  1. 数据相关SQL
  • 插入: insert into t1(字段1名,字段2名) values(值1,值2),(值1,值2),(值1,值2);
  • 查询: select name,age from t1 where 条件;
  • 修改: update t1 set xxx=xxx,xxx=xxx where 条件;
  • 删除: delete from t1 where 条件;

综合练习题2

  1. 创建数据库newdb1, 字符集utf8并使用 create database newdb1 charset=utf8; use newdb1;
  2. 在数据库中创建员工表emp 字段:id,name,sal(工资),deptId(部门id) 字符集utf8 create table emp(id int,name varchar(50),sal int,deptId int)charset=utf8;
  3. 创建部门表dept 字段:id,name,loc(部门地址) 字符集utf8 create table dept(id int,name varchar(20),loc varchar(50))charset=utf8;
  4. 部门表插入以下数据: 1 神仙部 天庭 2 妖怪部 盘丝洞 insert into dept values(1,'神仙部','天庭'),(2,'妖怪部','盘丝洞');
  5. 员工表插入一下数据: 1 悟空 5000 1 , 2 八戒 2000 1 , 3 蜘蛛精 8000 2 , 4 白骨精 9000 2 insert into emp values(1,'悟空',5000,1),(2,'八戒',2000,1),(3,'蜘蛛精',8000,2),(4,'白骨精',9000,2);
  6. 查询工资6000以下的员工姓名和工资 select name,sal from emp where sal<6000;
  7. 修改神仙部的名字为取经部
    update dept set name='取经部' where name='神仙部';
  8. 给员工添加奖金comm字段 alter table emp add comm int;
  9. 修改员工表中部门id为1的 奖金为500 update emp set comm=500 where deptId=1;
  10. 把取经部的地址改成五台山 update dept set loc="五台山" where name='取经部';
  11. 修改奖金字段为性别gender字段 类型为varchar alter table emp change comm gender varchar(5);
  12. 修改孙悟空和猪八戒性别为男
    update emp set gender='男' where deptId=1;
  13. 删除没有性别的员工(null不能用= 要用is) delete from emp where gender is null;
  14. 删除性别字段
    alter table emp drop gender;
  15. 删除表 和 删除数据库 drop table emp; drop table dept; drop database newdb1; 

SQL分类

  • DDL: 数据定义语言, 包括: 数据库向和表相关的SQL
  • DML: 数据操作语言, 包括: 增删改查 
  • DQL: 数据查询语言, 只包括查询 select 
  • TCL: 事务控制语言, 包含和事务相关的内容 
  • DCL: 数据控制语言, 包含用户管理,权限分配相关SQL 

*.sql 批处理文件

  • 把老师的emp.zip解压出来得到一个emp.sql文件, 把这个文件放到某个盘的根目录 比如 D盘根目录, 然后在命令行执行以下指令
  • 格式: source 路径; 举例: source d:/emp.sql; 
  • 测试: show databases; 检查里面是否多了一个empdb; show tables; 会出现两个表 emp 和dept select * from emp; 检查里面的数据
  • 如果出现乱码执行 set names utf8;

数据类型

  • 整数: int(m)和bigint(m) , bigint相当于Java中的long, m代表显示长度,m=5 存18 得到00018, 需要结合zerofill关键字使用 举例: create table t1(age int(5) zerofill); insert into t1 values(18); select * from t1;
  • 浮点数: double(m,d) m代表总长度, d代表小数长度 m=5,d=3 23.123 举例: create table t2(price double(5,3)); insert into t2 values(54.321); insert into t2 values(54.332211); insert into t2 values(5433.2211); //会报错或出现99.999 
  • 字符串:
    • char(m): 固定长度, m=5 存"abc" 占5个字符长度, 执行效率略高,当存储内容长度固定时使用,比如:性别 m最大值255
    • varchar(m):可变长度, m=5 存"abc" 占3个字符长度,更节省存储空间,m最大值65535, 长度在255以内的建议使用 
    • text(m):可变长度, m最大值65535 , 建议长度大于255时使用 
  • 日期:
    • date:保存年月日
    • time:保存时分秒
    • datetime:保存年月日时分秒,默认值null
    • timestamp(时间戳举例1970年1月1日的毫秒数):保存年月日时分秒,默认值为当前系统时间 测试: create table t3(t1 date,t2 time,t3 datetime,t4 timestamp); insert into t3 values("2021-11-22","10:38:20",null,null); insert into t3 values(null,null,"2021-11-22 10:38:20",null); 

主键约束

  • 主键: 表示数据唯一性的字段称为主键 
  • 约束: 创建表时,给表字段添加的限制条件 
  • 主键约束:限制主键的值 唯一且非空.
  • 举例: create table t4(id int primary key,name varchar(20)); insert into t4 values(1,'aaa'); insert into t4 values(1,'bbb'); 报错 重复数据 insert into t4 values(null,'ccc'); 报错 不能为null

主键约束+自增

  • 自增规则:从历史最大值+1
    create table t5(id int primary key auto_increment,name varchar(20)); insert into t5 values(null,'aaa'); insert into t5 values(null,'bbb'); insert into t5 values(10,'ccc'); insert into t5 values(null,'ddd'); delete from t5 where id>=10; insert into t5 values(null,'eee');
  • truncate table t5; //把表删除 并重新创建 此时计数器才会清零 

去重distinct

  1. 查询员工表中有哪几种不同的工作? select distinct job from emp;
  2. 查询员工表中有哪几个不同的部门id?
    select distinct dept_id from emp;

is null 和 is not null

  1. 查询没有上级领导的员工姓名 select name from emp where manager is null;
  2. 查询有上级领导的员工姓名 select name from emp where manager is not null; 

and和or

  • 多个条件同时满足时使用and
  • 多个条件满足一个就可以时 使用or
  1. 查询1号部门工资高于2000的员工信息 select * from emp where dept_id=1 and sal>2000;
  2. 查询3号部门的员工或者工资等于5000的员工信息 select * from emp where dept_id=3 or sal=5000;
  3. 查询孙悟空和猪八戒的员工信息 select * from emp where name="孙悟空" or name="猪八戒";

比较运算符 > < >= <= = !=和<>

  1. 查询不是程序员的姓名和工资 select name,sal from emp where job!="程序员"; select name,sal from emp where job<>"程序员";

两者之间between x and y 包含x和y

  1. 查询工资在2000到3000之间的员工信息 select * from emp where sal between 2000 and 3000; select * from emp where sal not between 2000 and 3000; 范围取反

in关键字

  • 当查询某个字段的值为多个值的时候使用in
  1. 查询工资为3000,1500,5000的员工信息 select * from emp where sal=3000 or sal=1500 or sal=5000; select * from emp where sal in(3000,1500,5000);
  2. 查询孙悟空,猪八戒和白骨精的信息 select * from emp where name in('孙悟空','猪八戒','白骨精');

综合练习题

  1. 查询1号部门有哪几种不同的工作? select distinct job from emp where dept_id=1; 
  2. 查询1号部门中有上级领导的员工信息 select * from emp where dept_id=1 and manager is not null;
  3. 查询工作是程序员,销售和人事的员工信息 select * from emp where job in('程序员','销售','人事');
  4. 查询有奖金的员工信息
    select * from emp where comm>0;

模糊查询like

  • %: 代表0或多个未知字符
  • _:代表1个未知字符
  • 举例: 以x开头 x% 以x结尾 %x 包含x %x% 第二个字符是x  x% 以x开头以y结尾 x%y 第二个是x倒数第三个是y  x%y
  1. 查询姓孙员工信息
    select * from emp where name like "孙%";
  2. 查询名字以精结尾的员工姓名 select name from emp where name like "%精";
  3. 查询工作第二个字是售的员工姓名和工作 select name,job from emp where job like "_售%";
  4. 查询名字中包含僧并且工资大于2000的员工姓名和工资 select name,sal from emp where name like "%僧%" and sal>2000;

排序 order by

  • 格式: order by 字段名 asc(默认升序)/desc降序;
  1. 查询员工姓名和工资,按照工资升序 select name,sal from emp order by sal;
  2. 查询员工姓名和工资,按照工资降序 select name,sal from emp order by sal desc;
  3. 查询1号部门的姓名和工资并且按照工资降序排序 select name,sal from emp where dept_id=1 order by sal desc;
  4. 查询每个员工的姓名,工资和部门id按照部门id升序排序,如果部门id相同则按照工资降序排序 select name,sal,dept_id from emp order by dept_id,sal desc;

分页查询 limit

  • 格式: limit 跳过的条数,请求的条数(每页的条数)
  • 举例: 跳过的条数=(请求页数-1)*每页条数 第一页的5条数据 limit 0,5 第一页的10条 limit 0,10 第2页的10条 limit 10,10 第5页的10条 limit 40,10 第8页的9条 limit 63,9
    第15页的3条 limit 42,3
  1. 查询工资最高的前三个人的信息 select * from emp order by sal desc limit 0,3;
  2. 查询员工的id和名字,请求第二页的3条数据 select id,name from emp limit 3,3;
  3. 查询工资最低的员工信息
    select * from emp order by sal limit 0,1;

综合练习题

  1. 查询员工表中3号部门工资高于1500的员工信息 select * from emp where dept_id=3 and sal>1500;
  2. 查询2号部门员工或者没有领导的员工信息 select * from emp where dept_id=2 or manager is null;
  3. 查询有领导的员工姓名,工资按照工资降序排序 select name,sal from emp where manager is not null order by sal desc;
  4. 查询2号和3号部门的员工姓名和入职日期hiredate 按照入职日期降序排序 select name,hiredate from emp where dept_id in(2,3) order by hiredate desc;
  5. 查询名字中包含僧和包含精的员工姓名 select name from emp where name like "%僧%" or name like "%精%";
  6. 查询工资高于2000的工作有哪几种? select distinct job from emp where sal>2000;
  7. 查询工资升序第4页的2条数据 select * from emp order by sal limit 6,2;

别名

select name from emp; select name as "名字" from emp; select name "名字" from emp; select name 名字 from emp;

数值计算

  1. 查询每个员工的姓名,工资和年终奖(3个月的工资) select name,sal,3*sal 年终奖 from emp;
  2. 给3号部门的员工每人涨薪5块钱
    update emp set sal=sal+5 where dept_id=3; 

聚合函数

  • 可以对查询的多条数据进行统计查询, 统计方式包括: 求平均值,最大值,最小值,求和,计数
  1. 平均值avg(字段名)
  • 查询2号部门的平均工资 select avg(sal) from emp where dept_id=2;
  • 查询销售的平均工资 select avg(sal) from emp where job="销售";
  1. 最大值max(字段名)
  • 查询1号部门的最高工资 select max(sal) from emp where dept_id=1;
  1. 最小值min(字段名)
  • 查询1号部门的最低工资 select min(sal) from emp where dept_id=1;
  1. 求和sum(字段名)
  • 查询1号部门的工资总和 select sum(sal) from emp where dept_id=1;
  1. 计数count(*)
  • 查询工资高于2000的员工人数 select count(*) from emp where sal>2000;

  • 查询2号部门的平均工资,最高工资,最低工资,工资总和,人数 select avg(sal) 平均工资,max(sal) 最高工资,min(sal) 最低工资,sum(sal) 工资总和,count(*) 人数 from emp where dept_id=2;

综合练习

  1. 查询1号部门名字中包含僧的员工信息 select * from emp where dept_id=1 and name like "%僧%";
  2. 查询2号和3号部门中工资高于1500的员工人数 select count(*) from emp where dept_id in(2,3) and sal>1500;
  3. 查询名字里面包含精的最高工资 select max(sal) from emp where name like "%精%";
  4. 查询程序员的平均工资 select avg(sal) from emp where job="程序员";
  5. 查询销售的最低工资 select min(sal) from emp where job="销售";
  6. 查询有领导的员工人数 select count(*) from emp where manager is not null;
  7. 查询3号部门的人数和平均工资,起别名 select count(*) 人数,avg(sal) 平均工资 from emp where dept_id=3;

分组查询group by

  • 将某个字段相同值的数据划分为一组, 然后以组为单位进行统计查询 
  1. 查询每个部门的平均工资 select dept_id,avg(sal) from emp group by dept_id;
  2. 查询每种工作的平均工资 select job,avg(sal) from emp group by job;
  3. 查询每个部门的最高工资 select dept_id,max(sal) from emp group by dept_id;
  4. 查询每种工作的人数 select job,count(*) from emp group by job;
  5. 查询每个部门工资高于2000的人数 select dept_id,count(*) from emp where sal>2000 group by dept_id;
  6. 查询每个部门有领导的员工的人数 select dept_id,count(*) from emp where manager is not null group by dept_id;

having关键字

  • where后面只能写普通字段的条件,不能写聚合函数函数.
  • having关键字 作用和where类似都是用来添加条件的, 但是having后面专门写聚合函数条件,而且having要和group by分组查询结合使用, 写在分组关键字的后面
  1. 查询每个部门的平均工资要求平均工资大于2000 select dept_id,avg(sal) from emp group by dept_id having avg(sal)>2000 ; 别名用法 select dept_id,avg(sal) a from emp group by dept_id having a>2000 ;
  2. 查询每种工作的人数,只查询人数大于1 的 select job,count(*) c from emp group by job having c>1;
  3. 查询每个部门的工资总和,只查询有领导的员工, 并且要求工资总和大于5400 select dept_id,sum(sal) s from emp where manager is not null group by dept_id having s>5400;
  4. 查询每个部门的平均工资, 只查询工资在1000到3000之间的,并且过滤掉平均工资低于2000的 select dept_id,avg(sal) a from emp where sal between 1000 and 3000 group by dept_id having a>=2000;

各个关键字的顺序

  • select * from 表名 where 普通字段条件 group by 分组字段名 having 聚合函数条件 order by 排序字段名 desc limit 跳过条数,请求条数;

子查询(嵌套查询)

use empdb;

  1. 查询工资大于2号部门平均工资的员工信息 select avg(sal) from emp where dept_id=2; select * from emp where sal>(select avg(sal) from emp where dept_id=2);
  2. 查询工资高于程序员最高工资的员工信息 select max(sal) from emp where job="程序员"; select * from emp where sal>(select max(sal) from emp where job="程序员");
  3. 查询工资最高的员工信息 select * from emp where sal=(select max(sal) from emp);
  4. 查询和孙悟空相同工作的员工信息 select * from emp where job=(select job from emp where name='孙悟空') and name!='孙悟空';
  5. 查询拿最低工资员工的同事们的信息(同事指同一部门) select min(sal) from emp; select dept_id from emp where sal=(select min(sal) from emp); select * from emp where dept_id=(select dept_id from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);

表和表之间如何建立关系

  • 一对一: 在AB 任意一张表里面添加一个建立关系的字段 指向另外一张表的主键 

  • 一对多: 在一对多的两张表中, 在"多"的表里面添加建立关系的字段 指向另外一张表的主键 

  • 多对多: 创建一个单独的关系表, 表里面有两个字段指向另外两个表的主键 

  • 多对多举例: 苍老师: 小红,小花,小绿 传奇哥: 小花,小绿 create table t(id int primary key auto_increment,name varchar(20)); create table s(id int primary key auto_increment,name varchar(20)); create table t_s(tid int ,sid int); insert into t values(null,'苍老师'),(null,'传奇哥'); insert into s values(null,'小红'),(null,'小花'),(null,'小绿'); insert into t_s values(1,1),(1,2),(1,3),(2,2),(2,3);

    老师表:t
    学生表:s
    关系表:t_s

    1. 查询每个老师名字和对应的学生名字 select t.name,s.name from t join t_s ts on t.id=ts.tid join s on s.id=ts.sid;
    2. 查询苍老师的学生姓名 select s.name from t join t_s ts on t.id=ts.tid join s on s.id=ts.sid where t.name="苍老师"; 

关联查询

  • 查询存在关联关系的表的查询方式称为关联查询 
  • 关联查询的方式包括: 等值连接, 内连接, 外连接 

等值连接

  • 格式: select * from A,B where 关联关系 and 其它条件;
  1. 查询工资高于2000的员工的姓名和对应的部门名 select e.name,d.name from emp e,dept d where e.dept_id=d.id and sal>2000;
  2. 查询程序员的姓名,工资,部门名,部门地点
    select e.name,sal,d.name,loc from emp e,dept d where e.dept_id=d.id and job='程序员';

内连接

  • 等值连接和内连接查询到的是一样的数据, 推荐使用内连接
  • 格式: select * from A join B on 关联关系 where 其它条件;
  1. 查询工资高于2000的员工的姓名和对应的部门名 select e.name,d.name from emp e join dept d on e.dept_id=d.id where sal>2000;
  2. 查询程序员的姓名,工资,部门名,部门地点
    select e.name,sal,d.name,loc from emp e join dept d on e.dept_id=d.id where job='程序员';

外连接

  • 等值连接和内连接查询到的是两个表的交集数据 
  • 外连接查询到的是一张表的全部和另外一张表的交集 
  • 格式: select * from A left/right join B on 关联关系 where 其它条件; insert into emp(name) values("灭霸");
  1. 查询所有员工姓名和对应的部门名 select e.name,d.name from emp e left join dept d on e.dept_id=d.id;
  2. 查询所有部门的名字,地址, 和对应的员工姓名,工资. select d.name,loc,e.name,sal from emp e right join dept d on e.dept_id=d.id;

关联查询总结

  1. 如果查询的数据是两个表的交集数据,使用等值连接或内连接(推荐)
  2. 如果查询的是一张表的全部和另外一张表的交集则使用外连接.
汇川EASY系列之以太网通讯(MODBUS_TCP做主站) 汇川Easy系列以太网通讯中(MODBUSTCP,plc做主站),终于可以不用使用指令就可以完成了,全程通过简单的配置就可通讯。本文将通过EASY系列PLC与调试助手之间完成此操作。 阅读详情

相关推荐

【头歌实训:逆置顺序表】

根据提示,在右侧编辑器补充函数rev的代码,使用顺序表L的空间就地逆置L。},要求时间复杂度为O(n),空间复杂度为O(1)。第一行为顺序表逆置之前的元素。每个数据后一个空格。第二行为顺序表逆置之后的元素。每个数据后一个空格。本关任务:设计一个算法,将一个顺序表L的元素{a。第一行为顺序表中元素个数n。第二行为空格隔开的n个整数。开始你的任务吧,祝你成功!

guang_Lee的博客 998

JAVA中的数据库

数据库:DataBase简称(DB)存储数据的仓库,数据是有组织的进行存储数据库管理系统:DataBase Management System简称(DBMS)操纵和管理数据库的大型软件SQL :Structured Query Language简称(SQL)操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准数据库分为两大类1.采用了关系模型来组织数据的数据库关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

2301_77967942的博客 2405

c语言实现语音检测vad_壹鸽技术科普·智能语音客服系统中的前端语音处理技术...

随着智能客服机器人产业的迅速发展,尤其是伴随着人工智能AI的风潮,预计在2020年我国智能客服市场将达到万亿级别。在智能客服机器人领域中对电话信道语音进行端点检测处理的应用正在不断扩展和深化。目前语音端点检测(Voice Active Detection,简称VAD)的主要任务是准确快速判决出待处理的语音信号有话还是无话,作为自动语音识别(Automatic Speech Recognition,...

weixin_36431018的博客 508

Java面试之数据库篇(offer 拿来吧你)

现在关于Java面试的资料是层出不穷,对于选择困难症的同学来说,无疑是陷入了一次次的抉择与不安中,担心错过了关键内容,现在小曾哥秉持着"融百家之所长,汇精辟之文档"的思想,整理一下目前主流的一些八股文,以达到1+1 > 2 的效果!...............

qq_36317312的博客 4479

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 102

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5551

Java的数据库

创建数据库然后给数据库取一个名字我们编码的时候肯定会涉及到中文,所以在这个第二栏选则utf8然后在第三栏选择默认的default,最后点击Create然后我们左边的学生管理系统就已经创建好了在Java中我们就需要创建一个学生类,但是在数据库我们只需要创建一张表刚刚我们创建的是数据库,现在是创建一张数据表,选择create Table然后就会出现这样的一个界面然后我们添加学号,是字符串的类型就选择varchar,这个是字符串类型的和我们的Java是不一样的其它的如图。

qq_68595856的博客 2465

0基础手把手搭建 Trae\+Seedance2\.0 真人短剧生成智能体(可直接运行)

前言:本文专为0基础新手编写,全程无复杂代码、无专业术语,一步一截图提示(操作路径清晰),只需跟着点鼠标、复制粘贴,就能搭建出可自动生成真人短剧的智能体,生成的短剧可直接导出发布。核心工具:Trae(字节跳动AI IDE,免费)+ Seedance2.0(真人视频生成API,公测免费),无需提前学习编程、设计,全程10-15分钟搞定。 适用人群:0基础小白、想快速生成真人短剧(自媒体、短视频创作者)、无需懂技术即可实现自动化短剧生成的人群。

skygulangfendouz的专栏 1059

Java常用数据库列表

它具有快速的读写速度、丰富的数据结构和灵活的功能,使得开发人员能够构建高性能、可扩展和可靠的应用程序。多语言支持:Kafka提供了针对多种编程语言的客户端API,如Java、Python、Go等,使开发者可以使用自己熟悉的语言与Kafka进行交互。它可以将常用的数据存储在内存中,以加快数据访问速度。它具有快速的索引算法、高效的查询处理和优化器,能够处理大量的数据和高并发访问。键值存储:Redis使用键值对来存储数据,其中键是唯一的标识符,值可以是字符串、哈希表、列表、集合、有序集合等多种数据结构。

lydms的博客 3417

Abaqus仿真进阶:如何准确计算气动软体机器人的抓取力(Blocking Force分析)

本文详细介绍了使用Abaqus进行气动软体机器人抓取力(Blocking Force)分析的进阶技巧。从材料模型验证、刚性目标物选择到接触对建立和充气加载优化,提供了一套完整的有限元仿真解决方案,帮助工程师准确预测软体执行器的抓取性能。

weixin_42528902的博客 401

广州吉欧电子科技有限公司安卓开发工程师岗位 - 技术核心、职责详解与面试指南

广州吉欧电子科技有限公司招聘安卓开发工程师,该岗位可接收优秀应届生。岗位职责包括:1)负责安卓应用架构设计与开发,确保稳定性和可扩展性;2)功能模块编码实现与测试;3)性能优化与用户体验提升;4)后端接口对接;5)系统版本适配;6)用户反馈处理迭代;7)特殊要求熟悉RTK高精度定位技术原理及使用。该岗位要求扎实的安卓开发技术、良好的架构设计能力、性能优化经验,以及特定领域的RTK专业知识,是一个技术全面且具有专业特色的开发岗位。

郑伟强dev的专栏 154

Java 数据库介绍

SQL是一种用于访问和处理关系型数据库的标准化语言。它是一种声明性的语言,用户只需要描述需要的数据,而不需要指定如何从数据库中获取数据。SQL语言包括四个基本操作:SELECT(查询)、INSERT(插入)、UPDATE(更新)和DELETE(删除)。Java数据库连接(JDBC)是Java语言中用于编写与各种关系型数据库进行通信的应用程序所需的API。JDBC提供了一种与数据库进行通信的标准方式,以便可以使用Java编程语言来编写与各种关系型数据库进行交互的应用程序。

Try my best的博客 2646

D16: OpenClaw + Notion API:知识管理新玩法

本文介绍了如何利用OpenClaw连接Notion API构建自动化知识管理系统。文章首先分析了传统知识管理的痛点,包括信息分散、更新不及时等问题,并对比了Notion与其他工具在API完整性、结构化程度等方面的优势。接着详细说明了Notion API的获取和授权流程,并设计了包含项目知识库、技术决策库和会议纪要库的三层架构系统。最后通过会议纪要自动归档的实战案例,展示了如何通过YAML配置实现从飞书会议到Notion的自动化知识沉淀流程。该方案能有效解决团队知识管理中的信息碎片化问题,提升协作效率。

刘一说的IT专栏 274

mybatis03-多表查询、延迟加载、逆向工程

mybatis多表查询(一对一、一对多(多对一)、多对多)、mybatis延迟加载、mybatis逆向工程

weixin_53903929的博客 807

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SQL Server + WinForms 全栈开发核心知识笔记

高级业务规则(如触发器、存储过程),S1阶段了解即可。绑定模式:推荐用,数据源增删改后界面自动刷新,无需重新赋值DataSource。删除选中行:必须设置,然后foreach遍历删除(注意跳过IsNewRow批量插入优化:插入万行数据前,调用暂停界面渲染,插完再,防止界面“卡死”。

2501_90989553的博客 311

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

六阶段简介

课程详细大纲(细微内容会有变化,根据实际课程为准) 第一阶段:java开发语言基础(不能就业,进入行业,开发入门)+- 天数 知识点 授课内容 用途 面试题 DAY01 基础理论知识 计算机基础知识、DOS命令练习、Java语言概述 编程环境搭建 安装JDK、配置环境变量、准备工具eclispe 入门案例 HelloWorld案例与解析 DAY02 JAVA语法基础 标识符、关键字、注释、变...

mjlq_的博客 513

计算机控制技术及应用

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

数据库事务

事务4个特性ACID 一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中如果发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏

mjlq_的博客 371

Java知识大全 - 十、Java和数据库

Java 提供了各种用于处理数据库的 API 和框架。两个主要的API是JDBC(Java数据库连接)和JPA(Java Persistence API)。JDBC 是一个低级 API,它提供了一种从 Java 程序访问关系数据库的标准方法。它提供了一组接口和类,用于连接到数据库、发送 SQL 语句和处理结果。JDBC 驱动程序可用于大多数关系数据库。JPA 是一个高级 API,它提供了一种使用面向对象编程与数据库进行交互的方法。

LegendaryChen的博客 928

Java数据库的介绍和使用

Data Definition Language 数据定义语言 DML Data Manipulation Language 数据操作语言 DQL Data Query Language 数据查询语言 DCL Data Control Language 数据控制语言

Manaphy Chen的博客 2万+

java sql sum函数的使用方法,Java AggregationBuilders.sum方法代码示例

import org.elasticsearch.search.aggregations.AggregationBuilders; //导入方法依赖的package包/类/*** Create aggregation according to the SQL function.** @param field SQL function* @param parent parentAggregatio...

weixin_26749843的博客 2105

Java Aggregation里面的方法

Aggregation是一种特殊的关联关系,表示一个对象包含另一个对象。它是“一对多”关系的具体表现,例如,一个大学包含多个系,一个系包含多个教师等。Java中的集合框架(如List、Set、Map)很好地支持了这种关系。本文详细介绍了Java中Aggregation的概念,并通过具体代码示例展示了如何使用集合框架中的ListSet和Map接口进行数据聚合操作。通过对这些方法的熟练掌握,可以更高效地处理数据,构建健壮的应用程序。微赚淘客系统3.0小编出品,必属精品!

技术研究中心 1257

java mongodb Aggregation的一些常用方法

java mongodb Aggregation的一些常用方法

我是小白程序员 5504

java对数据库的基础知识

什么是数据库 数据库是一种储存结构,它允许使用各种格式输入,处理和检索数据,不必在每次是需要的数据时重新输入。 数据库的特点 可以实现数据的共享,用户可以同时存取数据库中的数据。 减少大量重复的数据,减少数据的冗余,维护数据的一致性。 数据的独立性,使数据库中逻辑结构和应用程序相互独立 数据实现集中控制,我们用文件管理方式,和数据库管理方式进行对比 文件管理方式:数据处于一总比较分散的状态,不同用户或同一用户在不同的处理操作中,其文件之间毫无关系 数据库管理方式:利用数据库可对数据进行集中

qq_53573029的博客 6296

Java中Mongo语法使用,聚合函数(包含mongo多表关联查询)

使用前首先需要配置好MongoTemplate,(详细参考:MongoTemplate的使用)配置好后在类中注入MongoTemplate对象。

樂小伍 3756

java中组合和聚合

java中组合和聚合的简单理解 ==聚合关系(Aggregation)==体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。 组合关系(Composition):A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随...

weixin_43926796的博客 386

Java 的aggregation和association

今天学了Java的aggregation,自己总结一下就是:aggregation是association里的一个特殊的分类。aggregation里的关系只能是单向的,而association单向和双向均可。举个例子吧:比如有两个类是Student和Address,在特定情境下,每一个student的对象一定包含了一个Address的对象,而每一个address可以只含有街道名称...

weixin_33785972的博客 470
上一篇: 数据库(day02)
下一篇: 数据库(day04)JDBC、DBCP
五八个
博客等级 码龄8年 638粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值