mysql基础笔记--day02

/*
回顾:
DDL   create  drop
DML   insert update delete
DQL   select
a,基本查询
b,条件查询 where 
c,排序   order by 
d,分组  group by
e,分组后的过滤  having
f,字段的控制  distinct  别名...
*/
-- 分页查询
/*
在实际的Web开发中有可能一页的数据太多,不能够
在一页展示,如果展示也可能造成性能的丢失,所以为
了提高用户的体验,我们可以数据分页的显示在web
页面上。实际开发中分页分为2种 一种为
真分页 数据库采用了分页查询
假分页  数据库没有采用分页查询,而是在服务端对数据
进行处理。


limit 注意 这个不是SQL标准,只能在mysql中使用。
limit 参数1,参数2
1-- 从第几条开始   从0开始
2-- 改页的条数
*/
USE java1711;


-- 每页4条记录  第一页
SELECT *
FROM emp
LIMIT 0,4;


-- 每页4条记录  第二页
SELECT *
FROM emp
LIMIT 4,4;


-- 当前页-1 * 每页的条数


-- 每页4条记录  第三页
SELECT *
FROM emp
LIMIT 8,4;


-- 每页4条记录  第四页
SELECT *
FROM emp
LIMIT 12,4;


SELECT *
FROM emp
WHERE deptno='30'


SELECT *
FROM emp
WHERE comm>sal;


/*4. 找出奖金高于工资60%的员工。*/
SELECT *
FROM emp
WHERE comm>sal*0.6;
/*5. 找出部门编号为10中所有经理,和部门编号为20中所有
销售员的详细资料。*/
SELECT *
FROM emp
WHERE deptno=10 AND job='经理' OR deptno=20 AND job='销售员';
/*6. 找出部门编号为10中所有经理,部门编号为20中所有销
售员,还有即不是经理又不是销售员但其工资大或等于
20000的所有员工详细资料。*/
SELECT *
FROM emp
WHERE deptno=10 AND job='经理' OR
deptno=20 AND job='销售员' OR
job!='经理' AND job!='销售员' AND sal>=20000;
/*7. 有奖金的工种。*/
SELECT *
FROM emp
WHERE comm IS NOT NULL;
/*8. 无奖金或奖金低于10000的员工。*/
    SELECT ename
    FROM emp
    WHERE comm IS NULL OR comm<10000;
/*9. 查询名字由三个字组成的员工。*/
SELECT * FROM emp
WHERE ename LIKE '___';
/*10.查询2000年入职的员工。*/
SELECT ename
FROM emp
WHERE hiredate LIKE '2000%';






/*11. 查询所有员工详细信息,用编号升序排序*/
SELECT *
FROM emp
ORDER BY empno ASC;
/*12. 查询所有员工详细信息,用工资降序排序,如果工资
相同使用入职日期升序排序*/
SELECT *
FROM emp
ORDER BY sal DESC ,hiredate ASC;
/*13. 查询每个部门的平均工资*/
SELECT deptno,AVG(sal)
FROM emp
GROUP BY deptno;
/*14. 求出每个部门的雇员数量。*/
SELECT DEPTNO, COUNT(EMPNO)FROM emp GROUP BY deptno;
/*15. 查询每种工作的最高工资、最低工资、人数*/
SELECT job, MAX(sal),MIN(sal),COUNT(*)
FROM emp
GROUP BY job
/*16. 显示非销售人员工作名称以及从事同一工作雇员的月
工资的总和,并且要满足从事同一工作的雇员的月工资合
计大于50000,输出结果按月工资的合计升序排列*/
SELECT job '工种',SUM(sal) '月工资' 
FROM emp
WHERE job!='销售员'   
GROUP BY job
HAVING SUM(sal)>50000
ORDER BY SUM(sal) ASC;
/*
select
from  
where 
group by 
having 
order by 
limit 
*/


/*
数据库的约束
和Java中的 泛型有些类似,目的是为了让程序报错。
为了数据库中记录的数据有意义。保证数据的完整性。

对于MySql来说有下面常见的约束
a,主键约束   
单列    PK
联合   了解
b,唯一约束
c,非空约束
d,外键约束
e,检查约束  MySql不支持
*/
CREATE DATABASE java1711_1;
USE java1711_1;
DROP TABLE t_student;
CREATE TABLE t_student(
sno INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
cardID VARCHAR(18) UNIQUE
);
INSERT INTO t_student(NAME,cardID) VALUES('张三',NULL);
INSERT INTO t_student(NAME,cardID) VALUES('李四','123');
INSERT INTO t_student(NAME,cardID) VALUES('王五','456');
SELECT * FROM t_student;
DROP TABLE t_user;
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,  -- 主键  并且自增长
username VARCHAR(30) BINARY UNIQUE NOT NULL, -- 唯一  非空
PASSWORD VARCHAR(30) NOT NULL -- 非空
);
/*
BINARY 
MySql 默认情况下 在Windows系统下字段是不区分大小写
在Linux 会区分大小写。
*/
INSERT INTO t_user(username,PASSWORD) VALUES('root','123456');
INSERT INTO t_user(username,PASSWORD) VALUES('system','6666');
INSERT INTO t_user(username,PASSWORD) VALUES('Root','123456');
SELECT * FROM t_user;




/*
外键  必须要先有班级才能有学生
学生表
班级表
*/
DROP TABLE t_student;
CREATE TABLE t_student(
sno INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
age INT,
address VARCHAR(50),
c_id INT,
CONSTRAINT t_666 FOREIGN KEY (c_id) 
REFERENCES t_class(c_id)
);
DROP TABLE t_class;
CREATE TABLE t_class(
c_id INT PRIMARY KEY,
c_name VARCHAR(30)
);
INSERT INTO t_class(c_id,c_name) VALUES(1,'Java1711');
INSERT INTO t_class(c_id,c_name) VALUES(2,'Java1710');
INSERT INTO t_class(c_id,c_name) VALUES(3,'Java1712');


SELECT * FROM t_class;
INSERT INTO t_student(NAME,age,address,c_id) VALUES('张三',10,'合肥',4);


SELECT * FROM t_student;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值