MySql 查询实例

SQL数据库操作实例
USE  testdb;
CREATE DATABASE testdb CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE emp(
    empno INT AUTO_INCREMENT PRIMARY KEY,
    ename VARCHAR(20) NOT NULL,
    sal DOUBLE ,
    deptno INT,
    mgr INT
);
CREATE TABLE dept(
    deptno INT AUTO_INCREMENT PRIMARY KEY,
    dname VARCHAR(50),
    loc VARCHAR(50)
);

#drop database testdb;
#drop table emp;
#drop table dept;

SELECT * FROM emp;
SELECT * FROM dept;

INSERT INTO emp(ename,sal,deptno,mgr) VALUE("张三",100.0,1,8); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("李四",200.0,1,8); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("王二",300.0,1,8); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("麻子",400.0,1,8); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("lini",100.0,2,9); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("big",100.0,2,9); 
INSERT INTO emp(ename,sal,deptno,mgr) VALUE("duog",2100.0,2,9); 
INSERT INTO emp(ename,sal,deptno) VALUE("boss",1200.0,3); 
INSERT INTO emp(ename,sal,deptno) VALUE("mgr",1000.0,4); 

INSERT INTO dept(dname,loc) VALUE("研发部","501");
INSERT INTO dept(dname,loc) VALUE("财务部","502");
INSERT INTO dept(dname,loc) VALUE("项目管理","503");
INSERT INTO dept(dname,loc) VALUE("财政管理","504");

#查找所有员工的信息,部门信息,领导信息
#emp表:远信息;
#dept:部门信息
#emp:领导信息
#关联条件
#e.deptno = d.deptno
#e.mgr = m.empno
SELECT e.empno,e.ename,e.sal FROM emp e;
SELECT e.empno,e.ename,e.sal,d.dname,d.loc FROM emp e,dept d WHERE e.deptno=d.deptno;
SELECT e.empno,e.ename,e.sal,d.dname,d.loc,m.ename FROM emp e,dept d,emp m WHERE e.deptno=d.deptno AND e.mgr=m.empno;
#查找部门名称,部门人数,平均工资,最高工资,最低工资
#dept:部门名称
#emp:统计部门人数,平均工资,最高工资,最低工资
#关联条件
#e.deptno=d.deptno
SELECT deptno dptno,COUNT(empno) COUNT,AVG(sal) AVG,MAX(sal) MAX,MIN(sal) MIN FROM emp GROUP BY deptno;
SELECT d.deptno,d.dname,dt.count,dt.avg,dt.max,dt.min FROM dept d,(SELECT deptno dptno,COUNT(empno) COUNT,AVG(sal) AVG,MAX(sal) MAX,MIN(sal) MIN FROM emp GROUP BY deptno) dt WHERE d.deptno=dt.dptno;
#比李四工资高的同部门雇员信息
#emp:查出用户信息
#emp:李四的工资与deptno
#关联条件:
#e.deptno=m.deptno
SELECT sal,deptno FROM emp WHERE ename="李四";
SELECT e.empno,e.ename,e.sal FROM emp e,(SELECT sal,deptno FROM emp WHERE ename="李四") m WHERE e.deptno=m.deptno AND e.sal>m.sal;
#工资高于本部门平均工资的雇员信息
#emp:雇员信息
#emp:统计平均工资
#关联条件:
#e.deptno=d.deptno
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;
SELECT e.empno,e.ename,e.sal,tm.avg,e.deptno FROM emp e ,(SELECT deptno,AVG(sal) AVG FROM emp GROUP BY deptno) tm WHERE e.sal>=tm.avg AND e.deptno=tm.deptno;
#工资比李四或mgr工资高的雇员信息,部门信息,部门人数
#emp:雇员信息
#dept:部门信息
#emp:部门人数
#关联条件
#e.deptno=d.deptno
SELECT sal,deptno FROM emp WHERE ename IN ("李四","mgr");
SELECT e.empno,e.ename,e.deptno FROM emp e WHERE e.sal >ANY(SELECT sal FROM emp WHERE ename IN ("李四","mgr"));
SELECT e.empno,e.ename,e.deptno,d.dname FROM emp e,dept d WHERE e.sal >ANY(SELECT sal FROM emp WHERE ename IN ("李四","mgr")) AND e.deptno = d.deptno;
SELECT COUNT(empno),deptno FROM emp WHERE sal >ANY(SELECT sal FROM emp WHERE ename IN ("李四","mgr")) GROUP BY deptno ;
SELECT e.empno,e.ename,e.deptno,d.dname,dc.count FROM emp e,dept d,(SELECT COUNT(empno) COUNT,deptno FROM emp WHERE sal >ANY(SELECT sal FROM emp WHERE ename IN ("李四","mgr")) GROUP BY deptno) dc WHERE e.sal >ANY(SELECT sal FROM emp WHERE ename IN ("李四","mgr")) AND e.deptno = d.deptno AND e.deptno=dc.deptno AND e.ename<>"李四" AND e.ename<>"mgr";

### 关于 MySQL 查询的示例与教程 在学习 MySQL 的过程中,掌握查询的基础语法和优化技巧是非常重要的。以下是几个常见的 MySQL 查询示例及其解释。 #### 基础查询示例 最基础的 SQL 查询是从表中检索数据。例如,假设有一个名为 `users` 的表,其中包含用户的姓名、年龄和其他信息: ```sql SELECT * FROM users; ``` 这条语句会返回 `users` 表中的所有记录[^3]。 如果只想获取特定列的数据,则可以指定这些列名。例如,只选择用户名和年龄两列: ```sql SELECT username, age FROM users; ``` #### 条件过滤查询 为了筛选满足某些条件的数据,可以在查询中加入 `WHERE` 子句。例如,查找名字为 `'JohnDoe'` 的用户: ```sql SELECT * FROM users WHERE username = 'JohnDoe'; ``` 此查询仅返回那些用户名等于 `'JohnDoe'` 的行。 #### 使用 EXPLAIN 进行查询分析 对于复杂的查询,理解其执行过程非常重要。MySQL 提供了一个工具——`EXPLAIN`,可以帮助开发者了解查询是如何被执行的。以下是一个使用 `EXPLAIN` 的简单例子: ```sql EXPLAIN SELECT * FROM users WHERE username = 'JohnDoe'; ``` 运行上述命令后,MySQL 将显示该查询的执行计划,包括使用的索引、扫描方式等内容。 #### 聚合函数的应用 聚合函数如 `COUNT()` 和 `SUM()` 可以用来统计或计算一组数值的结果。比如,要统计有多少个用户: ```sql SELECT COUNT(*) AS total_users FROM users; ``` 或者求某一列(如年龄)的总和: ```sql SELECT SUM(age) AS total_age FROM users; ``` #### 排序与分页 当需要按某种顺序排列结果时,可使用 `ORDER BY` 子句;而通过 `LIMIT` 则能实现分页功能。例如,按照年龄降序排列并取前 10 名用户: ```sql SELECT * FROM users ORDER BY age DESC LIMIT 10; ``` 以上是一些基本但非常实用的 MySQL 查询示例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值