手机小说网站建设,建设一个好的网站,陕西多地最新通知,我市精神文明建设的门户网站1. SQL语句类型
1. DDL#xff08;Data Definition Language#xff0c;数据定义语言#xff09;#xff1a;
DDL语句用于定义数据库对象#xff08;如表、索引、视图等#xff09;。常见的DDL语句包括#xff1a; CREATE#xff1a;用于创建数据库对象#xff0c;如…1. SQL语句类型
1. DDLData Definition Language数据定义语言
DDL语句用于定义数据库对象如表、索引、视图等。常见的DDL语句包括 CREATE用于创建数据库对象如创建表、索引、视图等。 ALTER用于修改数据库对象的结构如修改表的列、添加约束等。 DROP用于删除数据库对象如删除表、索引、视图等。 TRUNCATE用于删除表中的所有数据但保留表结构
DDL数据定义语言示例 # 创建表 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(100), age INT, salary DECIMAL(10, 2) ); # 修改表结构 ALTER TABLE employees ADD COLUMN department VARCHAR(50); DROP TABLE employees; #删除表
2. DMLData Manipulation Language数据操作语言
DML语句用于对数据库中的数据进行操作插入、更新、删除。常见的DML语句包括
SELECT用于从数据库中查询数据。INSERT用于向表中插入新的数据。UPDATE用于更新表中的数据。DELETE用于删除表中的数据。
DML数据操作语言示例 1 2 3 4 5 6 7 INSERT INTO employees (id, name, age, salary) VALUES (1, John Doe, 30, 5000); # 插入数据 UPDATE employees SET salary 6000 WHERE id 1; #更新数据 DELETE FROM employees WHERE id 1; # 删除数据
3. DQLData Query Language数据查询语言
DQL语句用于从数据库中查询数据。DQL语句的核心是SELECT语句可以使用SELECT语句查询满足特定条件的数据并对结果进行排序、分组等处理
DQL数据查询语言示例 1 2 3 4 5 6 7 SELECT * FROM employees; SELECT * FROM employees WHERE age 25; # 查询特定条件的数据 SELECT name, salary FROM employees; # 查询特定列的数据
4. DCLData Control Language数据控制语言
DCL语句用于对数据库的访问权限进行管理。常见的DCL语句包括
GRANT用于授予用户访问权限。REVOKE用于撤销用户的访问权限。DENY用于拒绝用户的访问权限。
DCL数据控制语言示例 1 2 3 4 5 GRANT SELECT, INSERT ON employees TO user1; #授予用户访问权限 REVOKE SELECT, INSERT ON employees FROM user1; # 撤销用户的访问权限 DENY SELECT, INSERT ON employees TO user1; # 拒绝用户的访问权限
2. 索引作用底层结构及常见类型
索引在数据库中起着重要的作用它可以提高数据库的查询性能和数据的检索速度。索引是一种数据结构用于快速定位和访问数据库中的特定数据。
作用
提高查询性能通过使用索引可以减少数据库查询的数据量从而提高查询速度。加速数据检索索引可以帮助数据库快速定位和访问满足特定条件的数据减少数据的扫描时间。
底层结构 数据库索引的底层结构可以有多种实现方式常见的包括以下几种 B-树B-Tree索引B-树是一种平衡的多路搜索树它的特点是可以自动调整树的结构以适应数据的插入和删除操作。B-树索引常用于磁盘存储的数据库因为它可以减少磁盘访问次数提高查询效率。 B树BTree索引B树是在B-树的基础上进行优化的一种数据结构。它与B-树类似但在叶子节点上存储了所有的关键字和对应的数据指针这样可以加快范围查询和顺序访问的速度。B树索引是大多数关系型数据库中最常用的索引类型。 哈希Hash索引哈希索引使用哈希函数将关键字映射到一个固定长度的哈希值然后将哈希值与数据的存储位置关联起来。哈希索引适用于等值查询但不适用于范围查询或排序操作。 全文Full-Text索引全文索引用于对文本内容进行搜索它可以对文本字段中的关键词进行索引和检索支持全文搜索和模糊匹配。
常见类型 在常见的关系型数据库中常用的索引类型包括 主键索引Primary Key Index用于唯一标识表中的记录保证主键的唯一性和索引的快速访问。 唯一索引Unique Index用于保证某个列或列组合的唯一性可以加速唯一性检查。 聚集索引Clustered Index指定表的物理顺序表中的记录按照聚集索引的顺序存储。 非聚集索引Non-Clustered Index不指定表的物理顺序独立存储索引的数据结构。 复合索引Composite Index使用多个列组合作为索引的键支持多个列的联合查询。 全文索引Full-Text Index用于全文搜索和模糊匹配的索引类型支持对文本内容进行搜索。
3. 事务的特性 原子性Atomicity事务是一个原子操作单元要么全部执行成功要么全部失败回滚。原子性确保事务中的所有操作要么全都执行要么全都不执行不会出现部分操作成功而部分操作失败的情况。 一致性Consistency事务在执行之前和执行之后数据库的完整性约束没有被破坏。一致性确保数据库从一个一致的状态转移到另一个一致的状态它定义了数据在事务执行过程中的合法变化。 隔离性Isolation事务的执行是相互隔离的一个事务的操作不会被其他并发事务所干扰。隔离性确保事务在并发执行时每个事务的操作都像是在独立执行避免了并发读写操作导致的数据不一致问题。 持久性Durability一旦事务提交其所做的修改将永久保存在数据库中即使系统发生故障或重启。持久性确保事务提交后的修改是永久性的不会因为系统故障而丢失。
4. 事务的隔离级别 读未提交Read Uncommitted 最低的隔离级别事务中的未提交修改对其他事务都是可见的。可能导致脏读Dirty Read即读取到其他事务尚未提交的数据可能是不一致的数据。存在幻读Phantom Read即在同一个事务中多次执行同样的查询结果集不一致。 读已提交Read Committed 事务只能读取到已经提交的数据未提交的数据对其他事务不可见。避免了脏读的问题但仍可能导致幻读。大多数常见数据库的默认隔离级别。 可重复读Repeatable Read 保证了在同一事务中多次读取同一数据时结果保持一致。读取的数据是在事务开始时确定的快照即使其他事务对数据进行修改也不可见。避免了脏读和幻读的问题。 序列化Serializable 最高的隔离级别通过强制事务串行执行来避免并发问题。保证了事务之间的完全隔离避免了脏读、幻读和不可重复读的问题。性能较差一般情况下只在特殊需求下使用。
5. 事务并发引起的三大问题 脏读Dirty Read 脏读指的是一个事务读取了另一个事务尚未提交的数据。当一个事务读取到了被另一个事务修改但尚未提交的数据时如果另一个事务最终回滚则读取到的数据是无效的。脏读可能导致数据不一致性和错误的结果。 不可重复读Non-repeatable Read 不可重复读指的是在同一个事务中多次读取同一数据时得到的结果不一致。这是因为在读取过程中其他并发事务对该数据进行了修改或删除。不可重复读可能导致事务在多次读取同一数据时无法保持一致性破坏了事务的隔离性。 幻读Phantom Read 幻读是指在同一个事务中多次执行同样的查询得到的结果集不一致。这是因为在查询过程中其他并发事务插入了新的数据行导致结果集发生了变化。幻读可能导致事务在同一查询中读取到不同的数据行无法保持一致性。
6. 死锁的原因及解决办法
死锁是指两个或多个事务因为互相等待对方释放资源而无法继续执行的状态。死锁的发生是由于以下原因之一或多个原因共同作用 互斥条件Mutual Exclusion资源只能同时被一个事务占用当某个事务占用了一个资源后其他事务无法同时占用该资源。 请求与保持条件Hold and Wait一个事务在持有资源的同时又申请其他事务所占有的资源。 不可剥夺条件No Preemption资源只能由持有者显式释放其他事务无法强制抢占。 循环等待条件Circular Wait多个事务形成一个循环等待资源的链每个事务都在等待下一个事务所占有的资源。
为了解决死锁问题可以采取以下几种常用的解决办法 预防死锁Deadlock Prevention 通过破坏死锁发生的四个必要条件中的一个或多个来预防死锁的发生。可以在系统设计阶段采用资源分配策略、事务调度策略等方式来预防死锁。 避免死锁Deadlock Avoidance 在运行时动态判断是否分配资源避免可能导致死锁的资源分配情况。通过资源分配的安全性检查和资源请求的合理判断避免进入可能导致死锁的状态。 检测与恢复Deadlock Detection and Recovery 允许死锁发生但通过周期性地检测系统中的死锁状态并采取恢复措施来解除死锁。可以使用图算法如资源分配图来检测死锁并通过回滚、抢占资源等方式进行恢复。 死锁忽略Deadlock Ignorance 假设死锁很少发生或发生死锁的代价较低可以忽略死锁问题不采取专门的死锁处理措施。此方法适用于某些特定环境下如批处理系统等。
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你