数据库操作语言

数据库操作语言

DDL用于定义数据库结构和对象create、alter、drop、truncate、rename、comment
DML用于操作数据库中的数据select、insert、update、delete
DQL用于从数据库中检索数据select
DCL用于控制数据库的访问权限和安全性grant、revoke、deny

truncate是数据库中用于删除表中所有数据的一种操作,但是原理与delete不同。

1.速度更快:truncate直接操作表结构,是通过直接释放表空间来删除数据,因此属于DDL。

2.不记录日志:truncate操作不会记入日志,不会产生大量日志记录,减少系统资源开销,但是删除之后的数据无法回滚。

3.不触发触发器:truncate不会触发与表相关的触发器,不会执行与触发器相关的任何逻辑。

4.不保留标识符:执行truncate操作后,表的自增标识符(如AUTO_INCREMENT)会被重置为初始值(通常为1),而不是保留上次使用的值。

 

ACID特性

原子性原子性指数据库操作要么全部执行成功,要么全部失败回滚,不存在部分执行的情况。换句话说,如果一个事务包含多个操作,那么所有操作要么全部执行成功,要么全部失败,没有中间状态。MySQL 使用事务来实现原子性,确保事务中的所有操作要么全部提交,要么全部回滚。
一致性一致性指数据库在事务执行前后都保持一致状态。这意味着事务执行前数据库必须处于一致的状态,而事务执行后数据库也必须处于一致的状态。MySQL 在执行事务时会保证数据库的一致性,即使在发生故障时也会通过回滚操作来维护数据库的一致性。
隔离性隔离性指多个事务同时执行时,每个事务的操作应该相互隔离,互不影响。这意味着一个事务内部的操作对其他事务是不可见的,直到该事务提交。MySQL 使用事务隔离级别来控制事务之间的隔离程度,包括读未提交、读提交、可重复读和串行化等不同级别。
持久性持久性指一旦事务提交,其所做的修改将永久保存在数据库中,即使系统发生故障也不会丢失。MySQL 使用持久性来确保已提交的事务不会因系统故障而丢失或部分丢失。

 

读锁(共享锁)-读锁允许多个事务同时访问同一资源(如表、行或页面),并且不会阻塞其他事务的读取操作。 -读锁之间不会相互阻塞,因此多个狮虎可以同时持有读锁。 -读锁通常用于读取操作,因为读取操作不会修改数据,因此多个数据可以安全的同时读取相同数据。 -读锁不会阻止其他事务对统一资源的读取操作,但会阻止其他事务获取写锁。
写锁(排他锁)-写锁会阻止其他事务对资源的读取和写如操作,只有持有写锁的事务才能对资源进行写入操作。 -写锁通常用于更新、插入或删除操作,因为这些操作会修改数据,为了保证数据的一致性和完整性,需要排他访问资源。 与读锁不同,写锁会阻止其他事务对资源的的读取和写入操作,直到持有写锁的事务释放锁为止。

 

日期

DATE-存储日期部分,但不包含时间信息 -格式通常为YYYY-MM-DD -不考虑时区 -适用于仅需要日期信息而不需要时间的情况。
TIME-存储时间部分,但不包含日期信息 -通常格式为 HH:MM:SS -不考虑日期或时区 -适用于仅需要时间而不需要日期的情况。
DATETIME-存储日期和时间信息,精确到秒 -格式通常为 YYYY-MM-DD HH:MM:SS -不考虑时区 -适用于需要同时存储日期和时间的情况。
TIMESTAMP-存储日期和时间,通常精确到秒 -表示自纪元(通常为1970年1月1日)以来的秒数。 -通常包含时区信息,但在某些数据库中也可以选择不包含。 -适用于需要记录时间戳的情况,如数据修改时间、记录创建时间。在某些情况下,它也可以用于实现数据库事务的并发控制。

 

事务

开始事务START TRANSACTION;
提交事务COMMIT;
回滚事务ROLLBACK;
-- 开始事务
START TRANSACTION;
​
-- 扣除转出账户的金额
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
​
-- 增加转入账户的金额
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
​
-- 如果存在异常情况,可以回滚事务
-- ROLLBACK;
​
-- 如果一切正常,提交事务
COMMIT;

在 MySQL 中,默认情况下,事务中的锁定是在提交之前加上的。

具体来说,在事务执行期间,当执行涉及到数据的读取、更新或删除操作时,MySQL 会根据所选的隔离级别在数据行级别上自动加锁。这些锁会在事务提交之前生效,并在提交后释放。

因此,在事务提交之前,所有被该事务修改的数据行都会被锁定,以确保在提交时其他事务无法同时修改这些数据。一旦事务提交,所持有的锁将被释放,其他事务可以继续访问这些数据。

这种默认行为确保了事务的一致性和隔离性,避免了并发事务之间的数据冲突。

 

数据库文件的扩展名

主数据文件.mdf
辅助数据文件.ndf
事务日志文件.ldf

在SQL Server中,一个数据库中至少有一个主数据文件和一个事务日志文件

 

索引

索引可以有效的提升查询数据的效率,但索引数量不是多多益善,索引越多,维护索引的代价自然也就水涨 船高。对于插入、更新、删除等DML操作比较频繁的表来说,索引过多,会引入相当高的维护代价,降低 DML操作的效率,增加相应操作的时间消耗。另外索引过多的话,MySQL也会犯选择困难病,虽然最终仍然 会找到一个可用的索引,但无疑提高了选择的代价。

 

linux中的mysql基础命令

启动MySQL服务器service mysql start
停止MYSQL服务器service mysql stop
重启MYSQL服务器service mysql restart
查看MYSQL服务器运行状态service mysql status

 

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只大黄猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值