数据库(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版的可以当然具体情况你最好自己查一下微软的说明

来源:英超直播

原创粉丝点击