mysql数据库(1)---简单查询【入门1】

建表语句

emp表:

CREATE TABLE `emp`(
    `empNo` INT(10) NOT NULL,
    `ename` VARCHAR(10) DEFAULT NULL,
    `job` VARCHAR(10) DEFAULT NULL,
    `mgr` INT(4) DEFAULT NULL,
    `hiredate` DATE DEFAULT NULL,
    `sal` DOUBLE(7,2) DEFAULT NULL,
    `comm` DOUBLE(7,2) DEFAULT NULL,
    `dadtno` INT(10) DEFAULT NULL,
    PRIMARY KEY(`empNo`) )

insert  into `emp`(`empNo`,`ename`,`job`,`mgr`,`hiredate`,`sal`,`comm`,`dadtno`) 
values 
(1234,'SAASAb','A',NULL,'2018-01-20',800.00,300.00,10),
(1235,'SAWECE','A',NULL,'2018-01-21',1600.00,100.00,10),
(1236,'DFDGSAD','A',NULL,'2018-02-20',2000.00,NULL,30),
(1237,'DFDSFEW','C',NULL,'2018-03-20',2500.00,500.00,30),
(1238,'DFSDF','C',NULL,'2018-03-20',1500.00,200.00,20),
(1239,'GHSDGSD','C',NULL,'2018-01-11',3000.00,1000.00,20),
(1240,'GHGFHTR','B',NULL,'2018-01-30',5000.00,NULL,40),
(1241,'NRTEEG','B',NULL,'2018-02-10',7000.00,NULL,10),
(1242,'THT%RE','B',NULL,'2018-01-12',1000.00,100.00,20),
(1243,'FSDF_WE','B',NULL,'2018-01-12',1000.00,100.00,30);

dept表

 CREATE TABLE dept(
	dadtno INT(10),
	dname VARCHAR(10),
	loc VARCHAR(10),
	 PRIMARY KEY (`dadtno`)
   )

insert  into `dept`(`dadtno`,`dname`,`loc`) values 
(10,'ACOUNTING','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');

 

salgrade表

CREATE TABLE salgrade(

grade INT(10),

losal INT(10),

hisal INT(10)

)

insert  into `salgrade`(`grade`,`losal`,`hisal`) values 
 (1,100,1200),(2,1021,1400),(3,1401,2000),(4,2001,3000),(5,3001,9999);

 

 

-- 【1】简单查询

 -- 1,查询要展示的字段
SELECT empNo,ename,job,mgr,hiredate,sal,comm,dadtno
FROM emp;
  -- 2,起别名时,可以使用AS、""、'',也可以不使用AS和引号
SELECT ename AS 名字,hiredate "日期",sal '月薪',dadtno 部门编号
FROM emp;


-- 【2】条件查询(使用WHERE)

-- 1,表达式
  /*
    SELECT 查询列表
    FROM 表名
    [WHERE 查询条件] 
  */
  
  -- 2,oracle在任何平台都是严格区分大小写  mysql在Linux和Unix平台区分大小写,windows不区分
  
  -- 3,用BINARY 关键字可以严格区分大小写(只会查到对应的大小写字母)
  SELECT *
  FROM emp
  WHERE BINARY ename ='SAASAb'; 
     

 

-- 【3】使用BETWEEN AND 作为查询条件

  -- 作用于数值型数据和日期型得数据,包含两个边界值
  -- 1,查询雇佣日期 2018-01-01 到 2018-01-20
  SELECT *
  FROM emp
  WHERE hiredate BETWEEN '2018-01-01' AND '2018-01-20'; 
  
  -- 2,查询名字"A"到"F"的员工
  SELECT *
  FROM emp
  WHERE ename BETWEEN 'A' AND 'Z';


  
-- 【4】使用AND作为查询条件(可以用&&代替)

 -- 1,查询工资大于1200,并且部门编号是20
  SELECT *
  FROM emp
  WHERE (sal>1200) AND (dadtno=20);


-- 【5】使用OR作为查询条件(等同于||)
 -- 可以使用OR链接两个查询条件,只需要满足其中任何一个条件即可
 -- 1,查询工资大于1200或部门编号是20的员工
 SELECT *
 FROM emp
 WHERE (sal>1200) OR (dadtno=20);


-- 【6】AND和OR的优先级;首先执行AND,后执行OR

 -- 注:搞不清楚的时候,可以使用()改变运算的顺序
  -- 1,查询薪水大于1800,并且部门编号为20或30的员工
  SELECT *
  FROM emp
  WHERE (sal>1800) AND (dadtno=20 OR dadtno=30);


  
-- 【7】使用IN作为查询条件,IN表示包含的意思

 -- 1,查询职位是"A"或"C"的员工信息
  SELECT *
  FROM emp
  WHERE job IN ("A","C");
  
  -- 2,用OR完成
  SELECT *
  FROM emp
  WHERE (job="A") OR (job="C");
  
  -- 3,查询不是"A"或 "C"的员工

  SELECT *
  FROM emp
  WHERE job NOT IN ("A","C");


    
  
-- 【8】使用NOT作为查询条件;NOT是取反的意思;等同于Java的!;

 -- 查询薪水不是1600和薪水不是3000的员工
  -- 方式1,
  SELECT *
  FROM emp
  WHERE sal NOT IN(1600,3000);
  
  -- 方式2
  SELECT *
  FROM emp
  WHERE (sal !=1600) AND (sal!=3000);
  
  -- 方式3
  SELECT *
  FROM emp
  WHERE NOT(sal=1600 OR sal=3000);
  
  -- 2,查询津贴不是NULL的员工
  SELECT *
  FROM emp
  WHERE comm IS NOT NULL;


    

-- 【9】使用LIKE执行模糊查询

 -- %表示0个或多个任意字符;_表示一个字符
  -- 1,查询名字中有"A"的员工
  SELECT *
  FROM emp
  WHERE ename LIKE "%A%";
  
  -- 2,查询名字"S"开头的员工
  SELECT *
  FROM emp
  WHERE ename LIKE "S%";
  
  -- 3,查询名字第二个字符是"A"的员工
  SELECT *
  FROM emp
  WHERE ename LIKE "_A%";  
  
  -- 4,查询名字倒数第三个字符"S"的员工
  SELECT *
  FROM emp
  WHERE ename LIKE "%S__";
  
  -- 5,查询名字含有%(_)的员工,查询数据%(_)与通配符冲突,必须要使用转移符\;也就是要查询\后面的字符
     -- 5.1查询%
     SELECT *
     FROM emp
     WHERE ename LIKE "%\%%";
     -- 5.2查询_
     SELECT *
     FROM emp
     WHERE ename LIKE "%\_%";


  
  -- 【10】使用ORDER BY子句给查询结果排序(默认升序排序)

 -- 排序的时候可以按照单个字段,也可以多个字段
  -- 表达式
 /*
     SELECT 查询列表
     FROM 表名
     [WHERE 查询条件]
     [ORDER BY 排序字段1,排序字段2...]
 */

  -- 1,按照部门编号排序 (ASC 升序 , DESC 降序)
    -- 1.1 ASC排序
    SELECT *
    FROM emp
    ORDER BY dadtno ASC;
    -- 2.2 DESC排序
    SELECT *
    FROM emp
    ORDER BY dadtno DESC;
    
  -- 2,查询工资大于1200的员工和编号,并且部门编号升序排序,工资降序排序
  SELECT *
  FROM emp
  WHERE sal >1200
  ORDER BY dadtno ASC,sal DESC;
  
  -- 3,查询员工的年薪并且起别名,然后按照年薪的别名进行排序
  SELECT ename,job,sal,sal*12 AS "年薪"
  FROM emp
  ORDER BY 年薪;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江边小子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值