-- 插入一行
-- INSERT INTO 表名 (字段1,字段2,...) VALUES (值1,值2,...);
-- 插入多行
-- INSERT INTO 表名 (字段1,字段2,...)
-- VALUES
-- (值1,值2,...),
-- (值1,值2,...);
INSERT INTO emp (ename,hiredate,sal,deptno) VALUES ('xxx','2000-01-01','1','1');
INSERT INTO emp VALUES ('x','2000-01-01','1','1');
INSERT INTO emp (ename,deptno) VALUES ('xxx','1');
-- 更新单表数据
-- UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,... [WHERE 条件语句]
UPDATE emp SET sal = 4000 WHERE ename = 'x';
-- 更新多表数据
-- UPDATE 表名1,表2... SET 表名1.字段1 = 值1,表名2.字段2 = 值2,... [WHERE 条件语句]
UPDATE emp a,dept b SET a.ename = '谢兴铧', b.deptname = '技术' WHERE a.deptno = b.deptno;
-- 删除单表数据
-- DELETE FROM 表名 [WHERE 条件语句]
DELETE FROM emp WHERE ename = 'xxx';
-- 删除多表数据
-- DELETE 表名1,表名2,... FROM 表名1,表名2,... [WHERE 条件语句]
DELETE a,b FROM emp a,dept b WHERE a.deptno = b.deptno AND a.ename = 'xxh';
-- 查询记录
-- SELECT * FROM 表明 [WHERE 条件语句];
SELECT * FROM emp;
SELECT ename,hiredate,sal,deptno FROM emp;
-- 查询不从重复的记录
SELECT DISTINCT ename FROM emp;
-- 条件查询
SELECT * FROM emp WHERE sal = 100;
SELECT * FROM emp WHERE sal = 4000 AND deptno = 1;
-- 排序和限制
-- SELECT * FROM 表名 [WHERE 条件语句] [ORDER BY 字段名1 [DESC|ASC],字段名2 [DESC|ASC],...];
SELECT * FROM emp WHERE deptno = 1 ORDER BY sal ASC;
-- 分页功能
-- 第一个数字代表从第几行开始;
-- 第二个数字的意思就是一页多少
SELECT * FROM emp ORDER BY sal LIMIT 6,3;
-- 聚合
-- SELECT 字段名1,字段名2,... 函数名
-- FROM 表名
-- [WHERE 条件语句]
-- [GROUP BY 字段名1 字段名2,... [WITH ROLLUP]]
-- [HAVING 条件]
-- 计算公司的总人数
SELECT COUNT(1) '总人数' FROM emp;
-- 统计各部门人数
SELECT deptno '部门',COUNT(1) '人数' FROM emp GROUP BY deptno;
-- 既要统计各部门人数,又要统计总人数
SELECT deptno,COUNT(1) FROM emp GROUP BY deptno WITH ROLLUP;
-- 统计人数大于1的部门
SELECT deptno,COUNT(1) FROM emp GROUP BY deptno HAVING COUNT(1) > 1;
-- 统计公司所有员工的薪水总额、最高和最低的薪水
SELECT SUM(sal),MAX(sal),MIN(sal) FROM emp;
-- 统计工资等于4000的总人数
SELECT sal,COUNT(1) FROM emp WHERE sal = 4000 GROUP BY sal;
-- 表连接
-- 内连接
-- 外连接
-- 左外连接
-- 右外连接
-- 内连接
-- 查询员工的名字和部门
SELECT ename,deptname FROM emp,dept WHERE emp.deptno = dept.deptno;
-- 左外连接
SELECT ename,deptname FROM emp
LEFT JOIN dept ON emp.deptno = dept.deptno;
-- 右外连接
-- 结果和左外连接一样,因为数据库名的位置交换了
SELECT ename,deptname FROM dept
RIGHT JOIN emp ON emp.deptno = dept.deptno;
SELECT ename,deptname FROM emp
RIGHT JOIN dept ON emp.deptno = dept.deptno;
-- 子查询
SELECT * FROM emp WHERE deptno in(SELECT deptno FROM dept);
自学MySQL
最新推荐文章于 2024-07-25 23:12:39 发布