2021-08-16(第7期)

本文深入介绍了SQL的基础操作(CRUD)、事务的概念及其性质,以及如何通过JDBC在Java中操控数据库。涵盖了数据完整性约束、主键、唯一约束、自动增长列,以及事务的原子性、一致性与隔离性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本周学了。。数据库。SQL。也把我刚开始拿来做笔记的笔记本用完了。我就简单介绍下SQL、事务和JDBC。

SQL

SQL语言作为操作数据库的语言,具有创建(create)、查询(read)、更新(update)、删除(delete)的基本功能,简称CRUD。
SQL将自身按功能分成DDL、DML、DCL、DQL四类语言。DDL定义数据库对象(库、表、列);DML控制数据库记录(即数据)的增删改;DCL定义用户访问权限和安全级别;DQL最常用,用于查询。以下介绍DQL。

DQL

DQL的总体语法是这样的:
select 列名 from 表名 [where … group by … having … order by … limit …];
其中中括号的部分是可选的,选择其中多个时按中括号中的顺序写。
“select 列名 from 表名”的部分,表示从名为“表名”的表的名为“列名”的列中获取数据,列名可以为“*”,此时表示查询获取所有列。如果这样直接写,会获取所有行(记录)的数据;所以才有后面这一串筛选条件用的关键词。

筛选

+、-、*、/、>、<、=、<>、!=、<=、>=、and、or、not都可以用在后面的判断条件中,如“name=“张三””就是一个判断条件,筛选出name值为张三的行。

where

where是最常用的筛选关键字,后面直接接条件即可。它可以和having之外的关键字联合使用。

group by

group by后接一个或多个列名,表示按这些列名的值分组查询显示;分组优先级就是各列名的顺序。

having

having在group by后使用,用于给分组后的数据筛选,这一点类似where。也正因此二者不共存。

order by

order by如其名,用于排序。它后面接两种:asc(升序)/desc(降序)。也可以不接关键词,那就是默认的升序排序。

limit

limit限制了显示的记录的起始行和总行数。比如,"limit 0,5"表示只展示从下标0(这里0就是第一行)开始最多5条记录。

数据完整性

“保证存放到数据库中的数据是有效的、准确的”,说得这么抽象,其实就是给数据表的列添加一些特性,称作“约束”。

主键约束

每个表只有一个主键,主键不可重复且不为空。这是区分表中各记录的最重要依据。

唯一约束

已经有主键了,但这个列的数据也不能重复怎么办?那就用唯一约束——它只能将列调成数据不可重复。

自动增长列

顾名思义,被设置了这个约束的列只能是数值,而且会随行数变化稳定增加。

数据类型

讲真,我也没想到设置列数据的数据类型时也是在设置约束。数据类型,就是int、char、date这些。跟编程语言有些相似。

非空约束

嗯,这个约束如果和唯一约束配合那也有类似主键约束的效果了。

默认值约束

给该列所有记录加一个默认值。

外键约束

这个比较复杂,涉及到其他的表,是将表与表联系在一起的约束。顾名思义,“外键”连接其他表的主键,一般是设置成完全相等,实时更新。

事务

事务:由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。咳,又是个抽象的说明。
嗯,这么说吧,默认模式下,一般是执行DML后事务开始,执行DDL后事务结束。在理想状态下,一个事务执行期间对数据的修改是不会影响到数据库本身的,也就是事务的“隔离性”;如果影响到了,那就是一种叫“脏读”的数据冲突,略过(笑)。
事务具有“原子性”——事务中若有一条语句执行失败,则整个事务宣告执行失败,所谓的“一荣俱荣一损俱损”。
事务具有“一致性”——事务的执行不会破坏数据的完整性和一致性,如从A转钱到B,则A扣钱后B也必然加等量的钱。
事务具有“隔离性”——这个上文提过了。
事务具有“持久性”——事务一旦提交(事务执行结束后将结果提交到数据库),数据将永久保存。
事务是可以代码控制的:begin开始,commit提交(确认修改),rollback撤回(放弃修改)。

JDBC

JDBC其实是指用java操控数据库。说是如此,其实java也只是通过第三方包执行SQL语句来操控。它的大致步骤如下:
1、导入包(java没有自带这个功能,所以源自第三方包的.jar)
2、加载驱动与配置URL:这个其实我没看太懂,大概就是创建了一个负责JDBC的驱动吧。。?不同的sql需要的驱动不同。
3、创建数据库连接对象
嗯,没错,连接数据库。
4、创建Statement/PreparedStatement对象
呃,这两类对象就是携带了可执行SQL语句方法的家伙了。之后调用方法即可。
提到执行SQL的方法,这里有三个:
boolean execute(String SQL)如果是DQL语句返回true
int executUpdate(String SQL)返回此次操作受影响的行数
ResultSet executeQuery(String SQL)返回DQL查询结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值