MySQL数据库开发理念_mysql之数据库基本理念

数据储存的问题:

数据冗余和不一致

数据访问困哪

数据孤立

完整性

原子性问题

例如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)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值