② Mysql-查询语句select

Mysql-查询语句

创建emp,dept,salgrade表
#创建salgrade表

create table salgrade
(grade int(2) primary key,
losal float(7,2),
hisal float(7,2)
)engine=innodb default charset=utf8;

#创建dept表

create table dept
(deptno int(2) primary key,#主键约束
dname varchar(20) not null,#非空约束
loc varchar(20) not null,
index dept_index(deptno) #表示在deptno列上创建索引dept_index
)engine=innodb default charset=utf8;

#创建emp表

create table emp
(empno int(4) primary key,
ename varchar(20) not null,
job varchar(10) not null,
mgr int(4),
hiredate date not null,
sal float(7,2) not null,
comm float(7,2),
deptno int(2),
index emp_index(deptno),
foreign key(deptno) references dept(deptno) on delete cascade on update cascade #在deptno列上创建外键约束,引用dept表的deptno列,具有级联删除和修改
 )engine=innodb default charset=utf8;

向其中插入数据

#向dept表插入数据
insert into dept values
	(10,'ACCOUNTING','NEW YORK'),
	(20,'RESEARCH','DALLAS'),
	(30,'SALES','CHICAGO'),
	(40,'OPERATIONS','BOSTON');
	
#向salgrade 表中插入数据
insert into salgrade values
	(1,700,1200),
	(2,1201,1400),
	(3,1401,2000),
	(4,2001,3000), 
	(5,3001,9999);

#向 emp 表中插入数据
insert into emp values 
	(7369,'SMITH','CLERK',7902,'1980-12-17',800,null,20), 
	(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30),
	(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30),
	(7566,'JONES','MANAGER',7839,'1981-04-02',2975,null,20),
	(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30),
	(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,null,30),
	(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,null,10),
	(7788,'SCOTT','ANALYST',7566,'1987-07-13',3000,null,20),
	(7839,'KING','PRESIDENT',null,'1981-11-07',5000,null,10), 
	(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30),
	(7876,'ADAMS','CLERK',7788,'1987-07-13',1100,null,20),
	(7900,'JAMES','CLERK',7698,'1981-12-03',950,null,30),
	(7902,'FORD','ANALYST',7566,'1981-12-03',3000,null,20),
	(7934,'MILLER','CLERK',7782,'1982-01-23',1300,null,10);


dept表
在这里插入图片描述
salgrade表
在这里插入图片描述
emp 表
在这里插入图片描述

1) select

基本语法:

select 列名1,2,... from1,2,..;

【例】查询emp表中员工的姓名

select ename from emp;

查询结果
在这里插入图片描述
1)查询所有列
语法:

select1,2,... from 表名;

[例] 查询dept表中的所有列

select deptno,dname,loc from dept;

所有列名可以用 * 代替

select * from dept;

2)算术运算

注意 :对数值型和日期型数据可用算数运算创建表达式
如:在员工表emp中所有人工资加100,并显示员工名,涨工资前的工资

select ename,sal,sal+100 from emp;

查询结果
在这里插入图片描述
如:在员工表emp中所有人的年薪工资

select ename,sal*12 from emp;

如:在员工表emp中所有人每天的工资

select ename,sal/30from emp;

3)空值

空值: 是指不可用,不知道,不适用的值,空值不等于零或空格,包括空值的算法表达式等于空
【例】查询员工表中所有员工的姓名,月收入(工资+奖金)

select ename,sal+comm from emp;

v

4)列的别名

【例】查询员工表中所有员工的姓名,年薪(12个月的工资)
用as取别名

select ename,sal*12 as "年薪" from emp;

在这里插入图片描述

不用as也可

select ename,sal*12 "年薪" from emp;

5)重记录

关键字:distinct

如查询员工表中的mgr数据未去重

select mgr from emp;

查询结果
在这里插入图片描述
使用distinct 去重

select distinct mgr from emp;

结果
在这里插入图片描述
【练习】从emp表中查询员工姓名,工资,奖金,以及年收入(工资+奖金的总和*12),给年收入列取别名”年收入”

6) 限定和排序

where子句:限定查询返回的记录
注意:

  1. 在Where子句中字符串和日期要用单引号扩起来
  2. 对字符串不区分大小写,可以使用BINARY关键字设定字符串区分大小写
  3. 日期值是格式敏感的
  4. 在Where子句后面不能使用列的别名限定查询

如: 查询员工表中职位为clerk的员工的姓名,职位,部门号exercise1``exercise

select ename,job,deptno from emp where job = 'clerk';

查询结果
在这里插入图片描述
binary 关键字设定字符串区分大小写

select ename,job,deptno from emp where job =  binary 'CLERK';

8)比较运算符

比较运算符:=、>、>=、<、<=、<>/!=

【例】查询员工表中工资大于2000的员工的姓名,工资

select ename,sal from emp
where sal > 2000.00;

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值