码迷,mamicode.com
首页 > 数据库 > 详细

mysql之数据库基本理念

时间:2015-07-29 06:44:19      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:mysql   sql   

数据储存的问题:
    数据冗余和不一致
    数据访问困哪
    数据孤立
    完整性
    原子性问题
        例如AB2个账户,从A中向B转钱,不管如何转,A和B的总量是保持不变的。只要A减少,B就增加。
    并发访问异常
    安全性问题

    文件的分层:
        表示层:看到的文件
        逻辑层:文件系统,存储引擎
        物理层:元数据+数据

    关系型数据库的结构:
        表示层:库、表、索引等等
        逻辑层:存储引擎(解构)
        物理层:数据文件


关系型数据库的工作流程结构:
    发起查询(应用程序、sql用户、程序员、dba等) --> 查询管理器(各种解释器 --> 查询执行引擎) --> 存储管理器(各种管理器) --> 写入磁盘( 数据文件、索引文件、日志文件等)


关系运算:
    选择(选择元组):
        只输出符合条件的行。
        指定以某字段作为搜索码,做逻辑运算,筛选符合条件的行。

    投影(选择属性):
        只输出指定字段的属性。
        显示部分指定字段,筛选符合条件的列。

    自然连接:
        只输出2张表中字段名相同,属性值相同的行的连接。2张表建立了一个等值连接。
        例如有2张表,表A中字段名称USERNAME,对应的属性值为X,同一行中另一个字段为SHELL,属性值为Y,和表B中的字段名称为SHELL,属性为Y相同。B中同一行中另一个字段为SHELLTYPE,属性值为Z 。则自然连接显示为 X Y Y Z。其余输出以此类推。

    笛卡尔集(交叉连接):
        参照(a+b)*(c+d)=ac+ad+bc+bd此公式。此时不考虑表之间的关系。
        假设表A中,字段有USERNAME(tom 、jerry、mike)、SHELLNUM(1、2、3)。表B中有字段QQ(qq1、qq2、qq3)、TYPE(use、lock、use)。则输出为3*3 共计9行:
            tom 1 qq1 use
            tom 1 qq2 lock
            tom 1 qq3 use
            jerry 2 qq1 use
            jerry 2 qq2 lock
            jerry 2 qq3 use
            mike 3 qq1 use
            mike 3 qq2 lock
            mike 3 qq3 user

            注意:多表查询本质上就是先在内存中生成笛卡尔集,然后再查询,生成过程极大占用资源。

    并(集合运算):
        2张表中都有的部分称为并。

SQL查询语句:
    DDL
        完整性定义语言

    DML
    视图定义
    事物控制
    嵌入式SQL和动态SQL
    DCL

使用程序设计语言如何跟RDBMS交互:
    嵌入式SQL:
        类似与动态SQL,但其语句必须在程序编译时完全确定。比动态SQL更底层。例如ODBC(c)。注意ODBC是介于嵌入式和动态中间,不完全是嵌入式。
    动态SQL:
        程序设计语言使用函数或方法,与RDBMS服务器简历建立连接,向SQL服务器发送查询语句,将结果保存到变量中,而后进行处理。例如JDBC(java)。

本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1679318

mysql之数据库基本理念

标签:mysql   sql   

原文地址:http://ggvylf.blog.51cto.com/784661/1679318

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!