-- 字段控制语句查询
-- 去除重复数据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)
);