`
csbison
  • 浏览: 154837 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL学习笔记

阅读更多

* 外键的作用:保证数据的完整性和一致性。

  

  * 什么是DMLDDL      

    DML(Data Manipulation Language)数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。

    insert,delete,update,select等都是DML.

    DDL语句用语定义和管理数据库中的对象,如Create,AlterDrop.

    DDL操作是隐性提交的!不能rollback

 

 

What are DDL and DML?

   What are DDL and DML and their commands?DML statements are SQL statements that manipulate data. DML stands for Data Manipulation Language. The SQL statements that are in the DML class are INSERT, UPDATE and DELETE. Some people also lump the SELECT statement in the DML classification. Data Definition Languages (DDL) are used to define the database structure. Any CREATE, DROP and ALTER commands are examples of DDL SQL statements.

    数据定义语言DDL(Data Definition Language),数据处理语言DML(Data Manipulation Language),事务控制语言TCL(Transaction Control Language)

    DDL:CREATE/ALTER/DROP Schema/Table/Index/View

    DML:INSERT,UPDATE,DELETE,SELECT

    TCL:Begin,Commit,Rollback

 

注意,SELECT语句是Query Language,不是DML的一种。

 

                    

    * 数据字典

    数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。

    例如OracleUSER_TABLES 就是数据字典。

    

 

    * 使用子查询,最好用 别名。

 

    * 事务的ACID原则:

     数据库事务必须具备ACID特性,具体的含义如下:

 

     ----- Atomic(原子性):只整个数据库事务是不可分割的工作单元。只有事务中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。通过上面的例子我们已经看得很清楚了。

 

     ----- Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如,不管上面的例子里面QQ币转账的事务成功还是失败,都应该保证事务结束后qq_account表中billtomQQ币总额为1000点。

 

     ----- Isolation(隔离性):指的是在并发的环境之中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整数据空间,这里涉及的事情就多了,我想在后面单独总结成一篇文章。

 

     ----- Durability(持久性):指的是只有事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库后,数据库还能恢复到事务成功结束时的状态。          

 

事务的ACID只是一个抽象的概念,具体是由RDBMS来实现的。数据库管理系统用日志来保证事务的原子性、一致性和持久性。日志记录了事务 对数据库所做的更新,如果某个事务在执行过程中发生了错误,就可以根据日志,撤销事务对数据库已经做的更新,使数据库回退到执行事务前的初始状态。所以不 论讲到什么数据库,都会有专门的一章来讲日志,呵呵,终于从本质上明白了日志的作用。

 

     至于事务的隔离性,RDBMS则是采用锁机制来实现的。当多个事务同时更新数据库中的临界数据时,只允许持有锁的事务才能更新该数据,其他事务必须等待, 直到前一个数据释放了锁,其他事务才可能有机会来进行更新,这和我们在OS中学的进程的并发时所谈到的锁机制原理差不多。

 

    上面提到了数据库事务的ACID特性,那么谁来保证数据库事务具有ACID呢?其实,只要向数据库系统声明一个事务,数据库系统就会自动保证事务的ACID特性的。那么下面从抽象的概念上来看看怎么声明事务:

     -- BEGIN 事务的开始边界

     -- COMMIT 事务的正常结束边界,提交事务,永久保存被事务更新后的数据库状态。

     -- ROLLBACK 事务的异常结束边界,撤销事务,使数据退回到执行事务前的初始状态。

 

   常用的DBMS通过日志和锁机制来保证事务具有ACID特性。而对于开发人员,只需要通过数据库系统提供的接口,就可以控制事务。

 

* 事务的隔离级别:    

事务的隔离级别:

TRANSACTION_NONE

TRANSACTION_READ_UNCOMMITTED

TRANSACTION_READ_COMMITTED

TRANSACTION_REPEATABLE_READ

TRANSACTION_SERIALIZABLE

·Update表的一列字段:

    update MVP_DEVICE_INSTANCE a set a.DESCRIPTION=(select PHONE_NUMBER from  TEMPPD b where a.DEVICE_INSTANCE_ID=b.DEVICE_INSTANCE_ID)

     update时,对TMEMPD建索引和没有建索引的差别非常大,相差可能上千倍。

 

·连接查询(join query)   

join query 是属于 SQL/92的语法。而传统的查询是属于 SQL/86的语法。

连接查询一个有5种:

   内连接         inner join = join

   交叉连接。     cross join 其实就是表关联。所以一般不会专门用上 cross join.

 

   全外连接       full (outer) join

   ()连接     left (outer) join

   ()连接     right (outer) join

  

1) 还有另外一种特殊的连接,叫自连接。自连接是指在同一张表之间的连接查询。

2) 内连接跟表关联(交叉连接)意义上是一样的,只是写法不同。用于返回满足连接条件的所有记录。

3) 外连接不仅返回满足连接条件的记录,而且还另外返回部分不满足连接条件的记录。

4) 因为join连接查询的写法不同,所以特殊的场合可以用上;例如对同一表进行各种维度的查询时,可以通过join结合子查询的方式(当然也可以select语句查询多个视图)。

 

进行连接查询时,必须指定有效的连接条件(在不同表的列之间进行连接)。如果不指定连接条件,或者指定了无效的连接条件,则会导致生成笛卡尔积(叉乘运算)

 

·交叉连接=表关联

多余的表关联,会产生笛卡尔乘积(叉乘)的结果集;例如:

select t1.id from t_student t1,t_student2 t2;

本来t1表只有两行数据,t2表有两行数据。但这个结果集却显示4行数据。

 

这是因为select t1.id from t_student t1,t_student2 t2;相等于

select t1.id from t_student t1 cross join t_student2 t2;

 

 

在表关联的WHERE条件中,可以使用(+) 表示外连接。该操作符应放在显示较少行(完全满足连接条件行)的一端。

(+) 操作符只能出现在WHERE子句中,不能和Outer Join同时使用;

(+) 操作符执行外连接时,如果WHERE子句有多个条件,则必须所有条件均包含 (+)操作符;

(+) 操作符不能和OR IN一起使用。

(+) 操作符只能进行左连接或右连接,而不能进行全外连接。

 

分享到:
评论

相关推荐

    SQL学习笔记(pdf)

    这份"SQL学习笔记"涵盖了SQL的基础概念、语法以及高级特性,是学习数据库管理和数据分析的宝贵资料。 1. **SQL基础** - 数据库概念:了解什么是数据库,它的作用以及数据库管理系统(DBMS)如何工作。 - SQL简介...

    VC++ SQL 学习笔记

    SQL学习笔记可能会包含以下内容: 1. **基本SQL语法**:包括数据插入(INSERT INTO)、查询(SELECT)、更新(UPDATE)、删除(DELETE)等操作,以及如何使用WHERE子句进行条件筛选。 2. **SQL聚合函数**:如COUNT...

    sql学习笔记

    sql练习中易错笔记,order by ,group by,distinct,内连接,外连接等,一些mysql和oracle使用的区别:sql4种连接 两个表中有相同的列,根据共有的列值匹配行 left join左外连接,不管左表是否在右表中有匹配行,都...

    sql学习笔记 常见问题总结

    SQL(Structured Query ...以上只是SQL学习笔记中的部分要点,实际应用中还需要结合具体数据库系统(如MySQL、Oracle、SQL Server等)的特点和最佳实践。通过持续学习和实践,才能真正精通SQL,成为数据管理的高手。

    SQL学习笔记.docx

    "SQL学习笔记" 本文档是关于 SQL 学习笔记的总结,涵盖了 SQL 的基本概念、函数、语法、应用场景等方面。下面是对标题、描述、标签和部分内容的详细解释: SQL 基本概念 SQL(Structured Query Language)是一种...

    高效SQL学习笔记

    《高效SQL学习笔记》 SQL,全称Structured Query Language,即结构化查询语言,是用于管理关系数据库的标准语言。高效地掌握SQL对于任何IT从业者,尤其是数据分析师、数据库管理员和开发人员来说,都是至关重要的...

    JAVA 与 Sql学习笔记

    【JAVA与Sql学习笔记】 在Java编程中,与SQL数据库的交互是不可或缺的一部分。这篇学习笔记主要关注如何在Oracle数据库中使用PL/SQL的FORALL语句进行批量操作,以及如何利用批绑定(Bulk Binding)来提升性能。此外...

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

    SQL学习笔记+记录sql各种应用

    这份“SQL学习笔记+记录sql各种应用”涵盖了SQL的基础概念、语法以及在实际工作中的多种应用。 一、SQL基础 1. 数据库与表:SQL中的数据库是由一个或多个表组成的集合,表由行和列构成,每一行代表一条记录,每一列...

    Mastering_Oracle_SQL学习笔记

    在深入探讨《Mastering Oracle SQL学习笔记》的内容之前,我们先理解一下这门课程的核心目标:帮助初学者更好地掌握SQL语言中的关键概念和操作,尤其是针对Oracle数据库的特性。这包括了SQL语句的构建、数据筛选、...

    linq to sql 学习笔记

    《LINQ to SQL 学习笔记》 LINQ (Language Integrated Query) 是.NET框架中引入的一项强大技术,它允许开发者使用熟悉的C#或VB.NET语言语法进行数据查询,而无需学习新的查询语言。LINQ to SQL是LINQ的一个特定实现...

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...

    oracle 数据库 SQL学习笔记

    Oracle数据库是全球广泛使用的...总的来说,Oracle数据库SQL学习笔记应该涵盖这些核心领域,并深入探讨每个主题,包括实例、最佳实践和问题解决策略。通过持续学习和实践,你可以成为一名熟练的Oracle数据库专业人员。

    t-sql学习笔记

    t-sql学习笔记,总结的挺好

    SQL学习笔记一

    本篇“SQL学习笔记一”将围绕SQL的基础概念、基本操作以及其在实际工作中的应用展开讨论。 首先,我们要理解SQL的核心功能,包括数据查询、数据插入、数据更新和数据删除,这四大操作构成了SQL的基本语法结构。例如...

    sql学习笔记-轻松掌握sql

    这份“sql学习笔记”涵盖了SQL的基础概念、语法和实用技巧,帮助初学者轻松掌握SQL的核心知识。 一、SQL基础 1. 数据库与表:SQL中的数据库是一个组织数据的集合,由一个或多个表组成。表是由行和列构成的数据结构...

    Spark SQL学习笔记

    ### Spark SQL 学习笔记知识点总结 #### 一、Spark SQL 概述 - **定义**:Spark SQL 是 Apache Spark 的一个模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,以及支持 SQL 查询的能力。这些特性...

    PL/SQL学习笔记4

    ### PL/SQL学习笔记4 —— 集合与成员函数 #### 一、PL/SQL 表(索引表) 在PL/SQL中,**索引表**(也称为**PL/SQL表**)是一种非常有用的结构,它类似于数组但具有更多的灵活性。这种表是非持久化的,即它们不会...

Global site tag (gtag.js) - Google Analytics