数据库数据类型4.docx

上传人:b****5 文档编号:5698404 上传时间:2022-12-31 格式:DOCX 页数:19 大小:135.52KB
下载 相关 举报
数据库数据类型4.docx_第1页
第1页 / 共19页
数据库数据类型4.docx_第2页
第2页 / 共19页
数据库数据类型4.docx_第3页
第3页 / 共19页
数据库数据类型4.docx_第4页
第4页 / 共19页
数据库数据类型4.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数据库数据类型4.docx

《数据库数据类型4.docx》由会员分享,可在线阅读,更多相关《数据库数据类型4.docx(19页珍藏版)》请在冰豆网上搜索。

数据库数据类型4.docx

数据库数据类型4

数据库

(一)

 下面的每个问题都需要针对Oracle,MySQL,SQLServer三种数据库类解答并附带示例:

注释

数据类型

完整的建库语句

完整的建表语句

修改表的结构

建立索引。

MYSQL注释

单行#

多行/*  */

Mysql有3种注释句法

#注射掉注释符后面的本行内容

--注射效果同#

/*...*/ 注释掉符号中间的部分

对于#号将是我们最常用的注释方法。

--号记得后面还得有一个空格才能起注释作用。

/*…*/ 我们一般只用前面的/*就够了,因为后面的我们想加也不行,是吧?

如:

#thisisasinglelinecomment

/*thisisasinglelinecomment*/

/*this,however,

isamultipleline

comment

*/

自MySQL3.23版以来,可在C风格的注释中“隐藏”MySQL特有的关键字,注释以“/*!

”而不是

以“/*”起头。

MySQL查看这种特殊类型注释的内部并使用这些关键字,但其他数据库服务器将这些

关键字作为注释的一部分忽略。

这样有助于编写由MySQL执行时利用MySQL特有功能的代码,而且该代码

也可以不用修改就用于其他数据库服务器。

下面的两条语句对于非MySQL的数据库服务器是等价的,但如

果是MySQL服务器,将在第二条语句中执行一个INSERTDELAYED操作:

insertintoabsence

insert/*!

delayed*/intoabsence

SQLServer注释

标准的注释符“--”用于单行注释;

与C语言相同的程序注释符号,即“/**/”。

“/*”用于注释文字的开头,“*/”用于注释文字的结尾,可在程序中标识多行文字为注释。

MYSQL建表格:

mysql>CREATETABLEdata(namechar(8),sexchar

(2));

上例建立名为data的表格,并有两个字段,分别是name(名字),字符型,长

度8;sex(性别),字符型,长度为2。

表名data分区大小写。

SQLServer  建表格:

用CREATETABLE命令创建表快捷、明了。

其语法如下:

CREATETABLE[database_name.[owner].|owner.]table_name

({|column_nameAScomputed_column_expression|

}[,...n])

[ON{filegroup|DEFAULT}]

[TEXTIMAGE_ON{filegroup|DEFAULT}]

:

:

={column_namedata_type}

[[DEFAULTconstant_expression]

|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]]

[ROWGUIDCOL]

[COLLATE]

[][...n]

各参数说明如下:

∙database_name

指定新建的表属于哪个数据库。

如果不指定数据库名,就会将所创建的表存放在当前数据库中。

∙owner

指定数据库所有者的用户名。

∙table_name

指定新建的表的名称,最长不超过128个字符。

对数据库来说,database_name.owner_name.object_name应该是惟一的。

∙column_name

指定新建的表的名称,最长不超过128个字符。

对数据库来说,database_name.owner_name.object_name应该是惟一的。

∙computed_column_expression

指定计算列(Computedcolumn)的列值的表达式。

表达式可以是列名、常量、变量、函数等或它们的组合。

所谓计算列是一个虚拟的列,它的值并不实际存储在表中,而是通过对同一个表中其它列进行某种计算而得到的结果。

例如:

员工信息表中存储了员工的雇佣日期,那么员工的工龄就可以通过表达式“雇佣日期当前日期”计算出来,则工龄列就可作为一个计算列。

∙ON{filegroup|DEFAULT}

指定存储表的文件组名。

如果使用了DEFAULT选项或省略了ON子句,则新建的表会存储在默认文件组中。

∙TEXTIMAGE_ON

指定TEXT、NTEXT、和IMAGE列的数据存储的文件组。

如果无此子句,这些类型的数据就和表一起存储在相同的文件组中。

∙data_type

指定列的数据类型

∙DEFAULT

指定列的缺省值。

当输入数据时,如果用户没有指定列值,系统就会用设定的缺省值作为列值。

如果该列没有指定缺省值但允许NULL值,则NULL值就会作为缺省值。

其中缺省值可以为常数、NULL值、SQLServer内部函数(如GETDATE()函数)、NILADIC函数等。

∙constant_expression

列缺省值的常量表达式,可以为一个常量或系统函数或NULL。

∙IDENTITY

指定列为IDENTITY列。

一个表中只能有一个IDENTITY列。

∙seed

指定IDENTITY列的初始值。

∙increment

指定IDENTITY列的增量。

∙NOTFORREPLICATION

指定列的IDENTITY属性在把从其它表中复制的数据插入到表中时不发生作用,即不足的生成列值,使得复制的数据行保持原来的列值。

∙ROWGUIDCOL

指定列为全球惟一鉴别行号列(ROWGUIDCOL是RowGlobalUniqueIdentifierColumn的缩写)。

此列的数据类型必须为UNIQUEIDENTIFIER类型。

一个表中数据类型为UNIQUEIDENTIFIER的列中只能有一个列被定义为ROWGUIDCOL列。

ROWGUIDCOL属性不会使列值具有惟一性,也不会自动生成一个新的数值给插入的行。

需要在INSERT语句中使用NEWID()函数或指定列的缺省值为NEWID()函数。

∙COLLATE指明表使用的校验方式。

∙column_constraint和table_constraint

指定列约束和表约束,我们将在下一节中介绍其具体定义。

其余参数将在后面的章节中逐步讲述。

注意:

一个表至少有一列,但最多不超过1024个列。

每个数据库中最多可以创建200万个表。

表在存储时使用的计量单位是盘区(Extent)。

一个盘区分为8个数据页,每页8KB字节。

在创建新表时,会分配给它一个初始只为一个盘区的存储空间。

当增加表的存储空间时,以盘区为单位增加。

完整的建库语句

SqlServer:

1。

展开服务器组,然后展开服务器实例

2。

右击"数据库",然后单击"新建数据库"命令,打开"数据库属性"窗口.

3。

键入新数据库的名称.

4。

默认情况下,系统自动地使用指定的数据库名作为前缀创建主数据库和事务日志文件.

5。

要更改新建主数据库文件的默认值,单击"数据文件"选项卡.

6。

若要更改新建事务日志文件的默认值,单击"事务日志"选项卡.

7。

要指定文件如何增长,请从以下选择中选择:

  *当需要更多的数据空间时,若要允许当前选定的文件增长,选择“文件自动增长”命令

  *要指定文件按固定步长增长,选择“按兆字节”命令并指定一个值

  *若要指定文件按当前大小不一的百分比增长,选择“按百分比”命令,并且指定一个值

8。

建议指定文件的最大允许增长的大小

  #这样做可以防止文件在添加数据时无限制增大,以至用尽整个磁盘空间。

   

完整的建库语句SqlServer:

1。

展开服务器组,然后展开服务器实例2。

右击"数据库",然后单击"新建数据库"命令,打开"数据库属性"窗口.3。

键入新数据库的名称.4。

默认情况下,系统自动地使用指定的数据库名作为前缀创建主数据库和事务日志文件.5。

要更改新建主数据库文件的默认值,单击"数据文件"选项卡.6。

若要更改新建事务日志文件的默认值,单击"事务日志"选项卡.7。

要指定文件如何增长,请从以下选择中选择:

  *当需要更多的数据空间时,若要允许当前选定的文件增长,选择“文件自动增长”命令  *要指定文件按固定步长增长,选择“按兆字节”命令并指定一个值  *若要指定文件按当前大小不一的百分比增长,选择“按百分比”命令,并且指定一个值8。

建议指定文件的最大允许增长的大小  #这样做可以防止文件在添加数据时无限制增大,以至用尽整个磁盘空间。

   

完整的建库语句SqlServer:

1。

展开服务器组,然后展开服务器实例2。

右击"数据库",然后单击"新建数据库"命令,打开"数据库属性"窗口.3。

键入新数据库的名称.4。

默认情况下,系统自动地使用指定的数据库名作为前缀创建主数据库和事务日志文件.5。

要更改新建主数据库文件的默认值,单击"数据文件"选项卡.6。

若要更改新建事务日志文件的默认值,单击"事务日志"选项卡.7。

要指定文件如何增长,请从以下选择中选择:

  *当需要更多的数据空间时,若要允许当前选定的文件增长,选择“文件自动增长”命令  *要指定文件按固定步长增长,选择“按兆字节”命令并指定一个值  *若要指定文件按当前大小不一的百分比增长,选择“按百分比”命令,并且指定一个值8。

建议指定文件的最大允许增长的大小  #这样做可以防止文件在添加数据时无限制增大,以至用尽整个磁盘空间。

   

MySql:

/* createdatabaseaccounts;     #accounts为数据库名

   useaccounts;

*/

Oracle:

1。

用DatabaseAssistant创建典型的数据库

2。

用DatabaseAssistant自定义创建一个数据库

3。

用PL/SQL语句创建数据库

   createdatabasemydb

   logfilefile1,file2sizenm   #file1,file2为文件名  size为大小

   maxlogfilesn

   maxlogmembersn

   maxloghistoryn

   Datafilefile1sizenm        #file1为文件名

   maxdatafilesn

   maxinstancesn

   archivelog | noarchivelog 

举例:

  createdatabasemydb

  datafile'/disk03/mydb/system1.dbf'size20m

  logfile'/disk04/mydb/log1.log',

  'disk05/mydb/log2.log'size512k;      

             

建立索引

1sql\oracle\的建立索引

 CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_name

 ON{table|view}(column[ASC|DESC])

 UNIQUE参数创建唯一索引;

 CLUSTERED|NONCLUSTERED聚集/非聚集索引;

 ASC升序

 DESC降序

 

 eg:

 为表Employee创建基于Wage列的索引au_wage;

 CREATEINDEXau_wageONEmployee(wage)

2mysql

 1).普通索引

 创建索引:

CREATEINDEXindexNameONtableName(tableColumns(length));

   如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length。

 2).唯一索引

  创建索引:

CREATEUNIQUEINDEXindexNameONtableName(tableColumns(length))

 3)主键索引

 CREATETABLEtestIndex(i_testIDINTNOTNULLAUTO_INCREMENT,

                          vc_NameVARCHAR(16)NOTNULL,PRIMARYKEY(i_testID)); 

三种数据库数据类型

oracle数据类型分类:

Char用于描述定长的字符型数据,长度<=2000字节

varchar2用于描述变长的字符型数据,长度<=4000字节

nchar用来存储Unicode字符集的定长字符型数据,长度<=1000字节

nvarchar2用来存储Unicode字符集的变长字符型数据,长度<=1000字节

number用来存储整型或者浮点型数值

Date用来存储日期数据

Long用来存储最大长度为2GB的变长字符数据

Raw用来存储非结构化数据的变长字符数据,长度<=2000字节

Longraw用来存储非结构化数据的变长字符数据,长度<=2GB

rowid用来存储表中列的物理地址的二进制数据,占用固定的10个字节

Blob用来存储多达4GB的非结构化的二进制数据

Clob用来存储多达4GB的字符数据

nclob用来存储多达4GB的Unicode字符数据

Bfile用来把非结构化的二进制数据存储在数据库以外的操作系统文件中

urowid用来存储表示任何类型列地址的二进制数据

float用来存储浮点数

SQL-sever数据类型分类:

整数数据类型         INT或INTEGER SMALLINT TINYINT  BIGINT

浮点数据类型         REAL FLOAT DECIMAL  NUMERIC

二进制数据类型       BINARY  VARBINARY

逻辑数据类型         BIT

字符数据类型         CHAR  NCHAR VARCHAR  NVARCHAR

文本和图形数据类型   TEXT  NTEXT IMAGE

日期和时间数据类型   DATETIME  SMALLDATETIME

货币数据类型         MONEY  SMALLMONEY

特定数据类型         TIMESTAMP  UNIQUEIDENTIFIER

用户自定义数据类型   SYSNAME

新数据类型           SQL_VARIANT  TABLE

详解:

4.3.1整数数据类型

   整数数据类型是最常用的数据类型之一。

    1、INT(INTEGER)

INT(或INTEGER)数据类型存储从-2的31次方(-2,147,483,648)到2的31次方-1(2,147,483,647)之间的所有正负整数。

每个INT类型的数据按4个字节存储,其中1位表示整数值的正负号,其它31位表示整数值的长度和大小。

    2、SMALLINT

SMALLINT数据类型存储从-2的15次方(-32,768)到2的15次方-1(32,767)之间的所有正负整数。

每个SMALLINT类型的数据占用2个字节的存储空间,其中1位表示整数值的正负号,其它15位表示整数值的长度和大小。

    3、TINYINT

TINYINT数据类型存储从0到255之间的所有正整数。

每个TINYINT类型的数据占用1个字节的存储空间。

    4、BIGINT

BIGINT数据类型存储从-2^63(-9,223,372,036,854,775,807)到2^63-1(9,223,372,036,854,775,807)之间的所有正负整数。

每个BIGINT类型的数据占用8个字节的存储空间。

4.3.2浮点数据类型

   浮点数据类型用于存储十进制小数。

浮点数值的数据在SQLServer中采用上舍入(Roundup或称为只入不舍)方式进行存储。

所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保留数字部分的最低有效位上的数值加1,并进行必要的进位。

若一个数是上舍入数,其绝对值不会减少。

如:

对3.14159265358979分别进行2位和12位舍入,结果为3.15和3.141592653590。

    1、REAL数据类型

REAL数据类型可精确到第7位小数,其范围为从-3.40E-38到3.40E+38。

每个REAL类型的数据占用4个字节的存储空间。

    2、FLOAT

FLOAT数据类型可精确到第15位小数,其范围为从-1.79E-308到1.79E+308。

每个FLOAT类型的数据占用8个字节的存储空间。

FLOAT数据类型可写为FLOAT[n]的形式。

n指定FLOAT数据的精度。

n为1到15之间的整数值。

当n取1到7时,实际上是定义了一个REAL类型的数据,系统用4个字节存储它;当n取8到15时,系统认为其是FLOAT类型,用8个字节存储它。

    3、DECIMAL

DECIMAL数据类型可以提供小数所需要的实际存储空间,但也有一定的限制,您可以用2到17个字节来存储从-10的38次方-1到10的38次方-1之间的数值。

可将其写为DECIMAL[p[s]]的形式,p和s确定了精确的比例和数位。

其中p表示可供存储的值的总位数(不包括小数点),缺省值为18;s表示小数点后的位数,缺省值为0。

例如:

decimal(155),表示共有15位数,其中整数10位,小数5。

位表4-3列出了各精确度所需的字节数之间的关系。

  4、NUMERIC

NUMERIC数据类型与DECIMAL数据类型完全相同。

注意:

SQLServer为了和前端的开发工具配合,其所支持的数据精度默认最大为28位。

但可以通过使用命令来执行sqlserver.exe程序以启动SQLServer,可改变默认精度。

命令语法如下:

SQLSERVR[/Dmaster_device_path][/Pprecisim_leve1]

4.3.3二进制数据类型

    1、BINARY

BINARY数据类型用于存储二进制数据。

其定义形式为BINARY(n),n表示数据的长度,取值为1到8000。

在使用时必须指定BINARY类型数据的大小,至少应为1个字节。

BINARY类型数据占用n+4个字节的存储空间。

在输入数据时必须在数据前加上字符“0X”作为二进制标识,如:

要输入“abc”则应输入“0xabc”。

若输入的数据过长将会截掉其超出部分。

若输入的数据位数为奇数,则会在起始符号“0X”后添加一个0,如上述的“0xabc”会被系统自动变为“0x0abc”。

    2、VARBINARY

VARBINARY数据类型的定义形式为VARBINARY(n)。

它与BINARY类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。

不同的是VARBINARY数据类型具有变动长度的特性,因为VARBINARY数据类型的存储长度为实际数值长度+4个字节。

当BINARY数据类型允许NULL值时,将被视为VARBINARY数据类型。

一般情况下,由于BINARY数据类型长度固定,因此它比VARBINARY类型的处理速度快。

4.3.4逻辑数据类型

   BIT:

BIT数据类型占用1个字节的存储空间,其值为0或1。

如果输入0或1以外的值,将被视为1。

BIT类型不能定义为NULL值(所谓NULL值是指空值或无意义的值)。

4.3.5字符数据类型

   字符数据类型是使用最多的数据类型。

它可以用来存储各种字母、数字符号、特殊符号。

一般情况下,使用字符类型数据时须在其前后加上单引号’或双引号”。

    1CHAR

CHAR数据类型的定义形式为CHAR[(n)]。

以CHAR类型存储的每个字符和符号占一个字节的存储空间。

n表示所有字符所占的存储空间,n的取值为1到8000,即可容纳8000个ANSI字符。

若不指定n值,则系统默认值为1。

若输入数据的字符数小于n,则系统自动在其后添加空格来填满设定好的空间。

若输入的数据过长,将会截掉其超出部分。

    2、NCHAR

NCHAR数据类型的定义形式为NCHAR[(n)]。

它与CHAR类型相似。

不同的是NCHAR数据类型n的取值为1到4000。

因为NCHAR类型采用UNICODE标准字符集(CharacterSet)。

UNICODE标准规定每个字符占用两个字节的存储空间,所以它比非UNICODE标准的数据类型多占用一倍的存储空间。

使用UNICODE标准的好处是因其使用两个字节做存储单位,其一个存储单位的容纳量就大大增加了,可以将全世界的语言文字都囊括在内,在一个数据列中就可以同时出现中文、英文、法文、德文等,而不会出现编码冲突。

    3、VARCHAR

VARCHAR数据类型的定义形式为VARCHAR[(n)]。

它与CHAR类型相似,n的取值也为1到8000,若输入的数据过长,将会截掉其超出部分。

不同的是,VARCHAR数据类型具有变动长度的特性,因为VARCHAR数据类型的存储长度为实际数值长度,若输入数据的字符数小于n,则系统不会在其后添加空格来填满设定好的空间。

一般情况下,由于CHAR数据类型长度固定,因此它比VARCHAR类型的处理速度快。

    4、NVARCHAR

NVARCHAR数据类型的定义形式为NVARCHAR[(n)]。

它与VARCHAR类型相似。

不同的是,NVARCHAR数据类型采用UNICODE标准字符集(CharacterSet),n的取值为1到4000。

4.3.6文本和图形数据类型

   这类数据类型用于存储大量的字符或二进制数据。

    1、TEXT

TEXT数据类型用于存储大量文本数据,其容量理论上为1到2的31次方-1(2,147,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1