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;