Mysql -第二天
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 逻辑非
作业:
使用sql语句练习:
- 向学生表中添加一条数据:登录密码:111,名字:李小明,性别:女
- 向考试表中添加一条数据:曹操,语文12,数学12,英语12
- 向考试表中添加一条数据:刘邦:语文:99
- 修改张飞的语文成绩为20,数学成绩为12
- 删除赵云这个人的考试成绩
- 查询所有人的考试成绩
- 查询英语成绩在90分以上的人的姓名和对应的英语成绩
- 查询三门成绩都大于70分的学生信息和考试信息
- 查询没有参加语文考试的那些学生信息
- 查询所有姓张的人的考试成绩
- 查询关羽的语文成绩
- 查询学号为3以内的所有人的各科成绩
- 查询没有参加语文考试的那些学生信息
- 查询英文成绩分数大于70 并且数学成绩大于70的学员所有成绩
- 查询所有姓张的学员考试成绩
- 查询所有姓赵的并且语文成绩大于80分的学员信息
- 查询语数英中不及格学员的所有信息(60分及格)
- 查询所有英语超过80分的名字中含有张的人信息
- 查询所有人的各科成绩以及他们的平均分