5表的创建及管理详解
- 格式:doc
- 大小:246.00 KB
- 文档页数:22
第3章:表的创建和管理(一)3.1SQL Server 2000中的数据类型3.1.1 数字数据类型1.整数类型bigint:存储大小8个字节。
int:存储大小4个字节。
smallint:存储大小2个字节。
tinyint:存储大小1个字节。
用于存储0到255的整型数据。
bit:用于存储整数,但只能取0,1或者NULL,可以用于做逻辑运算。
2.小数类型float[(n)]:用于存储一定范围之内的浮点数,当n在1到24之间时,精度是7位,占有4个字节。
当n在25到53之间时,精度位15个有效数字,占用8个字节。
real:用于存储一定范围的浮点数,占用4个字节,相当于float(24).decimal[(p,[s])]和numeric[(p,[s])]数据类型:用于存储带小数点且数值确定的数据。
[表示数值的全部位数,取值范围为1到38,其中包括小数的位数。
但不包括小数点在内,p称为该数值的精度;s表示小数的位数。
money和smallmoney用来存储货币类型的数据,它们带有4位小数。
在money和smallmoney 类型的劣种输入货币数据时,应当在货币数据后面加一个货币符号。
输入负值时,应当在货币数据后面加上一个负号。
money占8个字节。
smallmoney占4个字节。
3.1.2 字符串类型数据1. 非Unicode字符串类型char[(n)]:是一种长度固定的非Unicode字符数据,其长度为n个字节,n必须是1到8000之间的数值。
如果没有指定n则默认为1。
varchar[(n)]:是一种长度可变的非Unicode的字符数据,其长度为n个字节,n必须是1到8000的数值。
数据的存储大小为输入数据的字节的实际长度,而不是n个字节。
如果没有定义n,则默认长度为1。
text:是一种服务器代码页中长度可变的非Unicode数据。
2. Unicode字符串类型nchar(n):是一种长度固定的Unicode字符数据,其中包含n个字符,n的值必须在1到4000之间。
权限系统设计五张表在进行权限系统设计时,一项十分重要的任务是设计适当的数据库表结构。
数据库表的设计决定了系统的灵活性、效率和数据的完整性。
本文将介绍一个权限系统的设计,包括五张表的设计和结构。
表一:用户表(User)该表用于存储系统中的用户信息。
它包含以下字段:1. 用户ID(UserID):用于唯一标识每个用户的ID。
2. 用户名(Username):用户的登录名。
3. 密码(Password):用户的密码,需要进行加密存储。
4. 姓名(Name):用户的真实姓名。
5. 邮箱(Email):用户的电子邮箱地址。
6. 手机号码(PhoneNumber):用户的手机号码。
表二:角色表(Role)角色表用于存储系统中的角色信息,该表包含以下字段:1. 角色ID(RoleID):用于唯一标识每个角色的ID。
2. 角色名称(RoleName):角色的名称,如管理员、普通用户等。
3. 角色描述(RoleDescription):对角色进行详细描述。
表三:权限表(Permission)权限表用于存储系统中的权限信息,该表包含以下字段:1. 权限ID(PermissionID):用于唯一标识每个权限的ID。
2. 权限名称(PermissionName):权限的名称,如查看、编辑等。
3. 权限描述(PermissionDescription):对权限进行详细描述。
表四:角色-权限关联表(RolePermission)角色-权限关联表用于记录角色和权限之间的关系,该表包含以下字段:1. 关联ID(ID):用于唯一标识每个角色-权限关联的ID。
2. 角色ID(RoleID):与角色表中的角色ID关联。
3. 权限ID(PermissionID):与权限表中的权限ID关联。
表五:用户-角色关联表(UserRole)用户-角色关联表用于记录用户和角色之间的关系,该表包含以下字段:1. 关联ID(ID):用于唯一标识每个用户-角色关联的ID。
表的创建和管理创建了数据库,需要创建表存储数据。
本章介绍:●表结构的创建、修改、删除;●表数据的插入、更新、删除;●表数据的约束(主键、唯一、检查、默认、外键)一、表的概念数据表的概念在第1章已经介绍,即:●表由行、列构成,●行代表一条记录,列代表记录的一个属性。
●行列的次序并不影响数据。
SQL SERVER2008允许每个数据库最多20亿张表,每张表最多1024列,每行数据最多8K。
二、数据类型SQL SERVER的数据有数据类型,在创建表结构时需要确定表中每列的数据类型。
SQL SERVER的数据类型有系统数据类型和用户自定义数据类型。
1、系统数据类型(常用)2、用户自定义数据类型SQL Server用户自定义数据类型从系统类型派生,指定一个容易记忆的名称,便于统一使用某种数据类型。
例如:邮政编码都是6个数字字符的号码,数据类型可以用char(6)表示。
为了方便以后统一使用,可以指定一个名字zip代表char(6)这种数据类型。
zip就是用户自定义数据类型。
(1)使用企业管理器管理自定义数据类型●创建:数据库-可编程性-类型-用户自定义类型-右键-新建“用户定义数据类型”-输入名称、选择数据类型等确定后创建。
●删除:数据库-可编程性-类型-用户自定义类型-选中自定义数据类型-右键删除-删除对象窗口-确定例3-1:使用企业管理器,创建一个用户自定义数据类型telphone_code,系统数据类型为varchar(15),允许空。
(2)使用T-SQL语法管理自定义数据类型●创建:CREATE TYPE <类型名> FROM <系统类型> [NULL | NOT NULL]●删除:DROP TYPE <类型名>例3-1:使用T-SQL,创建一个用户自定义数据类型telphone_code,系统数据类型为varchar(15),允许空。
(使用T-SQL)CREATE TYPE telphone_code FROM varchar(15) NULLDROP TYPE telphone_code例3-2、例3-3:T-SQL创建删除自定义数据类型(参见教材、略)三、表结构的创建、修改和删除1、表结构的创建(1)使用企业管理器创建表结构数据库-表右键-“新建表”-表设计器窗口。
WPS教程如何创建和管理数据WPS办公软件是一款功能强大的办公工具,它包含了文字、表格和演示等多种功能模块,广泛应用于办公场景中。
在使用WPS时,我们经常需要创建和管理数据,本教程将介绍如何使用WPS办公软件创建和管理数据。
一、创建数据表数据表是一种结构化的数据存储方式,可以将数据按照不同的字段分类和组织。
在WPS表格中,我们可以通过以下步骤来创建数据表:1. 打开WPS表格软件,选择一个空白的工作表。
2. 在第一行输入数据表的字段名称,每个字段占据一列。
例如,可以按照姓名、年龄和性别三个字段创建一个学生信息表。
3. 在第二行及以下的行中输入具体的数据,每一行代表一个记录。
按照字段的对应关系,填写每个记录的信息。
通过以上步骤,我们就成功创建了一个简单的数据表。
在填写数据时,可以根据需要插入新的行或列,并对数据进行格式化、排序和筛选等操作,以满足不同的需求。
二、数据的排序与筛选当数据量较大时,我们常常需要对数据进行排序或筛选,以便更好地进行查阅和分析。
WPS表格提供了丰富的排序和筛选功能,具体步骤如下:1. 选择需要排序或筛选的数据范围。
2. 点击工具栏中的“排序”或“筛选”按钮,进入相应的功能界面。
3. 根据需要选择排序字段、排序方式或筛选条件,并进行相应设置。
4. 点击“确定”按钮,即可完成排序或筛选操作。
通过排序功能,我们可以按照某个字段进行升序或降序排列,方便查找和比较。
而筛选功能则可以根据设定的条件,过滤出符合要求的数据,从而进行更精细化的数据分析。
三、数据的计算和统计除了存储和管理数据,WPS表格还可以进行数据的计算和统计,方便我们对数据进行各种分析和处理。
以下是一些常用的计算和统计功能:1. 公式计算:WPS表格支持各种常用的数学、统计和逻辑运算符,可以通过输入公式来对数据进行计算。
例如,我们可以使用SUM函数计算一列数字的总和,使用AVERAGE函数计算平均值等。
2. 数据透视表:数据透视表是一种强大的数据分析工具,可以对大量的数据进行汇总和分析。
表的创建与管理实验遇到的问题及解决方法在本文中,将探讨表的创建与管理实验中可能遇到的一些问题,以及解决这些问题的方法。
我们将从基础知识和常见问题开始,逐步深入探讨,帮助读者全面理解这一主题。
一、基础知识1. 表的概念和作用我们需要了解什么是表,在数据库中的作用是什么。
表是数据库中用来存储数据的基本单位,它由行和列组成,每一行代表一个记录,每一列代表一个字段。
表的创建是数据库设计的第一步,也是数据管理的核心。
2. 表的创建语法在SQL语言中,创建一个表需要使用CREATE TABLE语句,通过指定表的名称和字段的属性来完成。
在实际操作中,我们需要了解不同数据库管理系统的语法差异,例如MySQL、SQL Server、Oracle等。
3. 表的管理操作包括对表的增、删、改、查等基本操作,以及对表结构的修改、索引的创建等高级操作。
二、常见问题及解决方法在实际操作中,我们可能会遇到以下一些问题:1. 表的创建失败可能是由于语法错误、权限不足、字段重复等原因导致的。
解决方法是仔细检查语法、确认权限、重新设计表结构等。
2. 表的字段类型选择在创建表时,选择合适的字段类型是非常重要的。
不同的字段类型适用于不同的数据类型,选择不当会导致数据存储不当,影响查询和性能。
3. 表的主键和外键设置主键和外键的设置对于数据的完整性和关联性非常重要,需要仔细考虑和设计,避免出现数据不一致或关联错误的问题。
4. 表的索引设计合理的索引设计可以提高查询效率,但不当的索引设置也会降低性能并占用大量空间。
需要根据实际情况设计和优化索引。
5. 表的数据量过大当表的数据量过大时,查询和操作性能会受到影响,需要进行分区、分表、数据压缩等操作来解决。
总结与回顾通过本文的介绍,我们深入了解了表的创建与管理实验中可能遇到的问题及解决方法。
从基础知识到常见问题,再到解决方法的具体介绍,希望能帮助读者更好地掌握这一主题。
在实际操作中,需要综合运用知识和经验,才能更好地处理表的创建与管理。
表的创建与管理●创建表●表结构的修改●表的重命名与删除●向表中添加、更新、删除数据1.创建表SQL Server 2000提供了两种方法创建表:一. 利用Enterprise Manager创建表以创建数据库JWGL中学生表为例,下面进行使用企业管理器创建表的介绍。
①进入企业管理器,分别点击“数据库”、“JWGL”、“表”,再点击菜单“操作”、“新建表”(或右击“表”,在弹出的快捷菜单上点击“新建表”);②依次输入字段名学号、姓名、性别、年龄、政治面貌、家庭住址、入学年份、所在院系、班级名及相应的数据类型、字段长度等设置值。
数据类型是指数据存放在计算机内存中的存储格式,代表了不同的信息类型。
数据类型由SQL Server系统定义,含系统数据类型和用户定义的数据类型注意:SQL Server 2000中,为字段列选择合适的数据类型尤为重要,影响着系统的空间利用、性能、可靠性和是否易于管理等特性。
SQL Server支持的所有数据类型:十六进制型binary, varbinary 字符型char日期时间datetime, smalldatetime 整数型int, smallint, tinyint精确数型decimal , numeric 浮点数型float, real货币型money, smallmoney 位型bit时间戳型timestamp 文本型text 图像型image1.空值·允许空值意味着用户在向表中插入数据时可忽略该字段值·若字段为空,则需要更多的存储空间,并可能产生其他性能上的或存储方面的问题2.字符型输入的数据必须用单引号括起来,字符串变量有两种:·定长char(长度固定) 实际长度不足定义长度,尾部以空格补足·可变长varchar(长度可变) 实际长度不足定义长度,丢掉尾部空格节省空间1) 字符型字段的长度字符串字段的最大长度为8000个字符varchar(1)格式不正确char和varchar的选择原则:♦预先知道在某一列只能输入长度固定的字符串用char型,如:学号,身份证号♦varchar型在存储时删除了尾部空间,能节省空间3.十六进制型存储十六进制数或十六进制字符串♦十六进制型最大长度为8000个字节♦十六进制数由0-9,A-F,a-f组成, 0x作为开头,每两个字符为一组,构成一字节♦定长 binary♦长度可变 varbinary若字段被定义为binary 和varbinary类型,则必须为其规定最大长度。
表的创建及管理1、本次预计讲解的知识点1、数据表的创建及管理;2、表约束的创建及管理3、利用DDL、DML完成一套完整的操作案例;4、序列的使用;5、数据的集合操作;6、PL SQL Developer工具的使用;2、具体内容2.1、表的创建及管理(重点)对于数据库而言实际上每一张表都表示的是一个数据库对象,而在数据库中对象指的就是DDL定义的所有操作,例如:表、视图、索引、序列、约束等等,都属于对象的操作,所以表的建立就是对象的建立,而对象的操作主要分为以下三类语法:·创建对象:CREATE 对象名称……;、·删除对象:DROP 对象名称.....;·修改对象:ALTER 对象名称......;2.1.1、常用的数据字段每一张数据表实际上都是由若干个字段所组成,而每一个字段都会有其对应的数据类型,而在Oracle之中,常用的数据类型有如下几种:No. 数据类型关键字描述1 字符串V ARCHAR2(n) 其中n表示的是字符串所能保存的最大长度,基本上保存200个左右的内容2 整数NUMBER(n) 表示最多为n位的整数,有时候也可以使用IN代替3 小数NUMBER(n,m) 其中m为小数位,n-m为整数位,有时候也可以使用FLOAT代替4 日期DATE 存放日期-时间5 大文本CLOB 可以存储海量文字(4G),例如存储《三国演义》、《红楼梦》6 大对象BLOB 存放二进制数据,例如:电影、MP3、图片、文字一般开发之中使用最多的:V ARCHAR2()、NUMBER、DATE、CLOB,而对于BLOB字段一般使用较少,首先BLOB可以存放4G的二进制数据,但是存放进去之后,一是数据库过于庞大,二是读取不方便;2.1.2、表的创建如果现在要想进行表的创建,可以使用如下的操作语法:CREAT TABLE 表名称(字段1 数据类型[DEFAULT 默认值],字段2 数据类型[DEFAULT 默认值],.........字段2 数据类型[DEFAULT 默认值]);下面创建一张成员表(member),有如下保存的信息:姓名、年龄、生日、个人简介。
CREATE TABLE member(name V ARCHAR2(50) DEFAULT '无名氏',age NUMBER(3),birthday DATE DEFAULT SYSDATE,content CLOB);表创建成功后,下面开始向表中增加数据:INSERT INTO member(name,age,birthday,content)V ALUES('张三',20,TO_DATE('1990-08-12','yyyy-mm-dd'),'好人');INSERT INTO member(age,content)V ALUES(20,'好人');一定要再次记住,表的创建时属于数据库对象的创建,所以使用的是CREA TE语法。
2.13、表的复制在之前学习过表的复制操作,下面给出完整的操作语法:CREATE TABLE 复制表名称AS 子查询;范例:复制一张只包含20部门雇员信息的表;CREATE TABLE emp20 ASSELECT * FROM emp WHERE deptno=20;范例:现在要求将emp表的表结构复制出来,不要数据---写个永远满足不了的条件即可。
CREATE TABLE empnull ASSELECT * FROM emp WHERE 1=2;但是以上的语法只是oracle数据库所支持的操作,其他的数据库语法上会有一些区别。
2.1.4、为表重命名(了解)在oracle数据库之中,所有的数据库实际上都是通过数据字典保存的,例如,在之前曾经使用过如下的一种查询:SELECT * FROM tab;以上就是一个数据字典,而在oracle之中,提供了三种类型的数据字典,最常用的是:dba、user_,所以下面查询一个user_tables数据字典:SELECT * FROM user_tables;也就是说oracle中的所有数据都是按照文件保存的,那么所有的内容都会在数据字典中注册,既然这样,所谓的修改表名称实际上对于oracle而言就相当于修改一条数据而已,而修改表名称的方法如下:RENAME 旧的表名称TO 新的表名称;范例:将member表更名为person表RENAME member TO person;但是这种操作由于是oracle数据库所独有的一种特性,所以了解即可,不用做深入的掌握。
2.1.5、截断表(了解)在之前曾经讲解过一个删除表数据的操作,使用的是DELETE操作,但是这种删除操作本身有一个特点,即:可以进行事务的回滚,也就是说删除之后并不会立刻释放数据的资源,如果现在希望彻底释放掉一张表所占用的全部资源(表空间、索引等等)就可以使用截断表的语法,此语法如下:TRUNCATE TABLE 表名称;范例:截断person表TRUNCATE TABLE person;但是这种语法本身只是oracle所有的,所以只做了解即可。
2.1.6、表的删除表的删除操作指的是数据库对象的删除,既然是删除则使用DROP语句,删除表的语法如下:DROP TABLE 表名称;范例:删除person表DROP TABLE person;2.1.7、oracle 10g的新特性闪回技术(理解)在oracle 10g之后,为了预防用户的误删除表操作,专门提供了回收站的功能,用户所删除的表默认情况下会在一个回收站中保存,而用户也可以通过回收站,进行表的恢复,所以此技术称为闪回(FLASHBACK);范例:查看回收站SHOW RECYCLEBIN;这个时候可以发现所有已经删除的表都在回收站之中保存,那么下面就可以使用如下的语法恢复表:FLASHBACK TABLE 表名称BEFORE DROP;范例:恢复myemp表FLASHBACK_TABLE person;当然,现在也可以直接删除掉回收站中的一些数据,语法如下:PURGE TABLE 表名称;范例:删除回收占中的person表PURGE TABEL person;范例:清空回收站PUEGE RECYCLEBIN;如果现在希望删除一张表,而又不希望其进入到回收站之中,则可以在删除的时候增加PURGEDROP TABLE myemp PURGE;这种技术是在oracle 10g之后才有的,而oracle 11g也是存在的。
问题:现在在回收站之中存在了一张tab表,而后又建立了一张tab表,那么如果从回收站中恢复的话,可以吗?无法恢复,但是一般人真不会出这样的问题。
2.1.8、修改表结构(了解)如果一张建立好的数据表,发现其初期的结果已经不满足于后期的使用要求,则可以进行表结构的修改操作,而表的修改操作实际上就是数据库对象的修改操作,使用ALTER指令完成,例如,现在有如下一张表:CREATE TABLE member(Mid NUMBER,name V ARCHAR2(50));现在希望可以向表中增加字段,所以此时可以采用如下语法完成:ALTER TABLE 表名称ADD(列名称数据类型[DEFAULT 默认值],列名称数据类型[DEFAULT 默认值],....);范例:为member表增加字段ALTER TABLE member ADD(age NUMBER(3),birthday DATE DEFAULT SYSDATE);如果增加的数据列没有默认值,则所有已有的数据的列的内容都是null,而如果增加的列指定了DEFAULT默认值的话,则所有已有的数据列都设置为默认值。
现在也可以修改已有的表结构,此时语法如下:ALTER TABLE 表名称ADD(列名称数据类型[DEFAULT 默认值],列名称数据类型[DEFAULT 默认值],....);范例:将name字段的默认值定义为无名氏ALTER TABLE member MODIFY(name V ARCHAR2(100) DEFAULT '无名氏');虽然在SQL语法之中以及oracle数据库之中,都给出了修改表结构的操作,但是这种操作能不用就不用,从大型数据库来讲,世界上性能最高的数据库是IBM DB2,但IBM DB2本身有一个平台的限制问题,所以如果说是跨平台的数据库则是oracle数据库的性能最高。
在IBM DB2数据库之中是不允许修改表结构的,即:表建立完成之后就不能再修改了,所以以后再开发之中也尽可能的不要去修改表结构。
额外补充:关于软件项目的开发基本流程1、获取需求:--->软件销售2、需求分析:--->根据客户方的提示,作出需求分析3、业务分析:--->数据库设计及借口设计;数据表设计4、编码实现:--->业务梳理5、软件测试:--->理论上应有专门的测试人员6、软件培训以及项目的维护;数据表的建立前提=软件的业务分析;2.1.9、思考题(面试题)现在要求建立一张nation表,表中有一个name字段,里面保存四条记录:中国,美国,巴西,荷兰,要求通过查询实现如下的操作效果:·中国美国·中国巴西·中国荷兰·美国巴西·美国中国·美国荷兰剩下的以此类推,现在要求建立新的表完成此查询的操作。
本题目的主要目的并不是在于查询的编写上,而是在于规范化数据库创建脚本的格式,以后只要碰到了类似的要求,首先必须要编写一个数据库创建脚本,这个脚本的要求如下:1、本文件的文件名后缀必须是“*.sql”;2、先删除相应的数据表;3、编写创建表的语句;4、增加测试数据;5、提交事务;--1、删除表DROP TABLE nation PURGE;--2、创建表CREATE TABLE nation(name V ARCHAR2(20));--3、测试数据INSERT INTO nation(name) V ALUES('中国');INSERT INTO nation(name) V ALUES('美国');INSERT INTO nation(name) V ALUES('巴西');INSERT INTO nation(name) V ALUES('荷兰');--4、事务提交COMMIT;本题型如果想要完成需要依靠笛卡尔积完成,属于表的自身关联SELECT ,FROM nation n1,nation n2WHERE <>;而且以后如果面试之中,出现了一些复杂的查询,建议把脚本写全了。