小学生学习Java数据库1

-- 字段控制语句
-- 去重复数据
select distinct sal from emp;
-- 查看佣金和薪金的和
-- 相当于查询了一个新的字段
-- 注意:如果一个值和空值相加 那么得到的值一定是空值
select empno,sal+comm from emp;
-- 可以在查询的时候 给空值 赋个值
select *,empno,sal+ifnull(comm,0) from emp;
-- 查询时可以给字段起个别名
select *,empno,sal+ifnull(comm,0) as total from emp;
-- 使用as关键字 但是可以省去
select *,empno,sal+ifnull(comm,0) total from emp;
-- empno  job 字段起别名
select empno as n,job as j from emp;
-- 按学生年龄排序
-- 默认是升序(ASC)
select * from stu order by age;
select * from stu order by age asc;
-- 降序(desc)
-- 注意:sql语句关键词不要与表名重复
select * from stu order by age desc;
-- 查询所有雇员,按月薪降序排序,如果月薪相同时,按编号降序排序
select * from emp order by sal desc,empno desc;
-- 模糊查询
-- 查询名字中带l的人的所有信息
-- % 代表0个或者n个字母
-- %l 以l结尾   l% 以l开头
-- _下划线 表示单个字母  
select * from emp where ename like '%l%';
select * from emp where ename like '_ll__';
select * from emp where ename like '%l';

-- 聚合函数(都可以自动过滤空值)
-- count 获取总记录数
select count(*) from emp;
-- 查询公司sal的总和 (查询时 字段的记录数要相同)
select sum(sal) from emp;
select count(*) as num,sum(sal) from emp;
-- 查询emp表中有佣金的人数
-- 自动过滤空值
select count(comm) from 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+ifnull(comm,0)) from emp;
-- 查询最高工资和最低工资
select max(sal),min(sal) from emp;

-- 分组查询
-- 查询每个部门的部门编号和每个部门的工资和
-- 如果是分组查询 那么group by后面的字段才可以查询该字段的位置
select deptno,sum(sal) from emp group by deptno;
-- 查询每个部门的部门编号以及每个部门的人数:
select deptno,count(*) from emp group by deptno;
-- 查询每个部门的部门编号以及每个部门工资大于1500的人数  (先用where筛选  再分组)
select deptno,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 关键词
-- 查询前三条数据
-- 参数1 从哪条数据开始
-- 参数2 一共查询几条
select * from emp limit 3,3;


-- 数据完整性

-- 实体完整性
-- 主键约束
-- 主键特点:唯一 不能为空

-- 创建表stu1 sid sname 把sid设置为主键
-- 一般每张表都有一个主键
create table stu1 (sid int primary key,sname varchar(20));

-- 方式2
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
create table stu4(sid int,sname varchar(20)); 
-- 添加主键约束
alter table stu4 ADD constraint primary key (sid);
-- 删除主键约束
alter table stu4 drop primary key;



-- 唯一约束(unique)
-- 特点: 值唯一 可以为空
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 ('haha');
insert into stu6 (sname,sid) values ('ha',null);


-- 域完整性
-- 作用:限制单元格内的数据的完整性
create table stu7(sid int primary key auto_increment,saname varchar(20) not null);

create table stu8(sid int primary key auto_increment,saname varchar(20) not null,sgender varchar(20) default '男');


-- 引用完整性(参照物约束)
-- 外键约束:FOREIGN KEY 
-- 主表和从表有依赖关系 从表依赖主表 这时可以给从表添加一个约束 外键约束

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)
);

猜你喜欢

转载自blog.csdn.net/zmw1224/article/details/80697635