DML
语句
:
数据库操作语句
给表中插入数据
插入数据的语法
1:
insert into
表名
values
(
值
1,
值
2,
值
3,
值
4...
值
n
)
;
插入表的数据支持一次插入多条数据
insert into
表名
values
(
值
1,
值
2,
值
3,
值
4...
值
n
)
,
(
值
1,
值
2,
值
3,
值
4...
值
n
)
;
插入数据的语法
2:
插入部分字段
,
没有插入的字段
,
默认值就是
null,
也支持一次性插入多条数据
insert into
表名
(
字段名称
1,
字段名称
2....
)
values
(
值
1,
值
2...
)
;
/*
注意事项
:
1)
插入的这些值必须要和表中的字段对应上
;
先后顺序保证一致
!
2)
目前没有加入
"
数据库约束
",
可以插入非法数据
,
举例
:id
重复
,
后期需要使用数据库约束来限定用户的操作表的行为
!
*/
DML
语句之修改表记录
一般实际开发中修改
:
都是带条件修改
(
推荐
)
语法
1:
update
表名
set
字段名称
=
值
where
条件
;
语法
2:
一次性修改多个字段
update
表名
set
字段名称
1
=
值
,
字段名称
2
=
值
2....
where
条件
;
语法
3:
不带条件 属于批量修改
(
部分场景可以用的
)
update
表名
set
字段名称
=
值
,
字段名称
2
=
值
2....
DML
语句之删除表的记录
delete from
表名
where
条件
;
注意
:
带条件删除记录
(
使用的非业务字段
id
删除
)
delete from
表名
:
删除全表数据
truncate table
表名
;
删除全表数据
/*
面试题
:
DML
语句中的
delete
和
truncate
的区别
?
共同点
:
都是可以删除全表的记录的
;
不同点
:
delete from
表名
;
仅仅只是将表的全部记录删除了
,
表还在
!
它针对
id(
非业务字段
:
设置主键并且自增长
),
它不影响自增长主键的这个值
; (
数据库约束后面
讲
)
truncat table
表名
;
将表所有数据删除
,
而且还会把删除之后
,
自动创建一个张一模一样的表
,
影响自增主键的值
!
*/
DQL
语句最通用的语法
:
查询表的全部数据
DQL
语句
:
数据库的查询语句 里面语法是最多的
最基本的查询语句
select
关键字
1
)
查询全表数据
:
select
*
from
表名
;
*
代表所有字段
,
仅仅是自己玩的时候可以用
,
实际开发中不能用
*
,
需要写上全部的字段名称
实际开发中查询全部字段
,
把字段名称全部写上
2
)
查询全部字段的时候
,
给字段起一个别名
as
'
别名名称
'
,
as
省略
3
)
当表的名称比较长的时候
,
可以给表名起一个别名
4
)
字段冗余
(
重复度大
)
字段去重
DISTINCT
后面跟上字段名称
DQL
语句之条件查询
where
关键字
1)
使用赋值运算符
=,
比较运算符
<,<=,>=,>,!=, mysql
中的不等于
<>
2)Java
中逻辑运算符
:&&,|| mysql
推荐使用
and , or
也可以优化为
in(
值
1,
值
2,
值
3..
值
n);in
集合语句
3)
针对两个范围查询
:
可以使用
&&,
可以使用
and,
也可以
"
字段名称
between
值
1 and
值
2"
4) mysql
中判断某个字段为
null,
使用的语法是
is null
判断某个字段不为
null,
使用的语法是
is not null
5)
关于
int
类型字段求和的时候
,
注意
: int
类型的值
+ null
值
= null;
mysql
提供函数
ifnull(
字段名称
,
值
);
如果字段名称是
null,
给一个默认值
例如
:
SELECT
NAME '
姓名
',
(math+IFNULL(english,0)) '
总分
'
FROM
student3 ;
DQL
语句之
where
条件后面加入模糊查询
---
关键字
like
select
字段列表
from
表名
where
字段名称
like '%xxx%' ;
%:
代表任何多个字符或者某个字符
(
使用居多
):
网站门户系统
---"
搜索商品
" ,
模糊搜索
_:
代表某个单个字符
例如
:
需求
:
查询所有姓马的学生信息
SELECT
*
FROM
student3
WHERE
NAME LIKE '%
马
%';
聚合函数查询
:
针对
int
类型
:
单行单列数据
select
聚合函数
from
表名
where
还可以指定条件
;
count(
字段名称
):
查询表中记录
,
字段名称使用都是
id,
非业务字段
avg(
字段名称
):
查询这个字段中平均值
sum(
字段列表
):
求和函数
max(
字段名称
):
最大值
min(
字段名称
):
最小值
select
语句嵌套
select
语句
---
子查询
例如
:
需求
:
查询出学生数学成绩大于 数学平均分的学生所有信息
;
1)
查询数学平均分是多少
SELECT AVG(math) FROM student3; -- 79.5000
2)
查询大于数学平均分的学生信息
SELECT
*
FROM
student3
WHERE
math > 79.5000;
一步走
SELECT
*
FROM
student3
WHERE
math > (SELECT AVG(math) FROM student3) ;
DQL
之排序查询
order by
select
字段列表
from
表名
order by
字段名称 排序规则
(asc(
默认值就是升序
)
或者
desc
降序
)
注意
:1)
默认不写排序规则
,
就是
asc
升序
2)
同时存在条件和
order by,
那么
order by
在
where
的后面 先满足条件
,
才能排序
!
3)
多个字段要同时排序
,
首先第一个字段排序规则
,
然后才是第二个字段