目录
DML语句:
数据删除:delete 主要功能是删除数据库中已有的记录,可以依照条件去做修改
数据增加:insert 主要功能是给数据库表增加记录
数据修改:update 主要功能是修改数据库表中已有的记录,可以根据条件去修改
增加数据(insert语句)
insert into 表名 (字段名,字段名,...,字段名) values/value (值,...,值)
其中:
“()” 包含的内容可以省略;
• 字段或值之间用英文逗号隔开;
• 可同时插入多条数据,values 后用英文逗号隔开;
• values和value的方式均可。
增加数据(insert into select)
insert into select 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
insert into newstu(xingming,xingbie,classid) select sname,ssex,classid from student;
create table select :被插入表不能存在 ,被插入表没有任何约束
create table stu1 select sid,sname,birthday from student;
修改数据(update语句)
update 表名 set 字段名=值,字段名=值,...,字段名=值
【where 子句条件】
where 子句 中的条件是对表中每一条数据进行判断,
判断成立该数据的父句执行,
判断不成立该数据的父句不执行
删除数据(delete语句)
delete from 表名 【where 子句】
删除数据(truncate语句)
清空表 、截断表 : truncate 表名
功能:清空某一张表内的全部数据,重置自增计数器;
特点:由于没有条件约束,所以速度快,而且效率高
-- delete truncate drop 区别
-- delete 只删数据
-- truncate 不仅把数据删掉,还删除了索引
-- drop 不仅把数据删掉,还删除了索引,表结构也删了
DQL语言
DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如SELECT语句。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多表联查。
所有的查询都会得到一张虚拟表
最简单查询:select 123; select ‘adc’; select 1+1;
查询语句语法规则
select [distinct] {*\表.*} from 表1 [left\right\inner join 表2 on 表之间关系] [where] [group by] [having] [order by] [limit {[位置偏移量]行数}]
distinct:设定可以去掉重复记录
as:表名或者字段名过长时,可以用AS关键字起别名,方便操作。
group by:按组分类显示查询出的数据。
having:GROUP BY分组时依赖的分组条件。
order by:将查询出来的结果集按照一定顺序排序完成。
limit:限制显示查询结果的条数。
where 子句:
select * from 表名 where 条件
条件:为筛选条件,如不指定则修改该表中的所有数据
like 关键字:
select * from 表名 where 字段 like 条件;
where 子句中,使用like关键字进行模糊查询
% 任意多的任意字符
_ 一个任意字符
select * from student where sname like '%杨%'
select * from student where sname like '杨_'
in关键字
select * from 表名 where 字段 in (值1,值2...);
查询的字段的值,至少与IN 后的括号中的一个值相同;
null值查询
select * from 表名 where 字段 is null | not null;
NULL代表“无值”
须使用 IS NULL 或 IS NOT NULL 比较操作符去比较
常用的聚合函数
函数名 | 返回值 |
AVG(col) | 返回指定列的平均值 |
COUNT(col) | 返回指定列中非NULL值的个数 |
MIN(col) | 返回指定列的最小值 |
MAX(col) | 返回指定列的最大值 |
SUM(col) | 返回指定列的所有值之和 |
例子:
select count(*) from student;
select sum(score) from sc;
select avg(score) from sc;
select max(score) from sc;
select min(score) from sc;
group by 和having 分组
group by :
1、对所有的数据进行分组统计;
2、分组的依据字段可以有多个,并
依次分组
having :
与GROUP BY结合使用,进行分组 后的数据筛选
select sid, sum(score),avg(score) from sc group by sid
having 对分组聚合后的数据进行条件筛选
select sid, sum(score),avg(score) from sc
where score < 60
group by sid
having avg(score) < 60
Order by
select * from 表名 order by 字段 desc(降序) | asc(升序);
ORDER BY 表示对SELECT语句查询得到的结果,按字段名进行排序;
limit关键字
select * from 表名 limit n,m
LIMIT关键字是MySQL特有关键字;
LIMIT限制SELECT返回结果的行数;
n 表示第一条记录的偏移量,m 表示显示记录的数量;
limit实现分页显示的方式
扩展了解
在mysql中使用limit关键字,而且需要放在select语句的最后面,如果是oracle 需要基于rownum来统计行数
Select rownum,name,salary from employees where rownum<5 order by salary desc;