DML : 数据操作语句 Data Manipulation Language。
针对数据:insert、delete、update、select

查询语句
Select 字段1,字段2 from 表名 where 条件;
例:展示student表中找出名称为'李红'的学生的姓名\年龄\地址信息
select name,age,address from student where name='李红';
例:展示student表中年龄在22岁以上的学生的信息
select * from student where age>22;

修改数据
Update 表名 set 字段1=值1,字段2=值2 where 条件;
例:修改student表中名称为‘王红’的年龄为22岁,地址为深圳
update student set age=22,address='深圳' where name='王红'
练:修改student表中年龄为20学生的地址,改为'中国'
update student set address='中国' where age=20;

删除数据
Delete from 表名 where 条件;
例:删除student表中姓名为‘小明’的学生
delete from student where name=‘小明’;
练:删除student表中年龄小于20岁的学生
delete from student where age<20;

插入数据

一次插入整行数据
insert into 表名 values(字段1值,字段2值,字段3值…);
练:给student表中插入一行数据,
student表,包含字段Id,Name,Sex,Age,Address

指定字段插入数据
insert into 表名(字段1,字段2) values(字段1值,字段2值) ;
例:讲20号学生刘东东的信息添加到student表中
insert into student(id,name) values(20,'刘东东');

一次性插入多条数据
insert into 表名 values(…),(…),(…)…;
insert into 表名(字段1,字段2) values(字段1,字段2),(字段1,字段2)…;

操作符
+:加
-:减
*:乘
/:除
<:小于
<=:小于或等于
=:等于
!=或<>:不等于
>=:大于或等于
>:大于
%:表示所有 可以表示没有 一个字符 多个字符
-:表示单个字符

not或!:逻辑"非":
条件为真 结果为假
条件为假 结果为真

or或||:逻辑"或":只需要其中一个
所有条件只要一个为真,结果就为真

and或&&:逻辑"与":两边的条件都要符合
a为真,b为假,c为真 a and b and c
所有条件都为真,结果就为真,只要一个不为真,结果就为假

where
条件语句:子句中使用,进行模糊过来
例://查询出没有被删除数据
select * from 表 where is_delete=0;

is null
空值的处理

ifnull(字段,值)
if 字段 is null,将值付给该字段

is not null
if 字段is not null 字段值为它本身

order by
order by 字段 关键字(可选)
对获取的信息排序;用于查询出的数据按照一个列或者多个列进行排序;
使用order by时,字段后不加关键字,为默认升序(从小到大)排序,需降序时,在字段后加desc;
关键字
order by  列名 asc  从小到大,升序排序
order by  列名 desc 从大到小,降序排序
例:查询出所有的员工信息并按员工的基本工资降序排序
select * from emp order by sal desc;
例:返回员工的信息并按工作降序,工资升序排列
select * from emp order by job desc,sal asc;

Distinct
去重
当展示的数据有重复的值,可以使用distinct去重.将重复的值过滤掉,只保留一个
例:查询学生来自哪几个地方
select address from student;

limit n,m  展示指定的行
n为起始行行号
m为需要展示的行数
例:查询出在表中前五行的员工信息
limit 0,5
select * from emp limit 0,5;
例:查询出基本工资属于最高的第3-6名的员工信息
select * from emp order by sal desc limit 2,4;

like
模糊匹配
在where子句中,利用like子句代替'='
% 匹配所有 李%
_ 匹配单个字符 李__
例:找出名称中有'L'的员工信息
select * from emp where ename like '%L%';

not like
在where子句中,利用NOT like子句代替'!='
例:找出名称中不包含S的员工
select * from emp where ename not like '%s%';

in
in操作符允许在where子句中规定多个值
例:查询名字为'smith''blake''king'的员工信息
select * from emp where ename in('smith','blake','king');
等同于
select * from emp where ename='smith' or ename='blake' or ename='king';
in中的SQL语句可以当成条件处理,in括号里面的sql语句只能为一列数据

not in
不在……里面
例:查询出名字不为'SMITH''BLAKE''KING'的员工信息
select * from emp where ename not in('SMITH','BLAKE','KING');

between 值1 and 值2
在值1-值2之间
数据范围。这些值可以是数值、文本或者日期
例:查询基本工资在1000到1500之间的员工信息
SELECT * from emp where sal between 1000 and 1500;
等同于	
select * from emp where sal>1000 and sal<1500;
注:
a、不同的数据库系统用between and值会有差异,有些不包含边界值,有些包含,又有些只包含其中一个边界值,请检查你使用的数据库系统的规则是怎样的;
b、用between and时,注意小的值放and左边,大的值放and右边;

not between 值1 and 值2
不在值1-值2之间
例:查询出基本工资不在1500-3000之前的员工基本工资信息
select sal from emp where sal not between 1500 and 3000;

模糊条件查找练习
1.查找基本工资在1000到2000之间的员工姓名和基本工资
select ename,sal from emp where sal between 1000 and 2000;
2.查找基本工资在2000到3000以外的员工信息
select * from emp where sal not between 2000 and 3000;
3.获取‘SMITH‘, ’WARD‘, ’BLAKE’这三个员工的信息
select * from emp where ename in(SMITH‘, ’WARD‘, ’BLAKE’);
4.获取员工编号在7566到7839之间的员工信息
select * from emp where empno between 7566 and 7839; 
5.获取员工SMITH 和BLAKE之前的员工信息
select * from emp where ename between 'BLAKE' and 'SMITH';
6.获取部门10员工的经理的信息
select * from emp where empno in (select mgr from emp where deptno=10);