学习MySQL之单表操作(二)
                        
                            时间:2021-07-01 10:21:17
                            帮助过:13人阅读
							                        
                     
                    
                    
                    CREATE TABLE t_employee(
    empno INT(
11),
    ename VARCHAR(
20),
    job VARCHAR(
40),
    MGR INT(
11),
    Hiredate DATE DEFAULT ‘0000-00-00‘,
    sal DOUBLE(
10,
2),
    comm DOUBLE(
10,
2),
    deptno INT(
11),
    UNIQUE INDEX uk_empno(empno)         ##使用唯一索引
);
##增
INSERT INTO t_employee VALUE(
7369,
‘SMITH‘,
‘CLERK‘,
7902,
‘1981-03-12‘,
800.00,
NULL,
20),
    (7499,
‘ALLEN‘,
‘SALESMAN‘,
7698,
‘1982-03-12‘,
1600,
300,
30),
    (7521,
‘WARD‘,
‘SALESMAN‘,
7698,
‘1982-03-12‘,
1250,
500,
30),
    (7566,
‘JONES‘,
‘MANAGER‘,
7839,
‘1981-03-12‘,
2975,
NULL,
20),
    (7654,
‘MARTIN‘,
‘SALESMAN‘,
7698,
‘1981-03-12‘,
1250,
1400,
30),
    (7698,
‘BLAKE‘,
‘MANAGER‘,
7839,
‘1981-03-12‘,
3000,
NULL,
10),
    (7902,
‘FORD‘,
‘ANALYST‘,
7566,
NULL,
3000,
NULL,
20),
    (7934,
‘CLERK‘,
‘SALESMAN‘,
7782,
‘1989-03-12‘,
1300,
NULL,
10);
    (7938,
‘SMILL‘,
‘ANALYST‘,
7722,
‘1986-03-12‘,
1300,
100,
40);
    
##删
DELETE FROM t_diary;
SELECT * FROM t_diary;
    
##改    
UPDATE t_employee 
SET Hiredate
=‘1985-3-12‘ WHERE empno
=7902;
UPDATE t_employee 
SET comm
=0.00 WHERE comm 
IS NULL;
##查
SELECT * FROM t_employee;
##查1:去除重复项
SELECT DISTINCT job 
FROM t_employee ;
##查2:统计
SELECT COUNT(
*) 
AS COUNT FROM t_employee;
##查3:计算 (年薪)
SELECT empno,ename,(sal
*12+comm) 
AS yearSal 
FROM t_employee;
##查4:设置格式显示,可拼接字符串,字段
SELECT  ename 
AS ‘雇员‘, CONCAT(
‘年薪为‘,sal
*12+comm) 
AS ‘年薪‘ FROM t_employee;
##查5:运用关键字 Like 模糊查询,通配符,条件符
SELECT * FROM t_employee 
WHERE ename 
LIKE ‘_a%‘;
SELECT * FROM t_employee 
WHERE ename 
NOT LIKE ‘_A%‘;
SELECT * FROM t_employee 
WHERE Hiredate 
BETWEEN ‘1900-1-1‘ AND ‘1981-3-12‘;
##查6:使用关键字 in 范围查询
SELECT * FROM t_employee 
WHERE empno 
IN (
7499,
7521,
7902);
SELECT * FROM t_employee 
WHERE empno 
NOT IN (
7499,
7521,
7902);
##查7:排序查询
SELECT * FROM t_employee 
ORDER BY empno 
ASC;        ##正序
SELECT * FROM t_employee 
ORDER BY sal 
DESC;        ##倒序
SELECT * FROM t_employee 
ORDER BY sal 
DESC,comm 
DESC;    ##多字段排序
##查8:限制查询结果的显示条数
/*可用于分页显示
*/
SELECT * FROM t_employee 
WHERE comm
=0 LIMIT 
2;         ##显示 
< 查询结果
SELECT * FROM t_employee 
WHERE comm
=0 LIMIT 
10;        ##显示 
> 查询结果
##查9:指定查询结果显示的初始位置及结束位置
SELECT * FROM t_employee 
ORDER BY sal 
ASC,comm 
ASC;
SELECT * FROM t_employee 
ORDER BY sal 
ASC,comm 
ASC LIMIT 
1,
5;    ##从第2条开始,显示5条
##查10:统计函数查询
##如果 被操作的表是空,count返回0,其他函数返回 NULL
SELECT COUNT(empno) 
FROM t_employee;     ##
COUNT():统计记录条数
SELECT SUM(sal) 
FROM t_employee;    ##
SUM():统计字段总和
SELECT AVG(sal) 
FROM t_employee;    ##
AVG():统计字段平均值
SELECT MAX(sal) 
FROM t_employee;    ##
MAX():统计字段最大值
SELECT MIN(sal) 
FROM t_employee;    ##
MIN():统计字段最小值
##查11:(单列,多列)分组数据查询(与统计函数一起使用才有价值)
SELECT * FROM t_employee 
GROUP BY deptno;    ##单列分组
SELECT job 
FROM t_employee 
GROUP BY job;    ##与去除重复项功能相似
SELECT deptno,GROUP_CONCAT(ename) 
AS enames,
COUNT(ename) 
AS number
    FROM t_employee 
GROUP BY deptno;    ##单列分组与统计总和
SELECT deptno,
AVG(sal) 
AS avgsal,GROUP_CONCAT(ename) 
AS enmaes,
COUNT(ename) 
AS number
    FROM t_employee 
GROUP BY deptno;    ##单列分组、统计总和与平均数
    
SELECT deptno,Hiredate,
COUNT(ename) 
AS enames,GROUP_CONCAT(ename) 
number 
    FROM t_employee 
GROUP BY deptno,Hiredate;    ##多列分组查询与统计
##查12:使用 HAVING 字句限定分组查询
SELECT deptno,
AVG(sal) 
AS avgsal,GROUP_CONCAT(ename) 
AS enmaes,
COUNT(ename) 
AS number
    FROM t_employee 
GROUP BY deptno 
HAVING AVG(sal)
>2000;    ##单列分组、统计总和,与平均工资
>2000的组
所有代码,均为自学时用到的测试与注释,知识细节或知识点不会面面俱到,亦不会有任何讲解,只做为自己学习复习用。 
学习MySQL之单表操作(二)
标签: