java-MySql DML语句讲解

dml

数据管理语言,用于管理操作数据库中存储的数据

插入数据

关键字 insert

语法:

INSERT [INTO] 表名 [(列名)] VALUES (值列表)

1、基本写法(为全属性进行书写赋值)

insert into 表名 (列1,列2)values (值1,值2)

在这里插入图片描述

如果在进行输入插入时只想为某一属性赋值,其他使用默认值赋值可以只书写赋值属性(注意,如果设置了not null且没有设置默认值 那么会报错)

2、简略写法(为部分属性书写赋值)

insert into 表名(添加数据的列) values(值)

在这里插入图片描述

3、简略为全属性赋值

可以理解为默认为全属性进行赋值,但要求value个数与属性个数相匹配

在这里插入图片描述

4、批量赋值

在这里插入图片描述

注意:

1、每次插入一行数据,不能只插入半行或者几列数据,插入的数据是否有效将按照整行的完整性的要求来检验,数据按行插入进行插入时不允许插入一半(插入的每行数据的每一列都要进行赋值)

2、每个数据值的数据类型、精度和小数位数必须与相应的列匹配,在进行数据插入时可以将数据使用字符串形式插入,数据库会自动进行转换与格式验证(但如果字符串类型也不匹配则保错)

3、不需要为标识列指定具体值,可用null代替,在进行插入时要求为每列数据赋值,但如果数据可以为null,可以在插入数据时使用null作为数据插入

4、如果在设计表的时候就指定了某列不允许为空,则必须插入数据(在插入时value必须使用具体的值进行插入)

5、具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值,如果设置了默认值,那么可以不进行插入,会自动使用默认值进行数据的赋值

6、在进行外键列数据添加时必须使用外键已有数据进行添加

更新数据

关键字 update

语法:
UPDATE 表名 SET 列名 = 更新值 [WHERE 更新条件]

进行更新时使用where进行更新记录的筛选,如果没有where 默认为 where 1=1

update 表名 set 修改的列名=值,修改的列名=值 where 更新条件
在这里插入图片描述

在进行更新时会对所有数据进行筛选,进行逐条判断是否符合条件

注意:在where中对null值进行判断时不能使用= 使用is not null 与is null进行判断
在这里插入图片描述

删除数据

关键字deleter

语法:

DELETE FROM 表名 [WHERE <删除条件>]

在进行数据添加时是按行进行添加,所以在删除时也是按行进行删除,注意现在软件开发使用的是伪删除(逻辑删除)设置删除字段在进行删除时使用更新语句将字段设置为已删除

delete from 删除数据的表 where 删除条件
在这里插入图片描述

数据库delete语句类似于window下的删除,可以理解为先放入回收站之后删除,只不过这个步骤由数据库管理软件完成

dql

数据查询语言

SELECT * FROM 表名 [where 条件]

查询产生一个虚拟表
看到的是表形式显示的结果,但结果并不真正存储
每次执行查询只是从数据表中提取数据,并按照表的形式显示出来

*代表全部的列(展示数据所有列)

简单语法

SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]]

查询全部行与列

select * from 表名
在这里插入图片描述

查询全部的行与部分列

select 查询的列,查询的列 from 表名

在进行列名书写时建议使用全名(表名.列名)进行书写,为了避免之后进行多表查询时字段重复的问题
在这里插入图片描述

查询指定行与指定列

select 表名.列名 from 表名 where 表名.列名=值
在这里插入图片描述

在进行查询时建议使用指定名称的方式获取属性名(即使查询的是所有列)

别名定义

列别名

在select 查询的列后使用 as 别名或者 空格 别名的形式进行别名的命名,返回的虚拟表对应列名称就会被别名修改
在这里插入图片描述

表别名

在进行多个表的查询时,有时表名过于复杂这时需要使用类似于声明变量的方式起别名进行替代,对于表名只能使用空格 别名的方式进行命名,这样在当前语句使用到表名的地方都可以使用别名进行替换
在这里插入图片描述

查询空行

在数据库中null数据的判断使用is null 或者is not null进行判断 如果使用=null判断时数据是否为’null‘字符串

常量列

在查询列时可以为每行数据额外添加一列常量列,直接将数据当做列名,可以进行别名的修改(使用as)

select student.studentname,'活着' as '是否存活'  from student where studentsex='男'

分割数据(按行)

将返回的所有数据按照指定要求进行分割返回指定行数的数据

在已经查询出结果的sql后添加 limit 起始条索引(从0开始),截取行数

常用用于分页功能的实现 (select * from student LIMIT 每页数(n-1),每页数)

在这里插入图片描述

排序

使用关键字order by asc desc进行数据的排序

select * from 表名 order by 排序列 排序方式 limit截取

升序排序

在数据库中如果在排序是没有指定字段排序方式默认使用asc升序方式进行排序

在这里插入图片描述

降序排序

在这里插入图片描述

多列排序

在进行排序时如果多行排序字段的值相同时,那么不会进行位置的修改,但是多行数据其他值可能不同,在排序时通常会对多个列进行排序(当列相同时使用不同的列进行排序)

在这里插入图片描述

模糊查询

like

在进行查询字符串字段时有时可能只知道部分内容,如果视同=进行匹配则不会返回任何数据,这个时候就需要使用模糊查询(关键字查询:根据全部或部分信息继续数据的匹配)

通配符解释示例符合条件的值
_一个字符A LIKE 'C_'CS、Cd等
%任意长度的字符串B LIKE 'CO%'CONST、COKE等
#查询名字中包含c的人的所有信息
select * from student where studentname like '%c%';

#查询名字以j开头长度4的人的所有信息
select * from student where studentname like 'j___';

#查询第二个字母为i的人的所有信息
select * from student where studentname like '_i%';

between

用于数值范围的查找

在这里插入图片描述

in/not in

使用已知数据进行值匹配与java中的switch case很像 返回指定数据指定列与已有数据相匹配的结果

使用已有数据集进行匹配(数据集可以使用单列查询结果)

在这里插入图片描述

sql基本查询语法

select 列名

from 表名

where 查询条件

order by 排序字段 排序方式

limit 分页起始,分页数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值