数据库=====
创建数据库
1.直接创建数据库
语法:CREATE DATABASE [IF NOT EXISTS] 数据库名 ——[]表示内部内容可省略
2.指定字符集和排序规则方式创建数据库
语法:CREATE DATABASE[IF NOT EXISTS] 数据库名 CHARACTER SET 字符集 COLLATE 排序规则
示例:CREATE DATABASE mydb4 CHARACTER SET UTF8 COLLATE utf8_bin
排序规则说明
utf8字符集中指定的 utf8_general_ci 和 utf8_bin,对数据库中存储数据库的规则就有所不同。
utf8_general_ci:ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的。
utf8_bin:将字符串每个字符串用二进制数据编译存储,区分大小写,而且可以存二进制的内容。
查看数据库
1.修改数据库:只能修改数据库的字符集和排序规则,不能修改数据库名字
语法:ALTER DATABASE 数据库名 CHARACTER SET 字符集 [COLLATE 排序规则]
2.删除数据库
语法:DROP DATABASE 数据库名
使用数据库
1.切换数据库
语法:USE 数据库名
1.数值类型
a)整数类型
如要使用无符号的,在建表语句中指定。例如:id int unsigned
b)浮点数
MySQL中的浮点数包括float和double两种,定义格式为float(M,D)、double(M,D)。
2.字符串类型
MySQL提供了多种针对字符串的存储类型。如下表所示
字符串类型 取值范围和存储需求
char(M) M为0~255之间的整数
varchar(M) M为0~65535之间的整数
text 允许长度0~65535字节
enum 允许的值选自一个允许值列表,这个列表最多能存储的值数量为65535个
set 和enum类似,set类型是一个多选字符串数据类型
a)char和varchar
这两种类型的主要区别在于存储方式不同,char类型的长度是固定的,而varchar类型的长度是可变的。因为长度的问题,所以导致两种数据类型的数据寻址速度不同,如果字符在10个以内,推荐使用char。
3.日期和时间类型
MySQL中有多种日期和时间类型的数据数据类型。如下表所示
类型 字节 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
time 3 -838:59:59 838:59:59
year 1 1901 2155
1、如果要表示年月日,通常使用date。如果要表示年月日时分秒,通常使用datetime。
2、如果要表示时分秒,通常使用time。如果要表示年,通常使用year。
最常用类型总结:整数 int 、 浮点数 double 、字符串 varchar、日期 date。
创建表示例
注意:在创建表之前,一定要先使用数据库USE 数据库名(也就是说,表一定要创建在某个数据库中)
需求:创建employee表,包含字段,编号(id int)、姓名(emp_name varchar)、性别(gender enum(‘M’,’F’))、 入职日期(hire_date date)、薪资(salary double)、简历(resume text)
create table employee(
id int,
emp_name varchar(100),
gender enum(‘M’,’F’),
hire_date date,
salary double,
resume text
) engine InnoDB auto_increment 01 default charset UTF8 collate utf8_bin;
三、查看表
1.查看表结构 查看创建表的SQL语句
语法:DESC 表名; 语法:SHOW CREATE TABLE 表名;
2.添加新列
语法:ALTER TABLE 表名 ADD 列名 类型
示例:为学生表s1添加一个新的字段remark,类型为varchar(20)
ALTER TABLE s1 ADD remark VARCHAR(20);
3.修改列类型
语法:ALTER TABLE 表名 MODIFY 列名 新的类型
示例:将s1表中的remark字段的改成varchar(100)
ALTER TABLE s1 MODIFY remark VARCHAR(100)
4.修改列名
语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型
示例:将s1表中的remark字段名改成intro,类型varchar(30)
ALTER TABLE s1 CHANGE remark intro varchar(30)
5.删除列
语法:ALTER TABLE 表名 DROP 列名
示例:删除s1表中的字段intro
ALTER TABLE s1 DROP intro
6.修改表名
语法:RENAME TABLE 表名 TO 新表名
示例:将学生表student改名成student2
RENAME TABLE student TO student2
7.修改表字符集
语法:ALTER TABLE 表名 character set 字符集
示例:将sutden2表的编码修改成gbk
ALTER TABLE student2 character set gbk
alter table student convert to character set utf8;
六、删除表
语法:DROP TABLE 表名
示例:删除s1表
drop table s1
DML数据操纵语言
1.指定字段的插入
语法:INSERT INTO 表名 (字段名 1, 字段名2…,字段n) VALUES (值1, 值2…,值n)
示例:更换数据库,创建student表
create table student(
id int,
name varchar(20),
age int,
sex char(1),
address varchar(100)
)
向学生表中添加 id, name, age, sex数据
INSERT INTO student (id, name, age, sex) VALUES (1, ‘张三’, 20, ‘男’);
示例2:向student表中插入数据
INSERT INTO student (NAME, id, age, sex, address) VALUES (‘李四’, 2, 23, ‘女’, ‘广州’);
注意事项
值与字段必须对应,个数相同,类型相同;值的数据大小必须在字段的长度范围内 varchar();除了数值类型外,其它的字段类型的值必须使用引号引起(建议单引号);如果要插入空值,可以不写字段,或者插入null
2.不指定字段的插入
语法:INSERT INTO 表名 VALUES (值1, 值2…)
示例:INSERT INTO student VALUES (3, ‘王五’, 18, ‘男’, ‘北京’);
注意事项:不指定列时,相当于指定了所有列,顺序和建表时的顺序一致。
1.不带条件的更新
语法:UPDATE 表名 SET 字段1=值1[,字段2=值2,…,字段n=值n]
示例:UPDATE student SET sex=‘女’
说明:表中所有行的sex都会被更新为女
2.带条件的更新
语法:UPDATE 表名 SET 字段1=值1[,字段2=值2,…,字段n=值n][where 条件]
示例:将id号为2的学生性别改成男
UPDATE student SET sex=‘男’ WHERE id=2;
说明:where 条件有很多种,在后面的查询中逐个讲解。
三:删除记录
1.带条件删除
语法:DELETE FROM 表名 WHERE 条件
示例:带条件删除数据,删除id为3的记录
DELETE FROM student WHERE id=3
2.不带条件删除
语法:DELETE FROM 表名
示例:DELETE FROM student;
说明:不带条件的删除,将删除表中的全部数据。
DQL数据查询语言
1.简单查询
a)查询表中全部数据
语法:SELECT * FROM 表名
示例:SELECT * FROM student
b)查询指定列
语法:SELECT 字段名1, 字段名2… FROM 表名
示例:查询student表中的name 和 age 列
SELECT NAME, age FROM student
二、别名查询
在查询时,给查询的列或表起一个其他的(一般是稍短的名字,或为了防止重复)名字就叫做别名。使用别名的好处是方便查看和处理查询到的数据。
语法:SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名… FROM 表名 AS 表别名
示例:查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”
SELECT NAME AS ‘姓名’, age AS ‘年龄’ FROM student;
示例2:查询sudent表中name和age列,student表别名为s
SELECT NAME, age FROM student AS s;
AS关键字可以省略。
三、去除重复值
语法:SELECT DISTINCT 字段名 FROM 表名
示例:SELECT DISTINCT name FROM student
说明:当distinct后出现了多个列时,只有当多个列的数据都重复才叫重复数据。
四、查询结果参与运算
在查询语句中,查询的列的可以和其他值做数学运算(加、减、乘、除等)。运算结果只会影响展示,不会影响表中的数据。
语法:SELECT 列名1 + 固定值 FROM 表名
SELECT 列名1 + 列名2 FROM 表名
示例:查询student表中每条记录添加对应的数学和英语成绩
查询math + english的和: SELECT math + english FROM student
查询math + english的和,并使用别名”总成绩”: SELECT math + english ‘总成绩’ FROM student
查询所有列与math + english的和,并使用别名”总成绩”:SELECT , math + english ‘总成绩’ FROM student
查询姓名、年龄,将每个人的年龄增加10岁: SELECT name, age + 10 FROM student
五、条件查询
1、比较运算符
=等于、 >大于、 <小于、 <=小于等于、 >=大于等于、 <>或!=不等于
示例:查询math分数大于80分的学生
SELECT * FROM student3 WHERE math>80
2、逻辑运算符
and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足
示例1:查询age大于35且性别为男的学生(两个条件同时满足)
SELECT * FROM student3 WHERE age>35 AND sex=‘男’;
示例2:查询id是1或3或5的学生
SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;
3、指定范围内查询 in
语法:SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2…);
示例:查询id是1或3或5的学生
SELECT * FROM student3 WHERE id IN (1,3,5)
说明:相当于使用or连接多个条件id=1 OR id=3 OR id=5。
4、范围
比如:age BETWEEN 80 AND 100 相当于: age>=80 and age<=100
示例:查询english成绩大于等于75,且小于等于90的学生
SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;
5、模糊查询like
语法:SELECT * FROM 表名 WHERE 字段名 like ‘通配符字符串’;
MySQL通配符有两个:
%: 表示0个或多个字符(任意个字符)
: 表示一个字符
示例1:查询姓马的学生
SELECT * FROM student3 WHERE NAME LIKE ‘马%’;
示例2:查询姓名中包含’德’字的学生
SELECT * FROM student3 WHERE NAME LIKE ‘%德%’;
示例3:查询姓马,且姓名有三个字的学生
SELECT * FROM student3 WHERE NAME LIKE '马_';
6、为空查询 is null
示例:查询english成绩时null的学生信息
select * from student3 where english is null
DQL数据查询语言
一、排序
通过ORDER BY子句,可以将查询出的结果进行排序,排序只影响显示结果,不会影响数据库中数据的顺序。
语法:SELECT 字段名 FROM 表名 [WHERE 条件] ORDER BY 字段名 [ASC|DESC];
ASC: 升序,默认是升序
DESC: 降序
1.单列排序
单列排序是使用一个字段排序。
示例:查询所有数据,使用年龄降序排序:
SELECT * FROM student3 ORDER BY age DESC;
2.组合排序
组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。 上面的例子中,年龄是有相同的。当年龄相同再使用math进行排序。
语法:SELECT 字段名 FROM 表名 [WHERE 条件] ORDER BY 字段名1 [ASC|DESC],字段名2 [ASC|DESC];
示例:查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序:
SELECT * FROM student3 ORDER BY age DESC, math DESC;
二、聚合函数
聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。
聚合函数会忽略空值。
count: 统计指定列记录数,记录为NULL的不统计
sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
1.count函数
统计指定列记录数
示例1:查询总条数
SELECT COUNT() FROM student3;
示例2:查询年龄大于40的总人数
SELECT COUNT() FROM student3 WHERE age>40;
说明:先查询后进行聚合函数统计
示例3:SELECT COUNT(english) FROM student3
2.sum函数
计算指定列的数值和,如果不是数值类型,那么计算结果为0
示例:计算math的总和
SELECT SUM(math) FROM student3;
3.avg函数
计算指定列的平均值,如果不是数值类型,那么计算结果为0
示例:查询数学成绩平均分
SELECT AVG(math) FROM student3;
4.max函数
计算指定列的最大值
示例:查询数学成绩最高分
SELECT MAX(math) FROM student3;
5.min函数
计算指定列的最小值
示例:查询数学成绩最低分
SELECT MIN(math) FROM student3;
四、分组
分组查询是指使用 GROUP BY语句对查询信息进行分组,相同数据作为一组。
语法:SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 [HAVING 条件];
1.分组查询
GROUP BY怎么分组的?将分组字段结果中相同内容作为一组
示例1:SELECT * FROM student3 GROUP BY sex;
这句话会将sex相同的数据作为一组。
第一步:将sex相同的数据作为一组,分为男,女两组。
第二步:返回每组的第一条数据,作为查询结果。
说明:以上的操作是将分组字段结果中相同内容作为一组,并且返回每组的第一条数据。这样的操作显然没有什么意义。分组的目的就是为了统计,一般分组会跟聚合函数一起使用。
示例1:SELECT SUM(math), sex FROM student3 GROUP BY sex;
是将每组的math进行求和,返回每组统计的结果。 聚合函数是在分组后运行,统计每组的数据
注意事项:当我们使用某个字段分组,在查询的时候最好将这个字段查询出来,否则看不到数据属于哪组的。
示例3:查询男女各多少人
SELECT sex, COUNT() FROM student3 GROUP BY sex;
2.分组时的条件过滤
示例1:查询年龄大于25岁的人,按性别分组,统计每组的人数
先过滤掉年龄小于25岁的人;再分组;最后统计每组的人数
SELECT sex, COUNT() FROM student3 WHERE age > 25 GROUP BY sex;
一个SQL语句中不应该出现两个where子句!
使用having子句解决
示例:SELECT sex, COUNT() FROM student3 WHERE age > 25 GROUP BY sex HAVING COUNT(*) >2;
只有有分组后人数大于2的男
这组数据显示了出来。
3.where和having的对比
1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
2.having语句中可以使用聚合函数,where后面不可以使用聚合函数
五、limit
LIMIT的作用是限制查询记录的条数。
注意:limit子句要放在SQL语句的最后
LIMIT语法格式
LIMIT offset,length;或者limit length;
offset是指偏移量,可以认为是跳过的记录数量,默认为0,表示从哪开始
length是指需要显示的总记录数,表示显示几条
示例:查询学生表中数据,从第三条开始显示,显示6条。
SELECT * FROM student3 LIMIT 2,6;
SQL语句如下
– 每页显示5条
– 第一页: LIMIT 0,5; 跳过0条,显示5条
– 第二页: LIMIT 5,5; 跳过5条,显示5条
– 第三页: LIMIT 10,5; 跳过10条,显示5条
SELECT * FROM student3 LIMIT 0,5;
SELECT * FROM student3 LIMIT 5,5;
SELECT * FROM student3 LIMIT 10,5;
SELECT * FROM table_name LIMIT 行数(可以是百分比) OFFSET 偏移量(可以是百分比)
注意
1、如果第一个参数是0可以简写; LIMIT 10,5; – 如果不够5条,则有多少显示多少。
约束和策略
1、主键的作用:用来唯一标识一条记录,每个表都应该有一个主键
通常不用业务字段作为主键,单独给每张表设计一个id的字段,把id作为主键。主键没有含义没有关系。
2、创建主键
a)建表时添加主键
示例1:create table stu1(
id int primary key auto_increment,
name varchar(20)
)
示例2:create table stu1(
id int ,
name varchar(20),
primary key(id) auto_increment
)
b)修改表方式添加主键
alter table stu1 add CONSTRAINT stu1_pk primary key(id)
stu1_pk 约束名,可有可无
组合主键
CREATE TABLE 销售
(
商品编号
VARCHAR(5) ,
顾客编号
VARCHAR(5) ,
PRIMARY KEY(商品编号
,顾客编号
),
购买数量
INT,
购买日期
date
);
或者先创建表,然后
ALTER TABLE 销售;
ADD PRIMARY KEY (商品编号, 顾客编号);
3、删除主键
语法:ALTER TABLE 表名 DROP PRIMARY KEY;
示例:删除stu1表的主键
ALTER TABLE stu1 DROP PRIMARY KEY;
4、主键自增策略
自增关键字auto_increment。默认地AUTOINCREMENT 的开始值是1,如果希望修改起始值,请使用下列SQL
语法:ALTER TABLE 表名 AUTOINCREMENT=起始值;
二、非空约束
1、建表时添加非空约束
字段名 字段类型 NOT NULL
CREATE TABLE stu3 (
id int,
name varchar(20) NOT NULL,
);
2、修改表的方式添加非空约束
alter table stu3 modify name varchar(20) not null
三、唯一约束
添加了唯一约束的列的值不能重复,但是可以为null。
1、创建唯一约束
a)建表时添加唯一约束
语法:列名 数据类型 UNIQUE
示例:CREATE TABLE stu4 (
id INT primary key,
email varchar(200) unique
)
b)修改表方式添加唯一约束
alter table stu4 add constraint stu4_unq unique(email) stu4_unq是约束名,可以省略
2、删除唯一约束
语法:alter table 表名 drop index 唯一约束的约束名
示例:alter table stu4 drop index stu4_unq
四、缺省(默认)约束
缺省约束是指指定某个列的缺省值,当该列在插入数据时不指定值,将会使用缺省值。
1、创建缺省约束
a)建表时添加缺省约束
语法:列名 数据类型 default ‘缺省值’
示例:CREATE TABLE stu5 (
id INT primary key,
address varchar(200) default ‘北京’
)
b)(2)修改表的方式添加缺省约束
alter table stu5 change column address address varchar(200) default ‘北京’;
2、删除缺省约束
语法:alter table 表名 change column 列名 列名 数据类型 default null
示例:alter table stu5 change column address adress varchar(200) default null
五、外键约束
1、单表的缺点
创建一个员工表,包含如下列(id, name, age, depname, deplocation) ,id主键并自动增长,添加6条数据
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES (‘张三’, 20, ‘研发部’, ‘广州’); …
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES (‘小王’, 18, ‘销售部’, ‘深圳’); …
缺点:表中出现了很多重复的数据(数据冗余),如果要修改研发部的地址需要修改3个地方。
2、解决方案
将一张表分成2张表(员工表和部门表) ,使用外键约束。
3、什么是外键约束
一张表中的某个字段引用另一个表的主键。
主表: 约束别人的表 副表/从表: 使用别人的数据,被约束的表
4、创建外键
a)建表时创建外键约束
语法:[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
关键字解释:
CONSTRAINT:约束关键字
FOREIGN KEY(外键字段名):某个字段作为外键
REFERENCES 主表名(主键字段名):表示参照主表中的某个字段
要求:外键列的数据类型和长度必须和被参照的主键列的数据类型和长度一致
示例:在创建副表/从表之前要先创建主表
CREATE TABLE department (
id INT PRIMARY KEY AUTO_INCREMENT,
dep_name VARCHAR(20),
);
副表/从表: 被别的表约束,表结构添加外键约束
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
dep_id INT,
– 添加一个外键
– 外键取名公司要求,一般fk结尾
CONSTRAINT emp_depid_ref_dep_id_fk FOREIGN KEY(dep_id) REFERENCES department(id));
b)修改表的方式添加外键
alter table employee add constraint emp_fk1 foreign key(dept_id) reference department(id)
5、外键的级联
a)问题
要把部门表中的id值2,改成5,能不能直接修改呢?
UPDATE department SET id=5 WHERE id=2;
如果副表(员工表)中有引用的数据,不能直接修改主表(部门表)主键。
要删除部门id等于1的部门,能不能直接删除呢?
DELETE FROM department WHERE id=1;
如果副表(员工表)中有引用的数据,不能直接删除主表(部门表)数据。
b)级联操作
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作。
语法:ON UPDATE CASCADE – 级联更新,主键发生更新时,外键也会更新
ON DELETE CASCADE – 级联删除,主键发生删除时,外键也会删除
示例:创建employee表,添加级联更新和级联删除 //在副表中
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
– 添加外键约束,并且添加级联更新和级联删除
CONSTRAINT employee_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE
CASCADE
);
注意:要慎用级联操作
多表查询
一、什么是多表查询
同时查询多张表获取到需要的数据,就是多表查询。
二、笛卡尔积
1.什么是笛卡尔积现象
多表查询时左表的每条数据和右表的每条数据组合,这种效果成为笛卡尔积。
语法:select * | 列1,列2,…,列n from 表1,表2,…,表n
示例:需求:查询部门和员工信息
SELECT * FROM dept, emp;
以上数据其实是左表的每条数据和右表的每条数据组合。左表有3条,右表有5条,最终组合后3*5=15条数据。
左表的每条数据和右表的每条数据组合,这种效果称为笛卡尔乘积,笛卡尔积中有很多没有意义的数据。
三、连接查询
1.内连接
用左边表的记录去匹配右边表的记录,符合条件的才显示。内连接又分为隐式内连接和显示内连接两种。
a)隐式内连接
隐式内连接:不使用JOIN关键字,条件使用WHERE指定。
语法:SELECT 字段名 FROM 左表, 右表 WHERE 条件
b)显示内连接
2.外连接
a)左外连接
左表数据全部显示,右表显示和左表有关联的数据。
语法:SELECT 字段名 FROM 左表 LEFT OUTER JOIN 右表 ON 条件。OUTER可以省略
用左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示NULL。
b)右外连接
右外连接:使用RIGHT OUTER JOIN … ON,OUTER可以省略。右表数据全部显示,左表显示和右表有关联的数据。
语法:SELECT 字段名 FROM 左表 RIGHT OUTER JOIN 右表 ON 条件;
子查询
查询中嵌套一个查询叫子查询
a)单行子查询
子查询的结果是一个值
单行运算符:= > >= < <= != 等我们学习过的众多运算符都是单行运算符
示例:查询工资比白骨精高的员工信息
select * from emp where salary>(select salary from emp where name=‘白骨精’)
子查询先查询出’白骨精’的工资,作为条件交给主查询使用
b)多行子查询
子查询结果是单例多行
多行运算符:in、any、all
示例:1、查询工资大于5000的员工,来自于哪些部门的名字
先查询大于5000的员工所在的部门id
SELECT dept_id FROM emp WHERE salary > 5000
再查询在这些部门id中部门的名字
SELECT dept.name FROM dept WHERE dept.id IN (SELECT dept_id FROM emp WHERE salary > 5000)
2、查询开发部与财务部所有的员工信息
先查询开发部与财务部的id
SELECT id FROM dept WHERE NAME IN(‘开发部’,‘财务部’);
再查询在这些部门id中有哪些员工
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME IN(‘开发部’,‘财务部’))
any 和 all 不是单独使用的运算符,要和 比较运算符一起使用
示例:修改表中数据,把蜘蛛精的name修改为白骨精
select salary from emp where name=‘白骨精’
any表示任意值
select name,salary from emp where salary >any(select salary from emp where name=‘白骨精’)
any表示比最小的大就可以(大于4500)
all表示全部值
select name,salary from emp where salary >all(select salary from emp where name=‘白骨精’)
all 表示比最大的还要大(大于5000)
c)多列子查询
子查询结果是单列,在WHERE后面作为条件 子查询结果
子查询结果是多列,肯定在FROM后面作为表
语法:SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件
子查询结果只要是多行多列,肯定在FROM后面作为表 。
子查询作为表需要取别名,否则这张表无法访问表中的字段。
示例:查询出2011年以后入职的员工信息,包括部门名称
在员工表中查询2011-1-1以后入职的员工
SELECT * FROM emp WHERE join_date > ‘2011-1-1’
查询所有的部门信息,与上面的虚拟表中的信息组合,找出所有部门id等于的dept_id
SELECT e.id emp_id,e.name emp_name,e.gender emp_gender,e.salary emp_salary,e.join_date
emp_join_date,d.id dept_id,d.name dept_name FROM dept d, (SELECT * FROM emp WHERE join_date >
‘2011-1-1’) e WHERE e.dept_id = d.id
相关文章:
数据库=====
创建数据库 1.直接创建数据库 语法:CREATE DATABASE [IF NOT EXISTS] 数据库名 ——[]表示内部内容可省略 2.指定字符集和排序规则方式创建数据库 语法:CREATE DATABASE[IF NOT EXISTS] 数据库名 CHARACTER SET 字符集 COLLATE 排序规则 示例:…...
VITA STANDARDS LIST,VITA 标准清单下载
VITA STANDARDS LIST,VITA 标准清单下载 DesignationTitleAbstractStatusVMEbus Handbook, 4th EditionA users guide to the VME, VME64 and VME64x bus specifications - features over 70 product photos and over 160 circuit diagrams, tables and graphs. The…...
npm pnpm yarn 设置国内镜像
国内镜像 常用的国内镜像: 淘宝镜像 https://registry.npmmirror.com 腾讯云镜像 https://mirrors.cloud.tencent.com/npm/ 华为云镜像 https://repo.huaweicloud.com/repository/npm/ CNPM(阿里系) https://r.cnpmjs.org/ 清华…...
互联网大厂Java面试:从Spring到微服务的技术探讨
场景:互联网大厂Java求职者面试 在一家知名的互联网大厂面试中,面试官王严肃正在面试一位名叫谢飞机的程序员。谢飞机以其独特的幽默感而闻名,但在技术面前,他的能力能否得到认可呢? 第一轮提问:核心技术…...
[machine learning] Transformer - Attention (二)
本文介绍带训练参数的self-attention,即在transformer中使用的self-attention。 首先引入三个可训练的参数矩阵Wq, Wk, Wv,这三个矩阵用来将词向量投射(project)到query, key, value三个向量上。下面我们再定义几个变量: import torch inpu…...
Java多语言DApp质押挖矿盗U源码(前端UniApp纯源码+后端Java)
内容: 这款Java多语言DApp质押挖矿盗U源码提供了完整的前端与后端开发框架,适用于区块链应用开发。系统包括: 前端源码(UniApp):采用UniApp开发,跨平台支持iOS、Android及H5。界面简洁…...
如何解决 403 错误:请求被拒绝,无法连接到服务器
解决 403 错误:请求被拒绝,无法连接到服务器 当您在浏览网站或应用时,遇到 403 错误,通常会显示类似的消息: The request could not be satisfied. Request blocked. We can’t connect to the server for this app o…...
CGI(Common Gateway Interface)协议详解
CGI(通用网关接口)是一种标准化的协议,定义了 Web服务器 与 外部程序(如脚本或可执行文件)之间的数据交互方式。它允许服务器动态生成网页内容,而不仅仅是返回静态文件。 1. CGI 的核心作用 动态内容生成&a…...
HybridCLR 详解:Unity 全平台原生 C# 热更新方案
HybridCLR(原 Huatuo)是 Unity 平台革命性的热更新解决方案,它通过扩展 Unity 的 IL2CPP 运行时,实现了基于原生 C# 的完整热更新能力。下面从原理到实践全面解析这一技术。 一、核心原理剖析 1. 技术架构 原始 IL2CPP 流程&am…...
电脑RGB888P转换为JPEG方案 ,K230的RGB888P转换为JPEG方案
K230开发板本身具备将RGB888P转换为JPEG的能力,但需要正确调用硬件或软件接口。以下是具体分析及解决方案: 一、K230原生支持性分析 1. 硬件支持 K230的NPU(神经网络处理器)和图像处理单元(ISP)理论上支持…...
基于SpringBoot+Vue实现的电影推荐平台功能三
一、前言介绍: 1.1 项目摘要 2023年全球流媒体用户突破15亿,用户面临海量内容选择困难,传统推荐方式存在信息过载、推荐精准度低等问题。传统推荐系统存在响应延迟高(平均>2s)。随着互联网的快速发展,…...
NHANES指标推荐:triglyceride levels
文章题目:Association between triglyceride levels and rheumatoid arthritis prevalence in women: a cross-sectional study of NHANES (1999-2018) DOI:10.1186/s12905-025-03645-y 中文标题:女性甘油三酯水平与类风湿性关节炎患病率之间…...
打印Activity的调用者
有时候我们会发现自己应用中的某个Activity被陌名奇妙的打开了,但是不知道是哪里的代码打开的,此时可以打印Activity的调用堆栈,在Activity的onCreate函数中添加如下代码: Arrays.stream(Thread.currentThread().getStackTrace()…...
深入解析 SqlSugar 与泛型封装:实现通用数据访问层
在现代软件开发中,ORM(对象关系映射)框架的使用已经成为不可或缺的部分,SqlSugar 是一款非常流行且强大的 ORM框架。它不仅提供了简单易用的数据库操作,还具备了高效的性能和灵活的配置方式。为了进一步提升数据库操作…...
普通 html 项目引入 tailwindcss
项目根目录安装依赖 npm install -D tailwindcss3 postcss autoprefixer 初始化生成tailwind.config.js npx tailwindcss init 修改tailwind.config.js /** type {import(tailwindcss).Config} */ module.exports {content: ["./index.html"], //根据自己的项目…...
Go小技巧易错点100例(二十七)
本期分享: 1. Go语言中的Scan函数 2. debug.Stack()打印堆栈信息 3. Go条件编译 正文: Go语言中的Scan函数 在Go语言中,Scan函数是一个强大的工具,它主要用于从输入源(如标准输入、文件或网络连接)读取…...
单细胞测序数据分析流程的最佳实践
单细胞测试数据分析流程是整个论文数据分析过程中相对固定的部分,有一定的标准流程,以下整理了发表论文的相关内容供简要了解,详细内容可以参照2019年发表的综述:Luecken MD, Theis FJ. Current best practices in single-cell RN…...
Elasticsearch:RAG 和 grounding 的价值
作者:来自 Elastic Toms Mura 了解 RAG、grounding,以及如何通过将 LLM 连接到你的文档来减少幻觉。 更多阅读:Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用 想获得 Elastic 认证吗?查看下一期 Elast…...
经典算法 求解台阶问题
求解台阶问题 题目描述 实现一个算法求解台阶问题。介绍如下: 对于高度为 n 的台阶,从下往上走,每一步的阶数为 1、2 或 3 中的一个。问要走到顶部一共有多少种走法。 输入描述 输入一个数字 N: 1 ≤ N ≤ 35表示台阶的高度 …...
伊甸园之东: 农业革命与暴力的复杂性
农业革命的开始 农业革命是人类历史上的第一次重大经济和社会变革,标志着人们从狩猎采集转向农耕。 该变革虽然进展缓慢,却彻底改变了人类的生活方式和社会结构。狩猎采集社会的特征 狩猎采集者生活在小规模、低密度的部落中,依赖于不稳定的自…...
MCP多智能体消息传递机制(Message Passing Between Agents)
目录 🚀 MCP多智能体消息传递机制(Message Passing Between Agents) 🌟 为什么要引入消息传递机制? 🏗️ 核心设计:Agent间消息传递模型 🛠️ 1. 定义标准消息格式 Ὦ…...
Deformable DETR模型解读(附源码+论文)
Deformable DETR 论文链接:Deformable DETR: Deformable Transformers for End-to-End Object Detection 官方链接:Deformable-DETR(这个需要在linux上运行,所以我是用的是mmdetection里面的Deformable DERT,看了一下源码基本是…...
游戏引擎学习第255天:构建配置树
为今天的内容设定背景 今天的任务是构建性能分析(profiling)视图。 目前来看,展示性能分析图形本身并不复杂,大部分相关功能在昨天已经实现。图形显示部分应该相对直接,工作量不大。 真正需要解决的问题,是…...
JavaScript性能优化实战之调试与性能检测工具
在进行 JavaScript 性能优化时,了解和使用正确的调试与性能检测工具至关重要。它们能够帮助我们识别性能瓶颈,精确定位问题,并做出有针对性的优化措施。本文将介绍一些常见的调试和性能检测工具,帮助你更好地分析和优化你的 JavaScript 代码。 1️⃣ Chrome DevTools Chro…...
C#VisionMaster算子二次开发(非方案版)
前言 在网上VisionMaster的教程通常都是按照方案执行的形式,当然海康官方也是推荐使用整体方案的形式进行开发。但是由于我是做标准设备的,为了适配原有的软件框架和数据结构,就需要将特定需要使用的算子进行二次封装。最直接的好处是&#…...
计算机总线系统入门:理解数据传输的核心
一、总线系统简介:计算机内部的交通网络 在计算机系统中,总线是指连接各个组件的一组共享信号线或传输通道,用于在系统内不同的硬件模块之间传递数据、地址、控制信号等信息。它类似于交通系统中的道路,帮助计算机各个部件&#…...
【Linux】Petalinux驱动开发基础
基于Petalinux做Linux驱动开发。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 一个完整的Linux系统(针对Zynq) 1.1 PS部分 1.2 PL部分(若…...
提升办公效率的PDF转图片实用工具
软件介绍 这款专注于PDF文档处理的工具功能单一但实用,能够将PDF文件内容智能提取并自动拼接成长图,为用户提供便捷的图片化文档处理方案,无需复杂设置即可轻松上手。 简洁直观的用户界面 软件界面设计简洁清爽,没有任何多余…...
动态库与ELF加载
目录 动态库 ELF格式 ELF和后缀的区别 什么是目标文件 ELF文件中的地址--虚拟地址 动静态库和可执行文件 动态库ELF加载 为什么编译时静态库需要指定库?而运行时不需要指定库的,但是动态库需要呢? 总结: 动态库 动态库制作需要的.o文件需要使…...
算法每日一题 | 入门-顺序结构-数字反转
数字反转 题目描述 输入一个不小于 且小于 ,同时包括小数点后一位的一个浮点数,例如 ,要求把这个数字翻转过来,变成 并输出。 输入格式 一行一个浮点数 输出格式 一行一个浮点数 输入输出样例 #1 输入 #1 123.4输出 #1 …...
ROS2学习笔记|实现订阅消息并朗读的详细步骤
本教程将详细介绍如何使用 ROS 2 实现一个节点订阅另一个节点发布的消息,并将接收到的消息通过 espeakng 库进行朗读的完整流程。以下步骤假设你已经安装好了 ROS 2 环境(以 ROS 2 Humble 为例),并熟悉基本的 Linux 操作。 注意&…...
【Hot 100】 146. LRU 缓存
目录 引言LRU 缓存官方解题LRU实现📌 实现步骤分解步骤 1:定义双向链表节点步骤 2:创建伪头尾节点(关键设计)步骤 3:实现链表基础操作操作 1:添加节点到头部操作 2:移除任意节点 步骤…...
web应用开发说明文档
工程目录结构 FACTORY--bin #网络流可执行程序 参考后文1.1部分文字说明webrtc-streamer--deployment #部署相关的配置--mysql #参考1.3 mysql数据库详细说明--conf #存放mysql的配置文件--data #存放pem加密…...
快速搜索与管理PDF文档的专业工具
软件介绍 在处理大量PDF文档时,专业的文档管理工具能显著提升工作效率。这款工具能够帮助用户快速检索PDF内容,并提供了便捷的合并与拆分功能,让复杂的PDF操作变得简单高效。 多文件内容检索能力 不同于传统PDF阅读器的单文件搜索局…...
在GPU集群上使用Megatron-LM进行高效的大规模语言模型训练
摘要 大型语言模型在多个任务中已取得了最先进的准确率。然而,训练这些模型的效率仍然面临挑战,原因有二:a) GPU内存容量有限,即使在多GPU服务器上也无法容纳大型模型;b) 所需的计算操作数量可能导致不现实的训练时间。因此,提出了新的模型并行方法,如张量并行和流水线…...
NocoDB:开源的 Airtable 替代方案
NocoDB:开源的 Airtable 替代方案 什么是 NocoDB?NocoDB 的主要特点丰富的电子表格界面工作流自动化应用商店程序化访问 NocoDB 的应用场景使用 Docker 部署 NocoDB1. 创建数据目录2. 运行 Docker 容器3. 访问 NocoDB 注意事项总结 什么是 NocoDB&#x…...
关于Python:7. Python数据库操作
一、sqlite3(轻量级本地数据库) sqlite3 是 Python 内置的模块,用于操作 SQLite 数据库。 SQLite 是一个轻量级、零配置的关系型数据库系统,整个数据库保存在一个文件中,适合小型项目和本地存储。 SQLite 不需要安装…...
修改ollama.service都可以实现什么?
通过修改 ollama.service 系统服务单元文件,可以实现以下核心配置变更: 一、网络与访问控制 监听地址与端口 通过 Environment="OLLAMA_HOST=0.0.0.0:11434" 修改服务绑定的 IP 和端口: 0.0.0.0 允许所有网络接口访问(默认仅限本地 127.0.0.1)。示例:改为 0.0.…...
k8s笔记——kubebuilder工作流程
kubebuilder工作流程 Kubebuilder 工作流程详解 Kubebuilder 是 Kubernetes 官方推荐的 Operator 开发框架,用于构建基于 Custom Resource Definitions (CRD) 的控制器。以下是其核心工作流程的完整说明: 1. 初始化项目 # 创建项目目录 mkdir my-opera…...
长江学者答辩ppt美化_特聘教授_校企联聘学者_青年长江学者PPT案例模板
WordinPPT / 持续为双一流高校、科研院所、企业等提供PPT制作系统服务。 长江学者特聘教授 “长江学者奖励计划”中的一类,是高层次人才计划的重要组成部分,旨在吸引和培养具有国际领先水平的学科带头人。特聘教授需全职在国内高校工作,是高…...
Vscode/Code-Server 安装中文包——CI/CD
前言 啊好多人问我怎么还不更新,其实本月是已经写了一篇测评的,但是鉴于过于超前会给产品带来不好的影响,所以就没有公开。那么既然这样本月就再更新一篇。 首先 声明 一点,安装中文包的初衷不是看不懂英文,也不是对…...
【信息系统项目管理师-论文真题】2012上半年论文详解(包括解题思路和写作要点)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题1:论信息系统工程的风险管理1、写作要点2、解题思路对项目风险的认识和项目风险管理的基本过程、主要方法、工具信息系统项目最主要的风险是什么试题2:论信息系统工程项目可行性研究1、写作要点2、解题思…...
PowerPC架构详解:定义、应用及特点
一、PowerPC架构的定义 PowerPC(Performance Optimization With Enhanced RISC – Performance Computing) 是一种由IBM、摩托罗拉(现NXP)和苹果于1991年联合开发的精简指令集(RISC)处理器架构,…...
IP伪装、代理池与分布式爬虫
一、动态代理IP应用:代理池的获取、选择与使用 代理池技术的核心是通过动态切换IP地址,让爬虫看起来像不同用户在访问网站,从而规避封禁。 (一)代理池的获取途径 1. 免费代理:低成本但高风险 免费代理可…...
【Arthas】火焰图优化应用CPU(问题原因:获取调用栈)
优化场景总结归纳 1. 问题背景 现象:在公共搜索功能中,火焰图分析发现 获取Java调用栈(StackTrace) 占用了约 6%的CPU(日常流量下),系统高负载时占比更高。原因: 每次外部API调用时…...
回溯算法详解(Java实现):从组合到排列的全面解析
引言 回溯算法是一种强大的算法思想,广泛应用于解决各种组合优化问题。它通过系统性地尝试所有可能的解,并在发现当前路径无法得到解时立即回溯,从而高效地找到问题的解。在本文中,我们将深入探讨回溯算法的核心思想、三要素、通…...
【BLE】【nRF Connect】 精讲nRF Connect自动化测试套件(宏录制、XML脚本)
目录 前言 1. nRF Connect自动化测试介绍 1.1. nRF connect宏录制功能介绍 1.2. 电脑端XML方式 1.3 实际应用案例 1.3.1 BLE 稳定性测试 1.3.2 设备固件更新(DFU)测试 1.3.3 批量设备配置 1.4 操作步骤 1.5 注意事项 2. nRF Connect日志记录 2.1. 日志记录功能 …...
springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。
错误信息: "level": "ERROR", "thread": "localhost-startStop-1", "class": "o.a.c.c.C.[.[localhost].[/Crmeb-admin]", …...
基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
摘要:本文以开源AI大模型、AI智能名片及S2B2C商城小程序为技术载体,探讨线上活动执行阶段的效能提升路径。通过分析某科技展会案例,发现AI智能名片可将参会者信息采集效率提升60%,S2B2C商城小程序的21链动模式使活动裂变传播速度提…...
解决奥壹oelove婚恋原生小程序上架问题,彻底解决解对问题增强版旗舰版通用
现在很多客户还不了解OElove小程序上架流程!因为很多用户对技术无感!随意上架工作都是要靠官方来辅助!这样在在二开性就会失去很多主动权!本人商业用户有全新原生态小程序源码(注意:这是原生非Uniapp&#…...