运用前面所学,完成创建表、插入数据等操作
创建员工信息表和部门信息表
eno(编号) | ename(姓名) | sex(性别) | phone(手机号) | address(家庭住址) | |
---|---|---|---|---|---|
dname(部门名称) | loc(部门地址) | |
---|---|---|
10 | 妖怪大道 | 妖怪路 |
20 | 芭蕉洞 | 火焰山 |
30 | 花柳楼 | 女儿国 |
答案:1、创建表
create table t_emp(
eno int,
ename varchar(20),
sex varchar(2),
phone varchar(11),
address varchar(50),
deptno int
);
2、添加数据
insert into t_emp values(1,‘孙悟空‘,‘男‘,‘110‘,‘花果山水帘洞‘,10);
insert into t_emp values(2,‘猪八戒‘,‘男‘,‘120‘,‘高老庄‘,10);
insert into t_emp values(3,‘沙悟净‘,‘男‘,‘130‘,‘流沙河‘,10);
insert into t_emp values(4,‘牛魔王‘,‘男‘,‘140‘,‘火焰山‘,20);
insert into t_emp values(5,‘罗刹女‘,‘女‘,‘150‘,‘火焰山‘,20);
insert into t_emp values(6,‘玉面狐‘,‘女‘,‘160‘,‘火焰山‘,20);
insert into t_emp values(7,‘白骨精‘,‘女‘,‘170‘,‘白骨洞‘,30);
insert into t_emp values(8,‘蜘蛛精‘,‘女‘,‘190‘,‘盘丝洞‘,30);
insert into t_emp values(9,‘百花仙子‘,‘女‘,‘101‘,‘天宫‘,30);
新增薪资列
alter table t_emp add salary double;
3.创建t_dept部门表,及添加数据
create table t_dept(
deptno int,
dname varchar(20),
loc varchar(20)
);
insert into t_dept values(10,‘妖怪大道‘,‘妖怪路‘);
insert into t_dept values(20,‘芭蕉洞‘,‘火焰山‘);
insert into t_dept values(30,‘花柳楼‘,‘女儿国‘);
count函数在求总行数时,为null的不计入总数
select count(*) from 表名; 结果是以该表中行数最多的列的行数为主
select count(eno) from t_emp; 以eno的总条数为结果
select count(1) from t_emp; 类似于*的功能
ifnull(参数一,参数二);
判断指定列的值是否为空,如果为空以什么来代替,参数一代表列,参数二代表要替换的值
二、
三、分组查询:
概念:指定以某一个特点为依据进行划分
关键字:group by ,having
需求:查询该公司员工中男女的数量分配
select sex,count(*) from t_emp group by sex;
需求:查询各部门薪资的总和
select deptno,sum(salary) from t_emp group by deptno;
需求:查询部门薪资总和中大于12000的
select deptno,sum(salary) from t_emp group by deptno having sum(salary)>12000;
注意:
where和having的区别:where是直接筛选数据的,having是针对group by分组后的数据进行二次筛选的
where是跟在表的后面使用的,having是需要结合group by使用的,having很耗性能
四、别名