如何管理MySQL?(SQL的增删改查5){第一阶段-1.5}

需要用到的文件粘贴代码命名为.sql后缀

#设置编码
SET names utf8;
#丢弃数据库
DROP DATABASE IF EXISTS tedu;
#床建数据库
CREATE DATABASE tedu charset=utf8;
#静茹数据库
USE tedu;
#创建表格
CREATE TABLE dept(
	did INT PRIMARY KEY auto_increment,
	dname VARCHAR(8) UNIQUE
	);
#插入数据
INSERT INTO dept VALUES (10,'研发部');
INSERT INTO dept VALUES (20,'运营部');
INSERT INTO dept VALUES (30,'市场部');
INSERT INTO dept VALUES (40,'测试部');

#创建员工表
CREATE TABLE emp(
	id INT PRIMARY KEY auto_increment,
	ename VARCHAR(16) NOT NULL,
	birsday date,
	sex boolean DEFAULT 0, #1-男  0-女
	salary DECIMAL(7,2),
	deptid INT,
	FOREIGN KEY(deptid) REFERENCES dept(did)
	);
#插入数据
INSERT INTO emp VALUES(null,'tao',default,'1973-7-15',50000,20);

1,简单查询

条件查询

  练习查询部门编号为10的员工

select *from emp where deptid='10'

练习查询部门编号为null的员工

 select *from emp where deptid is null

练习:满足7000以上的女员工

 select *from emp where salary>7000 and sex='0'

2,复杂查询

1,子查询

 示例:查询出高于平均工资的值

步骤一:查询出平均工资——11125

 select avg(salary) from emp;

步骤二:查询出工资大于11125的员工

select*from emp where salary >11125;

 综合:

select *from emp where salary>select avg(salary) from emp;

  练习:查询出和tao同一个部门的员工有哪些?

select *from emp where eid=(select   *from emp where eid='tao');

 步骤一 :

 select deptid from emp where ename="tao";

 步骤二:

select *from emp where deptid=20;

  综合:

select *from emp where deptid=(select deptid from emp where ename="tao")  and ename!='tao';

不包括‘tao’

加上

and ename!='tao'

 练习:查询和tom同一年出生的年份

 year()获取日期中的年份

2,多表查询

多表查询的数据他是分布在多个表里的

示例:查询所有员工的姓名及其部门名称

 select ename,dname from emp,dept;

3,连接

1,内连接

 select ename,dname from emp inner join dept on deptid=did;

2,左外连接

select 左数据项,右数据项 from 左数据表 左外显示 右表格 on 左数据=右边数据;

显示左侧表中所有记录,先写那个那个就是做

 3,左外连接 RIGHT

 select 左数据项,右数据项 from 左数据表 左外显示 右表格 on 左数据=右边数据;

 select ename,dname from emp right outer join dept on deptid=did;

显示右侧表中所有记录,后写那个那个就是右

左外和右外显示中outer关键字可以省略

 4,全连接

同时显示,左侧和右侧表中所以记录

full join.. on

mysql 不支持此链接

实现方法:

 union all 联合后不合并相同的项目

union 联合后合并相同的项目

select ename,dname from emp left outer join dept on deptid=did

union all

select ename,dname from emp right outer join dept on deptid=did

解决方案:将左外和右外连接进行联合,合并相同的相

则代码为:

select ename,dname from emp left outer join dept on deptid=did)union all (select ename,dname from emp right outer join dept on deptid=did

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿山同学.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值