《《数据库的实现》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库的实现》PPT课件.ppt(29页珍藏版)》请在三一办公上搜索。
1、第八章,数据库的实现,课程内容回顾,需求分析阶段,数据库设计的一般步骤有哪些?如何将E-R图转换成数据表?简单描述3大范式,本章目标,使用SQL语句创建数据库和表使用SQL语句创建约束创建安全帐户的SQL语句,数据库基础知识回顾,创建数据库时:指定数据库名称主数据库文件和日志文件的名称和大小。,数据库文件的组成:主数据文件:*.mdf次要数据文件:*.ndf 日志文件:*.ldf,数据库的其他主要属性:文件存放位置分配的初始空间,属于哪个文件组。文件的增长设置,可以按百分比或实际大小指定增长速度。文件容量设置,可以指定文件增长的最大值或不受限,创建数据库,CREATE DATABASE 数据库
2、名ON PRIMARY(NAME=逻辑文件名,FILENAME=物理文件名,SIZE=大小,MAXSIZE=最大容量|UNLIMITED,FILEGROWTH=增长量),。nLOG ON(NAME=逻辑文件名,FILENAME=物理文件名,SIZE=大小,MAXSIZE=最大容量|UNLIMITED,FILEGROWTH=增长量),。n,建库语法,创建数据库示例 1,USE masterGOCREATE DATABASE empDB ON PRIMARY-主文件组,不能省略/*-数据文件的具体描述-*/(NAME=empDB_data,-主数据文件的逻辑名FILENAME=D:DataempD
3、B_data.mdf,-主数据文件的物理名SIZE=5MB,-主数据文件的初始大小MAXSIZE=15MB,-主数据文件增长的最大值(UNLIMITED为增长不受限制)FILEGROWTH=20%)-文件的增长率LOG ON/*-日志文件的具体描述,各参数含义同上-*/(NAME=empDB_log,FILENAME=D:DataempDB_log.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)GO,演示创建数据库1:一个数据文件和一个日志文件,创建数据库示例 2,USE masterGOCREATE DATABASE Archive ON PRIMARY/*
4、-主数据文件的具体描述-*/(NAME=Arch1,FILENAME=d:dataarchdat1.mdf,SIZE=10MB,MAXSIZE=15,FILEGROWTH=5),/*-次要数据文件1的具体描述-*/(NAME=Arch2,FILENAME=d:dataarchdat2.ndf,SIZE=10MB,MAXSIZE=15,FILEGROWTH=5),演示创建数据库2:多个数据文件和多个日志文件,创建数据库示例 2,/*-次要数据文件2的具体描述-*/(NAME=Arch3,FILENAME=d:dataarchdat3.ndf,SIZE=10MB,MAXSIZE=15,FILEGR
5、OWTH=5),LOG ON/*-日志文件1的具体描述-*/(NAME=Archlog1,FILENAME=d:dataarchlog1.ldf,SIZE=5MB,MAXSIZE=10,FILEGROWTH=5),/*-日志文件2的具体描述-*/(NAME=Archlog2,FILENAME=d:dataarchlog2.ldf,SIZE=5MB,MAXSIZE=10,FILEGROWTH=5)GO,演示创建数据库2:多个数据文件和多个日志文件,删除数据库,DROP DATABASE database_name,.。n,USE masterGO DROP DATABASE pubs,使用SQL
6、语句创建表,建表的步骤 确定表中有哪些列确定每列的数据类型给表添加各种约束创建各表之间的关系,整型:int,smallint小数:decimal,numeric,字符:固定长度:char(6)可变长度:varchar(10)Unicode字符:nvarchar(10),日期:datetime,货币:money,布尔:Bit 取值为0或1,创建表,CREATE TABLE 表名(字段1 数据类型 列的特征,字段2 数据类型 列的特征,。),语法,列的特征包括该列是否为空(NULL)、是否是标识列(自动编号)、是否有默认值、是否为主键等。,创建表示例一,CREATE TABLE DEPT(dept
7、no INT PRIMARY KEY,-主键(唯一,非空)dname CHAR(15)NOT NULL,-部门名称,非空(必填)loc VARCHAR(30)-部门位置,允许为空,即可选输入),演示创建部门表dept,创建表示例二,CREATE TABLE EMP(empno INT PRIMARY KEY,-雇员编号,主键 ename VARCHAR(10)NOT NULL,-雇员姓名 job VARCHAR(9),-工种 sal DECIMAL(7,2)NOT NULL,-工资deptno INT NOT NULL,-雇员所在部门号,外键CONSTRAINT emp_deptno_fk F
8、OREIGN KEY(deptno)REFERENCES dept(deptno),演示创建雇员表emp,创建表示例三,CREATE TABLE stuInfo(stuNo INT IDENTITY(1,1)-学号,自动编号(标识列)stuName VARCHAR(20)NOT NULL,-姓名stuAge INT NOT NULL,-年龄stuAddress VARCHAR(30)-地址),演示创建学生信息表stuInfo,创建表示例四,使用SELECT INTO 生成表结构和数据的拷贝:SELECT*INTO newdept FROM dept,删除表,USE empDBGO/检查数据库中
9、是否存在该表,如果存在则删除IF EXISTS(SELECT*FROM sysobjects WHERE name=dept)DROP TABLE dept,语法:DROP TABLE 表名,系统表:存放表的清单,演示删除表dept,创建和删除约束,回顾约束类型:主键约束(primary key constraint):要求主键列数据唯一,并且不允许为空。唯一约束(unique constraint):要求该列唯一,允许为空,但只能出现一个空值。检查约束(check constraint):某列取值的限制、格式的限制等。如有关性别的检查。默认约束(default constraint):某列输
10、入数据时的默认值,强制了域完整性。外键约束(foreign key constraint):用于在两表间建立关系,需要指定引用主表的哪列。,给表添加约束,添加约束语法:约束的命名规则推荐采用:约束类型_约束字例如:给dept表的deptno字段添加主键约束,推荐起名为:PK_deptno给Emp表的ename字段添加唯一约束,可起名为:UQ_ename,ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型具体的约束说明,添加约束示例,USE empDB GO-添加主键约束(deptno作为主键),约束名为pk_deptnoALTER TABLE dept ADD CON
11、STRAINT pk_deptno PRIMARY KEY(deptno)添加唯一约束,希望员工名字唯一ALTER TABLE emp ADD CONSTRAINT UQ_ename UNIQUE(ename)添加检查约束,要求雇员工资少于3000ALTER TABLE empADD CONSTRAINT ck_sal CHECK(sal=3000)添加默认值约束,工资的默认值是ALTER TABLE EMPADD CONSTRAITNT df_sal DEFAULT 800 FOR sal添加外键约束(主表dept和从表emp建立关系,关联字段为deptno)ALTER TABLE empA
12、DD CONSTRAINT fk_deptno FOREIGN KEY(deptno)REFERENCES dept(deptno),添加约束示例,演示:查看约束结果,删除约束,删除约束语法:,ALTER TABLE 表名 DROP CONSTRAINT 约束名,例如删除表emp中的工资默认值约束ALTER TABLE EMP DROP CONSTRAINT df_sal,回顾SQL Server的安全模型,增删改查,增删改查,增删改查,增删改查,增删改查,增删改查,数据库用户,数据库用户,数据库用户,登录帐号,SQLserver三层安全管理,数据表1数据表2,DB1,数据表1数据表2,DB2
13、,数据表1数据表2,DB3,登录方式回顾,登录验证有两种方式:SQL身份验证:适合于非windows平台的用户或Internet用户,需要提供帐户和密码Windows身份验证:适合于windows平台用户,不需要提供密码,和windows集成验证登录帐户相应有两种::SQL 帐户和Windows帐户,创建登录账户,使用SQL语句创建两种模式下的登录帐户添加WINDOWS登录帐户添加SQL登录帐户,EXEC sp_grantlogin windows域名域帐户,EXEC EXEC sp_addlogin 帐户名,密码,创建登录账户,添加Windows登录帐户/windows用户为S01,SDXY
14、表示域 如是本机,SDXY为计算机名 EXEC sp_grantlogin SDXYS01添加SQL登录帐户/登录名为zhangsan,密码为1234 EXEC sp_addlogin zhangsan,1234 GO,演示:创建登录帐户,创建数据库用户,创建了登录帐户,只能登录到SQL Server系统,但还不能访问某个数据库。如果希望访问某个数据库,必须要成为该数据库的一个用户。创建数据库用户需要调用系统存储过程sp_grantdbaccess 在empDB中添加两个用户,EXEC sp_grantdbaccess 登录帐户,数据库用户,USE empDB-S01DBUser为数据库用户名
15、EXEC sp_grantdbaccess SDXYS01,S01DBUserEXEC sp_grantdbaccess zhangsan,zhangsanDBUser,演示:创建数据库用户,给数据库用户授权,当成为数据库用户后,还不能访问表,需要DBA授予普通用户访问表的权限:insert,update,delete,select语法:,GRANT 权限 ON 表名 TO 数据库用户,USE empDBGO-为zhangsanDBUser 分配对表emp的select,insert,update权限GRANT select,insert,update ON emp TO zhangsanDBUser-为用户s01DBUser 分配建表的权限GRANT create table TO S01DBUser,总结 2-1,数据库的物理实现一般包括:创建数据库创建表添加各种约束创建数据库的登录帐户并授权创建数据库或表时一般需要预先检测是否存在该对象数据库从master系统数据库的sysdatabases表中查询 表从该数据库的系统表sysobjects表中查询,总结 2-2,访问SQL Server某个数据库中的某个表,需要三层验证:是否是SQL Server的登录帐户是否是该数据库的用户是否有足够的权限访问该表,