1 / 33

SQL Server 2000 数据库入门

SQL Server 2000 数据库入门. SQL Server 2000. MS 数据库管理系统 组成: 程序: 用户界面,工具 数据结构:管理和存储数据 系统 database Master Pubs tempDB. SQL Server 数据库. 管理、存储和访问数据 Database 对应文件: .mdf, .ldf 包含: Table, View, Index, Store Procedure, Trigger, etc. SQL 2000 管理工具. 创建 database. 右键 -〉 新建数据库 输入数据库名 : test

varsha
Download Presentation

SQL Server 2000 数据库入门

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Server 2000 数据库入门

  2. SQL Server 2000 • MS 数据库管理系统 • 组成: • 程序: 用户界面,工具 • 数据结构:管理和存储数据 • 系统database • Master • Pubs • tempDB 数据库入门

  3. SQL Server数据库 • 管理、存储和访问数据 • Database 对应文件: .mdf, .ldf • 包含: • Table, View, Index, Store Procedure, Trigger, etc. 数据库入门

  4. SQL 2000管理工具 数据库入门

  5. 创建database • 右键-〉新建数据库 • 输入数据库名: test • 包含: 数据文件: test_Data 事务日志文件:test_Log 及对应物理文件: .mdf, .ldf 数据库入门

  6. 表 Table • Table: 表是包含数据库中所有数据的数据库对象。 表结构: Column 列(字段)的集合 每行是一条记录。 表的定义: 列名 , 数据类型, 初始值, 是否允许空 约束规则,索引, 主键, 外键 数据库入门

  7. 建新表 • 右键-> 新建表 • 列名, 数据类型,长度,允许空 • 类型:整数:bigInt: 64 bits Int: 32bits,dec, Numeric, • Money • Datetime • Char, VarChar, Nvarchar • Text, Image • 默认值 • 自动增长( + 1) • RowGUID 数据库入门

  8. 主键、外键、 • 主键(PK): 唯一标示数据, 数据完整性,主键索引,查找快速 • 关系: 引用 • 外键(FK):表与表之间的链接,数据完整性、一致性 • 索引:Index,查找快速 • 例如:部门, 职员 数据库入门

  9. 视图 View • 虚拟表, 由查询定义, 包含行、列,View数据并不真正存在在View中, 通过查询其它数据源(数据表、视图、其他数据库、其他服务器)而来。 数据库入门

  10. 存储过程 Stored Procedure /* ---- Stored Procedure: sp_backupmessage ---- Get backup file message ---- by You jianshe 2003-2-14 ---- */ CREATE PROC sp_backupmessage @as_filename VARCHAR(200) as Restore HEADERONLY FROM DISK = @as_filename GO • Stored Procedure 运行在SQL Server服务器方 类似子程序模块 可以输入、输出参数 包含数据库操作语句( or call SP ) Return value 编程语言:Transact-SQL • 优点: 模块化设计、创建一次,重复使用, 后台运行,速度更快 网络流量减少, 安全 数据库入门

  11. 触发器Trigger • 一种特殊SP, 在指定表的数据发生变化时自动生效,即被调用、被执行。(Insert, Update, Delete时) • 目的:强制业务规则和数据完整性 • Trigger: Transact-SQL语法, (简单或复杂)逻辑处理 • Tables: Inserted, Deleted 数据库入门

  12. 自定义类型、函数 • 自定义类型 一般不需要 • 自定义函数 数据库入门

  13. 数据库设计 • 需求分析 • 逻辑模型 E-R图 --- 实体关系 数据流图 --- 业务处理 • 物理模型 • 数据库 • 分析、优化 数据库入门

  14. 数据库设计Steps ⒈需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。 ⒉概念结构设计阶段 通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。 ⒊逻辑结构设计阶段 将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。 ⒋数据库物理设计阶段 为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 ⒌数据库实施阶段 运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 ⒍数据库运行和维护阶段 数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。 数据库入门

  15. 数据库设计实例 项目工作管理, 包含数据表: 职员花名册, 公司部门 系统功能 , 权力角色 , 职员角色 项目(Project) 、 项目成员(项目-职员) 项目任务分解(WBS, 分级,包括任务包、 工作量估计,计划, 进度, 人员安排,权重, 任务包父亲 ) 项目任务执行跟踪 (工作日志): 项目 - 职员 – 时间 – 对应任务包 – 实际工作量 数据库入门

  16. E-R图实例 数据库入门

  17. 编程接口 API • ADO, OLE DB, ODBC ( JDBC), Embedded SQL, URL, XML (Internet) 使用数据库 • 打开到数据库的连接。 • 设置控制某些行为的选项 • 执行 Transact-SQL 语句 • 将返回代码的数据值、输出参数和结果集移入程序变量中,并通过程序变量由应用程序逻辑使用。 • 在完成数据库中的工作后断开连接。 数据库入门

  18. 连接数据库- PB // Profile sss SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=Excel Files;UID=;PWD='" 连接Access // Profile Access SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=MS Access Database;UID=;PWD='“ // VB-1 cn.Open "Driver={SQL Server};Server=Server1;Uid=SA;Pwd=;Database=northwind" // VB –2 cn.Provider = "sqloledb“ ProvStr = "Server=MyServer;Database= northwind; Trusted_Connection=yes" cn.Open provStr Transaction SQLCA // 事务对象 sqlca.DBMS = ProfileString (gs_inifile, "DATABASE", "dbms", "MSS") sqlca.DATABASE = ProfileString (gs_inifile, "DATABASE", "DATABASE", "KF") sqlca.userid = ProfileString (gs_inifile, "DATABASE", "userid", "dbo") sqlca.dbpass = ProfileString (gs_inifile, "DATABASE", "dbpass", "") sqlca.logid = ProfileString (gs_inifile, "DATABASE", "logid", "sa") sqlca.logpass = ProfileString (gs_inifile, "DATABASE", "LogPassWord", "") sqlca.servername = ProfileString (gs_inifile, "DATABASE", "ServerName", "(local)") sqlca.dbparm = ProfileString (gs_inifile, "DATABASE", "Dbparm", "") sqlca.AutoCommit = FALSE connect Using SQLCA; // 打开连接 Disconnect Using SQLCA ; // 切断连接 数据库入门

  19. 获取数据-SQL语句 String ls_empl_name // 变量定义 Select empl_name INTO :ls_empl_name FROM bse_employee Where empl_no = ‘system’ Using SQLCA ; if sqlca.sqlcode <> 0 then // … 失败 Else // …. 成功 End if Long ld_id = 0 String as_table = “tableXXX” //update UPDATE sys_system_id SET id_counter = :ld_id WHERE id_table_name = :as_table Using SQLCA; 数据库入门

  20. 获取数据-Datawindow // Dw_list Datawindow // d_employee_edit Datawindow Object dw_list.SetTransobject(SQLCA) dw_list.Retrieve( g_userinfo.is_dep_no, g_userinfo.is_empl_cls) …. //保存数据 ll_ret = dw_list.update(TRUE ,TRUE) // 判断 If ll_ret = 1 then Commit ; // using SQLCA Else Rollback; // using SQLCA MessageBox("提示","保存时出错!") End if 数据库入门

  21. 与数据库连接Datawindow 数据库入门

  22. Transact-SQL 语言简介 • 标示符: create Table employee ( empl_no char(10) PRIMARY KEY, empl_name varchar(20), age int default 0 , ….) • 数据类型: • 函数: • 表达式: • 运算符: • 注释 • 关键字: 数据库入门

  23. 创建与删除表 • Create Table CREATE TABLE [dbo].[bse_department] ( [dep_no] [varchar] (10) not NULL , [dep_tycode] [char] (1) NULL , [dep_name] [char] (10) NULL , [dep_no1] [char] (4) NULL , [dep_name1] [char] (10) NULL , [dep_bld_date] [datetime] NULL , [dep_vendor_shared] [smallint] NULL , [dep_telno] [char] (20) NULL ) ON [PRIMARY] GO • drop table drop table [dbo].[bse_department] GO 数据库入门

  24. 更改数据 • Insert INSERT INTO bse_department (dep_no, dep_name) VALUES ( ‘KFB’, ‘开发部’ ) GO • Update: UPDATE bse_department SET dep_name = ‘development’ WHERE dep_no = ‘KFB’ GO • Delete Delete from bse_department WHERE dep_no = ‘KFB’ 数据库入门

  25. 简单查询 • Select < 列名,…> from <表…>Where <条件>… SELECT * FROM bse_department WHERE (dep_tycode = '1') • 查询统计: SELECT dep_no AS 部门编号, COUNT(*) AS 部门人数 FROM bse_employee GROUP BY dep_no 数据库入门

  26. 联合查询 • 联合查询 JOIN ( INNER, LEFT, RIGHT ) SELECT bse_department.dep_name, COUNT(*) AS 部门人数 FROM bse_employee INNER JOIN bse_department ON bse_employee.dep_no = bse_department.dep_no GROUP BY bse_department.dep_name, bse_employee.dep_no 数据库入门

  27. 聚合函数 • SUM ( …) • AVG( …) • COUNT(…) • MAX(…) • MIN(…) Select COUNT( *) from table1 Select sum( column1) from table2 数据库入门

  28. 结果集组合 • UNION Select * from tableA UNION Select * from tableB UNION Select * from tableC • Note: 结果集结构必须相同。 数据库入门

  29. 子查询 • WHERE exp [NOT] IN ( subquery) • WHERE exp comparison_op ( subquery) • WHERE NOT EXISTS ( subquery) • 例: SELECT * FROM bse_employee WHERE (dep_no NOT IN (SELECT dep_no FROM bse_department WHERE dep_no <> '0000')) 数据库入门

  30. 多维汇总数据 • CUBE SELECT bse_department.dep_name, bse_employee.empl_cls, COUNT(*) AS 部门人数 FROM bse_employee INNER JOIN bse_department ON bse_employee.dep_no = bse_department.dep_no GROUP BY bse_department.dep_name, bse_employee.empl_cls WITH CUBE • RollUp • SELECT bse_department.dep_name, bse_employee.empl_cls, COUNT(*) AS 部门人数 • FROM bse_employee INNER JOIN • bse_department ON bse_employee.dep_no = bse_department.dep_no • GROUP BY bse_department.dep_name, bse_employee.empl_cls WITH rollup 数据库入门

  31. 事务处理 • Transaction: 作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元4个 属性: 原子性,一致性,隔离性,持久性 • BEGIN Transaction - 启动事务 • Commit -提交 , 结束事务 • RollBack - 回滚, 结束事务 必须一次提交或全部退回 要么成功,要么失败! 确保数据完整性和一致性 数据库入门

  32. 事务处理编写原则 • 事务保持尽量短。在多用户下,必须事务保持尽量短,减少资源锁定争夺 • 不要在事务处理期间要求用户输入 • 浏览数据时,尽量不要打开事务 • 必须修改数据时,启动事务,执行修改,然后马上提交(commit)或失败后回滚(rollback)事务。 • 灵活使用游(cursor)标并发选项,如乐观并发(OPTIMISTIC ) • 在事务中,尽量访问最小量数据,减少锁定数据行数。 • 避免并发 (Lock) 数据库入门

  33. 谢谢 ! 数据库入门

More Related