mysql--数据查询语言DQL

查询的方式有三种:选择、投影、连接

Select 子句  from 子句

where 子句

     order by 排序

     having  子句

     group by 分组

     union  连接

1.无条件单表查询

(1)查询表中所有的列

select * from emp;
(2)查询表中指定列
select  eno,ename from emp;可以更改列的顺序
(3)算术运算符
Select 子句中支持加减乘除和函数
Eg.查看员工年薪
Select ename,empno,sal*12+comm from emp; 
Eg.员工转正后,月薪上调20%, 请查询出所有员工转正的月薪;转正日期为入职后的6个月
select ENAME '员工姓名' , SAL '实习工资' , hiredate '入职日期', hiredate+interval 6 month '转正日期', sal*1.2 '转正工资' from emp;
Eg.员工试用期6个月,转正后月薪上调20%,请查询所有员工工作第一年的年薪所得
 (不考虑奖金部分,年薪的试用期6个月的月薪+转正后的6个月的月薪)
select ENAME '员工姓名' , SAL '实习工资' , hiredate '入职日期', hiredate+interval 6 month '转正日期', sal*6+sal*1.2*6 '年薪' from emp;
select ename,sal,DATE_ADD(hiredate,INTERVAL  6  MONTH) as newdate from emp;
(4)null
任何值与null计算结果都为null
通过ifnull 将 null 置为0
select ename,sal*12+ifnull(comm,0) from emp;
(5)别名
Select 列 ‘列名’  from emp;
Select 列 as ‘列名’  from emp
Eg.员工试用期6个月,转正后月薪上调20%,请查询出所有员工工作第一年的所有收入,需要考虑奖金部分,要求显示列标题为员工姓名,工资收入, 奖金收入,总收入
select ENAME '员工姓名' , sal*6+sal*1.2*6 '工资收入', ifnull(comm, 0) '奖金收入' , sal*6+sal*1.2*6+ifnull(comm, 0) '年薪' from emp;
(6)连接字符串

   Oracle 使用||进行字符串连接
   Sql server 使用+进行字符串连接
   Mysql 使用cancat()函数进行字符串连接
   字符串常量被称为原义字符串
select concat(ename,' 的岗位是 ',job) '员工岗位' from emp;
(7)消除重复行
select distinct job from emp;
2.条件单表查询
(1)where
        关系运算符(<  <=  > >=  <>  !=   = )

           可以对数值型 字符型 日期型 直接进行运算

select empno,ename,deptno from emp where ename>'王'
        特殊运算符(between and  in  like is null)

           between 上限 and 下限   结果集操作包含上限和下限对应的行

           like 模糊查询 %零个或者多个字符  _表示有且仅有一个字符,可以通过escape标示符实现对_ % 本身这两个字符的查找

           不区分大小写

select empno,ename,deptno from emp where empno between '00002' and '00003';
select *  from emp where comm in(500,800);
select empno,ename,deptno from emp where empno in('00002','00003' );
select *  from emp where ename like '王%';
select *  from emp where hiredate like '__03%';
select *  from emp where ename like '%/_%' escape '/';
       逻辑运算符(and  or  not) 优先级not and or

(2)order by

默认为升序 asc 
降序序显式声明为desc

select * from emp order by deptno desc;
select ename,job from emp order by deptno asc;
多列排序 
select * from emp order by deptno asc,sal desc;
select ename,job from emp order by 2 asc;
3.分页

limit 0,5  0代表起始行 5代表起始行开始连续的行的个数

4.mysql中用命令行复制表结构

(1)只复制表结构到新表

CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2;
或者  CREATE TABLE 新表 LIKE 旧表 ;
(2)复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
(3)复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表
(4)复制旧表的数据到新表(假设两个表结构不一样)
 INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值