数据库(DB)与数据库管理系统(DBMS)
来源:互联网 发布:软件开发后期维护 编辑:程序博客网 时间:2024/05/22 00:50
“数据库”这个词已经被滥用,可能用来指一个数据系统(如中国移动的号码数据库),可能用来指一种数据存储技术(如关系数据库和NoSQL数据库),还可能用来指DBMS(如人们常说SQL Server是数据库软件)。这种混乱已然形成,恐怕难以改变(比如上文的描述即是如此)。我们只能根据上下文来判断具体含义。
按最狭义的技术含义,数据库(Database)是指位于一个数据库服务器实例上的一个库,而DBMS则是指类似SQL Server、Oracle等等此类软件。初学者要注意这些概念之间的差别。论坛上常常见到这样的帖子:“连不上数据库”、“数据库打不开了”,又没有上下文,可见发问者概念混乱,搞得解答者也是一头雾水。
SQL是一个关系数据库查询语言的标准,而SQL方言则是各种DBMS在SQL标准上进行的扩展,如增加新的关键字、查询功能、特有的数据类型、支持过程化的控制流语句等。例如SQL Server的T-SQL和Oracle的PL/SQL都是常见的SQL方言。
这就好比ANSI C标准与各种编译器实现的C语言的差别。但不同SQL方言之间的差异远大于不同C编译器之间的差异。SQL方言之间的差异,对于跨DBMS的学习和开发,都是必须注意的。
语句(statement)是SQL中一个可以单独执行的单元。如SELECT * FROM table;即是一个语句,其中包含了SELECT子句(clause)和FROM子句。SQL标准规定用分号作为语句的结束,但在目前的T-SQL中,语句结束的分号是可选的。
表达式(expression)是SQL中的一个值(可能是变量、常量、查询字段或计算结果),对应一种特定的数据类型。SQL中的表达式分为标量表达式和表值表达式,其中表值表达式作为单独语句则是SELECT语句,作为语句的一部分则称为子查询。比如0, col + 2, DATEADD(second, 30, GETDATE())都是(标量)表达式。
需要特别说明的是,SQL中的CASE WHEN是标题表达式,而不是条件语句。比如CASE WHEN中可以使用表达式,却不能使用语句;CASE WHEN的结果是一个特定数据类型的标量值;CASE WHEN可以用在SELECT、GROUP BY或ORDER BY子句中,但IF ELSE则不行。
断言(predicate)是SQL中进行比较的结果,即真值,可理解为布尔表达式,因为SQL中没有bool数据类型,所以将断言特别从表达式中区分出来。比如1是一个标量表达式,而1 = 1则是一个断言,后者可以用在WHERE、ON、HAVING、CHECK等需要真值条件的地方,但前者则不可以。由于NULL的存在,SQL中的断言是三值逻辑,即True/False/Unknown,详见下文“NULL与三值逻辑”。
下文中多次用到计算和比较两个词。表达式和表达式进行计算,结果是新的表达式;表达式和表达式进行比较,结果是一个断言;断言和断言可以进行逻辑运行(AND/OR/NOT),结果是新的断言。注意其中的区别。
SQL是数据库的查询语言,因而可以对系统数据产生持久化影响。在常规编程中,一个错误通常只会造成程序的crash或bug,修改并重新调试往往就可以了;而在SQL中,一个不小心就可能造成系统数据的破坏和丢失。常常有新手执行SQL时,不小心遗漏了DELETE或UPDATE语句中的WHERE子句,这往往是很大的麻烦。
因此,学习和使用SQL,一开始应该养成两个习惯:
1. 细心。在执行SQL语句认真检查一下,要清楚自己在做什么。
2. 及时备份,并考虑对系统的元数据进行版本控制。为偶尔的意外准备好后悔药。
常见的可能造成破坏性影响的SQL关键词:DELETE, UPDATE, DROP, TRUNCATE TABLE。
SQL擅长集合操作,而不是循环。所谓说明式语言,你只需要告诉SQL需要做什么,而不是怎么做。
初学SQL的人,思维往往难免带有过程式语言的痕迹,解决问题时常常不由地考虑循环。在学习SQL编程时,每当想要用循环时,先反问一下自己:这个问题是不是必须用循环来解决?事实上,多数情况下,这个问题的答案是否定的。
有本书中讲,SQL代码中出现一次IF便要减一些分(比如-1),出现一次WHILE便要减很多分(比如-10或-50,不夸张)。可以尝试用这样的方法为自己的存储过程打分。
需要检查的另一个组件是Microsoft数据访问组件(MDAC)安装程序,它作为SQL-Server2000安装程序的一部分启动。
SQL-Server2000安装程序会安装MDAC2.6。MDAC安装程序会创建名为Dasetup.log的单独的日志文件;您可以查看此日志文件并确保MDAC
安装程序没有出现问题。
你说的是备份-还原吧 从你的开发环境上备份出数据库,然后到目标机器上还原即可.是这个意思吗
如果你是想把数据库打包到你的应用软件环境里,那个好像只有msde版的可以当然具体情况你最好自己查一下微软的说明
来源:英超直播
- 数据库(DB)与数据库管理系统(DBMS)
- 数据库管理系统 -DBMS
- 数据库管理系统DBMS
- 04--MySQL自学教程:数据库MySQL--【数据库DB】和【数据库管理系统DBMS】简介
- 数据库管理系统DBMS概论
- 数据库管理系统(DBMS)
- 数据库管理系统DBMS之缓存管理
- 数据库管理系统DBMS通用系统构架
- 数据库管理系统DBMS系统构架
- 读书笔记:DBMS数据库管理系统预览
- 数据库管理系统(DBMS)的概述
- 用java语言写数据库管理系统(DBMS)
- 数据库管理系统(DBMS)的安全现状
- 数据库管理系统(DBMS)理解及实现
- DBMS--数据库管理系统原型开发(C/C++)
- PowerDesigner中怎样切换PDM的数据库管理系统DBMS?
- 数据库系统概述+相关DBMS
- 数据库系统实现 第一章 DBMS 系统概述
- 为什么学习SQL
- java环境配置说明
- flv格式放到服务器里却无法浏览的解决方法
- 最近学习计划(2个星期)
- 我的感想
- 数据库(DB)与数据库管理系统(DBMS)
- Equinox OSGi系列之二 搭建Equinox OSGi核心环境
- (C 语言)类型提升的问题
- C语言声明学习之高级篇(转载)
- 2010年10月10日,在CSDN开通自己的博客!
- 数据库创建的问题
- 安装IE8正式版以后VS无法创建VC++智能设备项目的解决方法
- DAO泛型
- 星海三十一天到三十七天