MySql -基础学习3 - DML语言

数据库的意义:数据存储,数据管理

DML语言,数据操作语言

  • insert       -   插入
  • update     -   修改
  • delete      -   删除

1.插入

--  插入语句
--  insert  into  表名(字段1,字段2,字段3) values(值1,值2,值3)
INSERT INTO `grade`(`gradeid`,`gradename`) VALUES(1,'大二')
-- 如果主键设置了自增的话,我们可以不用管,如果主键没有自增,就必须在插入时带上主键
-- 一般写插入语句,我们一定要数据和字段一一对应
-- 插入多个字段
INSERT INTO `stdent`(`name`,`paw`) VALUES('马明','mdming'),
('周杰伦','mdming'),
('张学友','mdming'),
('郭富城','mdming')
-- 无name的插入,要把表中所有的数据 一 一 对应
INSERT INTO `stdent1` VALUES(9,'黎明','liming','男','2002-11-04','重庆',9)

对于有默认值的字段,我们在插入的时候可以使用default占位,

也就是: insert  into  表名  (字段,字段,字段) values(值1,default) 

插入语句公式:

insert  into 表名(字段1,字段2....)   values(值1,值2....)

注意事项:

  1. 字段和字段之间要用逗号隔开,
  2. 字段是可以省略的,但是后面的值要一 一对应,连自增的主键都要有对应
  3. 可以同时插入多条数据,values 后面的值,括号都要使用逗号隔开 :  (  )  ,  (  )  ,  (  )

2.修改

-- 修改数据表的字段值
UPDATE `stdent1` SET `name`='马明' WHERE id=9
-- 不指定的话会把表中所有元素改动
UPDATE `stdent1` SET `name`='周杰伦'
-- 修改多个属性
UPDATE `stdent1` SET `name`='张学友',`addreess`='香港' WHERE id=1
-- 运算符测试
UPDATE `stdent1` SET `name`='郭富城',`addreess`='香港' WHERE id<>1
UPDATE `stdent1` SET `sex`='',`addreess`='香港' WHERE id BETWEEN 1 AND 9
-- 定位数据修改
UPDATE `stdent1` SET `gradeid`=1 WHERE `sex`='' AND `name`='郭富城'
-- 修改value的值为变量
UPDATE `stdent1` SET `birthday`=CURRENT_TIME WHERE id=1

公式:

update  表名 set  字段=要修改的值  where  条件

注意:

  • 字段名尽量带上 ` ` 
  • 条件,筛选的条件要写上,如果没有筛选的条件,就会默认更改所有的数据
  • value,可以是一个具体的值也可以是变量
  • 多个设置属性之间应该使用英文逗号隔开  ,  

操作符 会返回布尔值:false   true

操作符 含义 范围 结果

=

等于 5=6 false(不执行)
<>或!= 不等于 5<>6 true(执行)
>      
<      
<=      
>=      
between ....and.... 在某个范围内 [2,5] true
and A 和 B &&    
or A 或 B    

 

3.删除

delete:命令

-- 删除指定数据
DELETE FROM `stdent1` WHERE id=1
-- 删除一个表中的所有数据
DELETE FROM `stdent1`

公式:

delete from  表名  where  条件

truncate:命令(专业删除数据表)

-- 删除一个表中的所有数据

TRUNCATE `stdent1`

delete  和truncate的区别

相同点:都可以删除数据

不同点:

truncate:重新设置自增列,计数器 归零,不会影响事务

拓展:(了解即可)

重启数据库后的结果:delete

innodb:自增列会从1开始(存在内存中,断电即失)

myisam:继续从上一个自增量开始(存在文件中,不会丢失)

二.数据库查询语言DQL(重点)

Data  Query  Language:数据查询语言

  • 所有的数据查询语言都用它  Selsct
  • 简单的查询,复杂的查询它都可以做
  • 数据库最核心的语言
  • 使用最频繁的语句
-- 通配符查询
SELECT * FROM `student`
-- 查询字段
SELECT `name`,`id` FROM `student`
-- 别名,给表取一个别名,可以给字段起别名,也可以给表取别名
SELECT `name` AS 名字,`id` AS 学号 FROM `student` AS stu
-- 函数  拼接字符串
SELECT CONCAT('姓名:',`name`) AS 名字 FROM student

公式:

1.select  字段,.....  from   表名

我们在查询的时候数据库字段名可能不太符合常规的表格显示,我们就可以使用  as  给字段或者表取一个别名

2.去重:distinct

作用:去除select查询出来的重复数据只显示一条

-- 去重,去掉重复数据
SELECT DISTINCT id FROM `student`
-- 查看系统版本号(函数)
SELECT VERSION()
-- 用来计算(表达式)
SELECT 100-7 AS 计算结果
-- 查询自增的步长(变量)
SELECT @@auto_increment_increment
-- 查询学生id并 + 1
SELECT id +1 AS 提升id后 FROM student

数据库中的表达式:文本值,列(字段),null,函数,计算公式,系统变量

select  表达式  from  表名

3.where  条件子句

作用::检索出符合条件的值

运算符 语法 描述
and  && a  and  b   a&&b 逻辑与  两个都为真结果为真
or  || a  or b    a||b 逻辑或  一个为真,结果为真   
not  ! not  a    !a 逻辑非,真为假,假为真
-- 查询id在6~7之间
SELECT * FROM student WHERE id>=6 AND id<=7
-- 模糊查询(区间)
SELECT * FROM student WHERE id BETWEEN  6 AND 7
-- 查询除了6 号id
SELECT * FROM student WHERE NOT id=6

3.模糊查询:比较运算符

运算符 语法 描述
IS NULL a is  null 如果字段为空,结果为真
IS NOT NULL a is  not null 如果字段不为空,结果为真
BETWEEN a  between  b  and  c 若a在b和c之间,则结果为真
like a  like  b 如果a中的元素匹配上了b,结果为真
in a  in  (a1,a2,a3....) 如果a在a1,a2,a3中某一个相同,则为真
-- 查询姓马的同学
-- 通过 % (0~任意字符) 和_(一个字符) 结合like
SELECT * FROM student WHERE `name` LIKE '马%'
-- 查询姓氏后面只有一个字的
SELECT * FROM student WHERE `name` LIKE '马_'
-- 查询名字后面有两个字的
SELECT * FROM student WHERE `name` LIKE '马__'
-- 查询id 为5,6,7 的学生
SELECT * FROM student WHERE id IN (5,6,7)
-- 查询地址为空的学生
SELECT * FROM student WHERE `addreess` IS NULL

注意:模糊查询最重要的使用是  LIKE 和  IN

like  可以和通配符结合使用  %(多个字符 )  _(一个字符)

in      后面必须跟实际的字段值 

posted @ 2022-11-08 16:52  回忆也交给时间  阅读(32)  评论(0编辑  收藏  举报