java_DAY20:使用DML,DQL操作数据库
1:使用DML操作数据库
1:DML是什么
数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令,因此开发人员都把加上SQL的SELECT语句的四大指令以“CRUD”来称呼。
DML 的主要功能即是访问数据,因此其语法都是以读取与写入数据库为主,除了INSERT以外,其他指令都可能需搭配WHERE指令来过滤数据范围,或是不加WHERE指令来访问全部的数据。
DML(数据操作语言)用于操作数据库对象中所包含的数据
包括
INSERT ( 添加数据语句 )
UPDATE ( 更新数据语句 )
DELETE ( 删除数据语句 )
2:INSERT ( 添加数据语句 )
语法:insert into 表名(列名,列名,列名...) values(值,值,值...); 为数据表的每列进行赋值
注意事项
1) 插入值 类型必须和 列类型匹配
2) 值长度不能超过 列定义长度
3) 值的顺序和 列顺序对应
4) 字符串和日期型值 必须写 单引号
5) 插入空值 可以写 null
3:UPDATE ( 更新数据语句 )
语法: update 表名 set 列名=值,列名=值.... where条件语句;
真正修改的内容是set 后面的
Where 的作用是定位 - 选择,限制
如果不加where条件语句的话,会作用在所有的记录上
WHERE条件子句:有条件地从表中筛选数据

4:DELETE ( 删除数据语句 )
语法:delete from 表名 where条件语句 ;
如不指定则删除该表的所有列数据
TRUNCATE命令
用于完全清空表数据,但表结构、约束等不变
TRUNCATE和delete的区别
truncate tablename命令将快速删除数据表中的所有记录,但保留数据表结构。
这种快速删除与delete from 数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate命令删除的数据是不可以恢复的
最直观是:
1.TRUNCATE TABLE是非常快的 ,delete相对慢一些
2.TRUNCATE之后的自增字段从头开始计数了,而DELETE的仍保留原来的最大数值
3:TRUNCATE删除的数据不可恢复,delete删除的数据可以恢复
2:DQL
1:简单查询
准备:新建一个考试成绩表,并添加数据
create table exam(
id int primary key auto_increment,
name varchar(20) not null,
chinese double,
math double,
english double
);
insert into exam values(null,'关羽',85,76,70);
insert into exam values(null,'张飞',70,75,70);
insert into exam values(null,'赵云',90,65,95);
insert into exam values(null,'刘备',null,55,38);
语法一 :
select [distinct] * /列名,列名... from 表名;
select * from 表名; 查询该表中所有列信息
select 列名,列名... from 表名; 查询表中指定列的信息
distinct 用于排重
1: 查询表中所有学生的考试成绩信息。
2: 查询表中所有学生的姓名和对应的英语成绩。
英语老师需要查询班级英语成绩

语法二:
select 表达式(列名执行运算) from 表名;
select 列名 as 别名 from 表名;
1: 在所有学生各门分数上加10分特长分。
2: 统计每个学生的总分。
3: 使用别名表示学生分数。
在对列起别名时,as可以省略
语法三:
select 列名 from 表名 where条件语句
1: 查询姓名为关羽的学生成绩
2: 查询英语成绩大于90分的同学
3: 查询总分大于200分的所有同学姓名和对应的各科成绩以及总分
2:查询之运算符

1:相等= 不等 <> 或者 !=
2: between ...and... 在两者之间取值 between 70 and 80 等价于 >=70 <=80
注意:前面那个数要比后面那个数要小
3: in(值,值,值) 在指定值中任取一个 in(70,80,90) 值可以是70、80或者90
查询英语成绩为70,80,90的人的信息
4:like '模糊查询,表达式有两个占位符 % 任意字符串 _ 任意单个字符 张_ 张%
例如: name like '张%' 所有姓张学员 ,'%张%'; 含有张字
name like '张_' 所有姓张名字为两个字学员
5:is null 判断该列值为空
Is not null 判断不是为null
6:and 逻辑与 or 逻辑或 not 逻辑非
`

浙公网安备 33010602011771号