select:

实际场景:

1、从 user_tab 表中把所有的用户信息都找出来(查询)

SELECT * FROM user_tab;

2、查询表中部分列信息;查询用户的姓名,手机号,邮箱;

SELECT user_name,phone,email FROM user_tab;

3、给查询出来的列起别名

SELECT user_name 姓名,phone 电话,email 邮箱 FROM user_tab;

_____________________________________________________________________________

distinct

去掉重复的数据(指的是一模一样的数据),相同数据只保留一行显示

例如:SELECT DISTINCT job,deptno FROM emp;

Where(and/or/in/between...and/not)

查询带有查询条件的查询语句:根据查询条件来查询数据;

关键字: WHERE 

查询条件:列名 运算符 搜索值

  • 单条件查询:一个查询条件

单条件查询运算符: = ,!= (<>),>,<>=,<=

备注:搜索值区分大小写,区分中英文,搜索值除了数字以外,其它字符必须加单引号或者双引号括起来

  • 多条件查询,多个查询条件

条件连接: AND   OR  

查询条件 AND 查询条件 :功能,将同时满足两个条件的数据查询出来;

查询条件 OR 查询条件: 功能,只要满足其中一个查询条件就查询出结果来;

多条件的运算符: IN    BETWEEN ... AND ...    NOT

IN 多值运算符

用法: IN(搜索值1,搜索值2,...)  功能:将满足这几个搜索值的数据都查询出来

等价于: 列名=搜索值1 OR 列名=搜索值2 OR 列名=搜索值3 ... 列名必须一样

备注:如果搜索值是字符类型,记得必须加单引号   IN('搜索值1','搜索值2',...)

例如:SELECT * FROM emp WHERE deptno IN(10,20);

BETWEEN ... AND ... 查询一个区间范围内的数据,用在数据类型查询居多;

例如: 查询薪水在2000~3000之间的员工信息;

SELECT * FROM emp WHERE sal>=2000 AND sal<=3000;             

SELECT * FROM emp WHERE sal BETWEEN 2000 AND 3000

NOT(1个或者多个查询条件)

作用: NOT 取反,功能:是括号中查询条件取反的所有数据

例如:

SELECT * FROM emp WHERE NOT(sal>=2000 AND sal<=3000);

————————————————————————————————————

2.2 模糊查询,排序(like/%/_/order by/limit)

例如,查询名字中包含 '司马...'的用户信息

关键字: LIKE , 不能单独使用,必须结合通配符 % 或者是 _ 一起使用:

% 代表的是0个或者任意多个字符;

张% : 张,张三,张三丰,张三*************,即指以张开头的所有数据

%张:代表以张结尾的所有数据

%张%:代表,包含张的所有信息,抽奖,摇号用的最多

_ :代表的仅是 1 位任意字符,占位符

例如:查询名字中包含 '司马...'的用户信息

SELECT * FROM user_tab WHERE user_name LIKE '%司马%';

例如:查询名字中包含 '司马...'的用户信息,并且手机号倒数第二位是6 的用户信息

SELECT * FROM user_tab WHERE user_name LIKE '%司马%' AND phone LIKE '%6_';

_____________________________________________________________________________

 ORDER BY

关键字: ORDER BY 列名 排序方式(可以自定义,默认升序)

升序: ASC , 可以不写,默认就是升序

降序: DESC

备注:多个列参与排序,排序的先后顺序会直接影响排序查询结果

例如:查询部门编号为10,20的员工信息,然后按照部门编号升序排,再每个部门按照薪水降序排;

SELECT * FROM emp WHERE deptno IN(10,20) ORDER BY deptno,sal DESC;

————————————————————————————————————

 LIMIT 子句

查询返回指定的行数记录,limit 接受1个或者2个数字参数,参数必须是整数常量。

LIMIT n   表示 返回前 n 行数据

例如:  SELECT * FROM emp LIMIT 3;   -- 表示返回查询结果的前3行数据

LIMIT m,n  表示跨过m行数据,从m+1行开始显示,共返回 n 行数据。

 第一个参数表示返回记录行的偏移量,第二个参数表示指定返回行数的最大值。

例如:查询员工信息表中第4~8行数据。

SELECT * FROM emp LIMIT 3,5;

重点:

一.当select与limit连用的时候还要多加一层嵌套,让limit的结果变成一个表来使用,例如:连续删除student表格中的第2到第3行:

一般情况下写法是:delete from student where sid in (select sid from student limit 1,2)

但是实际结果是:select * from student where sid in(select sid from (select sid from student limit 1,2)  aa);

二.删除的时候会受到主外键的约束影响无法删除数据,具体做法:

1、首先,在数据库中查看外键是否有效(没有设置之前都是有效),

SELECT@@foreign_key_checks;

其中,值为1,外键有效,

2、将外键的值设置为0,此时就是失效状态,

SET foreign_key_checks = 0;

这时就能删除数据了

3、下面是我要用到的删除语句:

delete from tf_user where loginName LIKE ‘test8%’;

4、删除之后,外键再设置为有效:

SET foreign_key_checks = 1;