Java-数据库-字段控制语句查询

这篇博客探讨了在Java数据库操作中如何使用字段控制语句进行查询,包括聚合函数的应用,创建方式的第三种方法,唯一约束的设置,确保域完整性的策略,以及引用约束(参照物约束)的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- 字段控制语句查询

-- 去除重复数据
SELECT DISTINCT sal FROM emp;
-- 查看每个人佣金和薪金的和
-- 相当于查询了一个新的字段
-- 注意:如果一个值和空值相加那么得到的值 一定为空值(null)
SELECT empno,sal+comm FROM emp;
-- 可以在查询的时候 给空值 赋个值
SELECT *,sal+IFNULL(comm,0) FROM emp;
-- 查询时可以给字段起个别名
-- 使用as关键词 但是可以省略
SELECT *,sal+IFNULL(comm,0) totl FROM emp;
-- empno job字段 起别名
SELECT empno n,job j FROM emp;
-- 按学生年龄排序
-- 默认是升序(ASC)
-- 降序(DESC)
-- 注意:sql语句关键词 不要与表名重复
SELECT * FROM stu ORDER BY age DESC;
-- 查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序
SELECT * FROM emp ORDER BY sal DESC,empno DESC;
-- 模糊查询
-- 查询名字中带L的人的所有信息
-- %l表示以l结尾 反之 % 表示很多字母
-- _下划线 表示单个字母
SELECT * FROM emp WHERE ename LIKE '%l';
-- 聚合函数(都可以过滤空值)
-- COUNT 查询的是获取总记录数(一共有多少条记录)         
SELECT COUNT(*) FROM emp;
-- 查询公司sal的总和(查询时记录数要相同)
SELECT COUNT(*) num,SUM(sal) sum FROM emp;
-- 查询emp表中有佣金的人数
-- 自动过滤空值
SELECT COUNT(comm) FROM emp;
-- 查询emp表中月薪大于2500的人数
SELECT COUNT(*) FROM emp WHERE sal>2500;
-- 统计月薪与佣金之和大于2500元的人数
SELECT COUNT(*) FROM emp WHERE sal+IFNULL(comm,0) > 2500;
 -- 查询有佣金的人数,有领导的人数
SELECT COUNT(comm),COUNT(mgr) FROM emp;
-- 查询所有雇员月薪和,以及所有雇员佣金和
SELECT SUM(sal),SUM(comm) FROM emp;
-- 查询所有雇员月薪+佣金和
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
-- 统计所有员工平均工资
SELECT AVG(sal) FROM emp;
-- 查询最高工资和最低工资
SELECT MAX(sal),MIN(sal) FROM emp;
-- 分组查询 GROUP BY
-- 查询每个部门的部门编号和每个部门的工资和
-- 如果是分组查询 那么GROUP BY后面的字段
-- 才可以 查询字段的位置
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;
-- 查询每个部门的部门编号以及每个部门的人数
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;
-- 查询每个部门的部门编号以及每个部门工资大于1500的人数
-- 先where筛选大于1500 后分组
SELECT depton,count(*) FROM emp  WHERE sal>1500 GROUP BY deptno;
-- 查询工资总和大于9000的部门编号以及工资和
-- where后面不能跟聚合函数
-- HAVING是分组以后的筛选关键词
-- HAVING后面可以跟聚合函数
SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;
-- 分页查询 LIMIT 关键词
-- 查询前3条数据
-- 参数1 从哪条数据开始
-- 参数2 一个查询几条
int 当前页 = 1;
int 每页显示总数 = 5;
SELECT * FROM emp LIMIT 
(当前页 - 1) * 5,每页显示总数;
 -- 数据完整性
-- 实体完整性
-- 主键约束
-- 创建表stu1 sid sname 把id设置为主键
-- 主键特点:唯一 且不为null
-- 一般每张表都有
CREATE TABLE stu1(
	sid int PRIMARY KEY,
	sname VARCHAR(20)
);  
-- 方式二


CREATE TABLE stu2(
	sid int,
	sname VARCHAR(20),
	PRIMARY KEY (sid)
);    
-- 用来创建联合主键
-- 当两个字段的值完全一样才算重复
CREATE TABLE stu3(
	classid int,
	sid int,
	sname VARCHAR(20),
	PRIMARY KEY (sid,classid)
);

-- 创建方式3

ALTER TABLE stu4 DROP PRIMARY KEY;

ALTER TABLE stu4 DROP PRIMARY KEY;


-- 添加主键约束
-- ALTER TABLE stu4 ADD CONSTRAINT PRIMARY KEY (sid);
-- 删除主键约束
ALTER TABLE stu4 DROP PRIMARY KEY;


-- 唯一约束

-- 特点值唯一(可以为空)
CREATE table stu5(
	sid int PRIMARY KEY,
	sname VARCHAR(20) UNIQUE
);
-- 自动增长列
-- 特点自动加1 并且出现过的 就不再出现
CREATE table stu6(
	sid int PRIMARY KEY auto_increment,
	sname VARCHAR(20) UNIQUE
);
INSERT INTO stu6 (sname) VALUES ('dad');
INSERT INTO stu6 (sname,sid) VALUES ('aqa',NULL);



-- 域完整性

-- 限制单元格内的数据的完整性
CREATE TABLE stu7(
	sid int PRIMARY KEY auto_increment,
	sname VARCHAR(20) NOT NULL
);
CREATE TABLE stu8(
	sid int PRIMARY KEY auto_increment,
	sname VARCHAR(20) NOT NULL,
	sgender VARCHAR DEFAULT '男'
);


-- 引用约束(参照物约束)

-- 主表和从表有依赖关系 从表依赖主表
-- 这时可以给从表添加一个约束 外键约束
CREATE TABLE student1(
	sid int PRIMARY KEY,
	sname VARCHAR(20)
);
CREATE TABLE score1(
	sid int,
	score int,
	CONSTRAINT fk_stu_score_sid 
	FOREIGN KEY (sid) REFERENCES student1(sid)
);

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值