精华内容
下载资源
问答
  • 可以使用DataBase Configuration Assistant来创建一个心得数据库。Database Configuration Assistant简称是DBCA,是创建、配置以及管理数据库的一个工具。...创建数据库的一个具体的步骤:   1、 点击“开始”-“所有
        可以使用DataBase Configuration Assistant来创建一个心得数据库。Database Configuration Assistant简称是DBCA,是创建、配置以及管理数据库的一个工具。 
    

    创建数据库的一个具体的步骤:

     

    1、 点击“开始”-“所有程序”-“Oracle”-“配置和移植工具”-“Database Configuration Assistant”

    2、 进入该工具的欢迎界面

    3、 点击“下一步”按钮,进入“步骤1操作”,里面支持五种操作类型,分别为创建数据库、配置数据库选项、删除数据库、管理模版、配置自动存储管理。

    4、 选择“创建数据库”,单击下“下一步”按钮,进入“步骤2:数据库模版”窗口,该配置页面下面有四种选择分别为:一般用途、事务处理、定制数据库、数据仓库。(在Oracle11G中,一般用途和事务处理被合并为一个叫做一般用途或事务处理)

    5、 选择“一般用途”,然后点击“下一步”按钮,进入“步骤3:数据库标识”窗口。在这里,需要输入全局数据库名以及Oracle的系统标识符(SID)。全局数据名是Oracle数据的唯一标识,所以不能与已经有的数据库重名。打开Oracle数据的时候,将启动Oracle实例。实例由Oracle系统标识符唯一标识,从而区分该计算机上的其他任何实例。在默认情况下,全局数据库名和SID同名。

    6、 在填入全局数据库名以及SID之后,点击“下一步”按钮,打开“步骤4:管理选项”窗口:

        可以看到,这个窗口可以配置使用Oracle Enterprise Manager Grid Control集中管理每个Oracle数据库,也可以使用Oracle Enterprise Manager Database Control本地管理Oracle数据库。默认的是使用EM来进行本地数据库的配置,使用DataBase Control进行数据库的管理。在这个地方可以选择是否启用数据库的备份。

    7、 点击“下一步”按钮,打开“步骤5:数据库身份证明”窗口,该窗口的配置作用是为SYS,SYSTEM,DBSNMP以及SYSMAN用户指定口令,可以选择所有的账户使用相同的口令,也可以分别设置这四个用户的口令:

    8、 点击“下一步”按钮,打开“步骤6:存储选项”窗口,在这里可以选择数据库的存储机制,包含三种存储机制:文件系统、自动存储管理(ASM)、以及裸设备(关于什么是裸设备还是问小杨吧)

    9、 这里选择“文件系统”作为数据库的存储机制,点击“下一步”按钮,打开“步骤7:数据库文件所在位置”窗口:

        这里可以配置Oracle数据文件的位置,可以单击右下角“文件位置变量”按钮来查看当前Oracle数据文件变量的相关设置。

    10、         这里选中“使用模版中的数据文件位置”点击“下一步”按钮,打开“步骤8:恢复配置”窗口,这里可以配置Oracle数据库的备份以及配置选项。可以使用快速恢复区,也可以启用归档。默认的归档恢复区为{ORACLE_BASE}/flash_recovery_area,快速恢复区的大小为2048M。建议:将数据库文件以及恢复文件放到物理位置下面不同的磁盘中,以便于保护数据和提高性能。

    11、         点击“下一步”按钮,打开“步骤9:数据库内容”窗口:

    该窗口有两个选项卡,分别为“示例方案”和“定制脚本”。

    示例方案选项卡,可以配置是否在新的数据库中安装示例方案,这个选项卡里面会创建一个叫做EXAMPLE的表空间,大小约为130M。

    定制脚本当中,可以指定创建数据库之后需要自动运行的sql脚本,例如创建默认的表等等,可以选择不运行或者运行指定的脚本。

    12、         点击“下一步”按钮,打开“步骤10:初始化参数”窗口。

    该选项卡可以配置数据库的初始化参数,包含以下几个内容:内存、调整大小、字符集、连接模式。

    内存:包含典型和定制两种选择。通常可以选择典型配置,也可以手动设置SGA(系统全局区)和PGA(程序全局区)的大小。

    调整大小:设置数据块的大小,指定可以同时链接数据库操作系统用户进程的最大数量。

    字符集:设置数据库使用的字符集,通常使用操作系统的默认语言设置。

    连接模式:Oracle提供了两种数据库的连接模式,专用服务器模式和共享服务器模式。专用服务模式将为每个客户机链接分配专用资源。当预期客户机连接总数较小或者客户机向数据库发出的请求时间较长,使用专用服务器模式。多个客户端连接共享一个数据库分配的资源池。当大量用户需要同时连接数据库并且需要有效的利用资源的时候,使用共享数据库模式。

    13、         点击“下一步”按钮,进入“配置11:数据库存储”窗口。在这里,可以指定创建数据库的存储参数,可以产看和修改存储参数的对象,包括控制文件、数据文件、和重做日志组。

    点击左侧的树状列表,选择查看或者修改的对象,在右侧窗口中将会显示对象的存储信息,通常可以使用默认数据。

    14、         点击“下一步”按钮,进入“步骤12:创建选项”窗口,在这里,可以选择“创建数据库”也可以保存编辑的数据库模版,还可以生成创建数据库的脚本。

    15、         点击“完成”,打开“确认”窗口,显示数据库模版,这里将提示用户创建新的数据库。

    16、         点击“确定”按钮,开始创建数据库,并且显示数据库创建的过程以及进度:

    17、         创建数据库的时间取决于计算机的硬件配置以及数据库的配置情况,选择安装的组建越多,需要的时间就越长。创建完成之后,弹出“创建完成”窗口。可以打开“口令管理”对话框,编辑数据库中各个用户的口令,点击“退出”按钮,完成创建数据库的过程。 

    展开全文
  • 创建数据库命名规则

    2017-04-16 23:11:57
    创建数据库时,数据库命名有以下规则: ☺不能与其他数据库重名。 ☺名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,可以使用上述的任意字符开头,但不能使用单独的  数字,否则会造成它与数值相...

    创建数据库的语法:

    CREATE DATABASE  数据库名;

    在创建数据库时,数据库命名有以下规则:

    不能与其他数据库重名。

    名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,可以使用上述的任意字符开头,但不能使用单独的

        字,否则会造成它与数值相混淆。

    名称最长为64个字符,而别名最多可达256个字符。

    不能使用MySQL关键字作为数据库名、表名。

    在默认情况下,Windows下数据库名、表名的大小写是不敏感的,而在Linux下数据库名、表名的大小写是敏感

       的。为了便于数据库在平台间进行移植,建议读者采用小写来定义 数据库名和表名

        

    展开全文
  • 1 创建数据库快照 CREATE DATABASE数据库快照名 ON( NAME = 逻辑文件名, FILENAME = '操作系统文件名' ) AS SNAPSHOT OF源数据库名 例:创建test1数据库的快照test1_s1 CREATE DATABASE test1_s1 ON ( ...

    数据库应用技术系列第一讲

    1 创建数据库快照

    CREATE DATABASE数据库快照名
        ON(
            NAME = 逻辑文件名,
            FILENAME = '操作系统文件名'
        ) 
        AS SNAPSHOT OF源数据库名
    
    

    例:创建test1数据库的快照test1_s1

    CREATE DATABASE test1_s1
        ON
        (
            NAME=test1,
            FILENAME='d:\SQL Server\2012\test1_s1.mdf'
        )
        AS SNAPSHOT OF test1
    

    命令执行成功后,“对象资源管理器”中,展开数据库,会出现“数据库快照”。
    在这里插入图片描述

    2 删除数据库快照

    删除数据库快照的方法和删除数据库的方法完全相同,可以使用界面方式删除,也可以使用命令方式删除

    例如:

    DROP DATABASE test1_s1;
    

    3 SQL Server数据类型

    • 字符型

    SQL Server字符型包括两类:固定长度(char)或可变长度(varchar)字符数据类型。

    (1)char[(n)]:定长字符数据类型,其中n定义字符型数据的长度,n在1~8 000,默认为1。当表中的列定义为char(n)类型时,若实际存储的串长度不足n时,则在串的尾部添加空格以达到长度n,所以char(n)的长度为n。

    例如,某列的数据类型为char(20),而输入的字符串为"ahjm1922",则存储的是字符ahjm1922和12个空格。若输入的字符个数超出了n,则超出的部分被截断。

    (2)varchar[(n)]:变长字符数据类型,其中,n的规定与定长字符型char中的n完全相同,但这里n表示的是字符串可达到的最大长度。

    • unicode字符型

    unicode字符型包括nchar[(n)]和nvarchar[(n)]两类。nchar是固定长度Unicode数据的数据类型,nvarchar是可变长度unicode数据的数据类型,二者均使用UNICODE UCS-2字符集。

    (1)nchar[(n)]:nchar[(n)]为包含n个字符的固定长度Unicode字符型数据,n的值在1~4 000,长度为2n字节。若输入的字符串长度不足n,将以空白字符补足。

    (2)nvarchar[(n)]:nvarchar[(n)]为最多包含n个字符的可变长度Unicode字符型数据,n的值在1~4 000,默认为1。长度是所输入字符个数的两倍。

    • 文本型

    文本型包括text和ntext两类,分别对应ASCII字符和Unicode字符。

    (1)text类型:可以表示最大长度为231−1个字符,其数据的存储长度为实际字符数个字节。

    (2)ntext类型:可表示最大长度为230-1个Unicode字符,其数据的存储长度是实际字符个数的两倍(以字节为单位)。

    • 二进制型

    (1)binary [(n) ]:固定长度的n个字节二进制数据。n的取值范围为1~8 000,默认为1。binary(n)数据的存储长度为n+4个字节。若输入的数据长度小于n,则不足部分用0填充;若输入的数据长度大于n,则多余部分被截断。

    (2)varbinary [(n)]:n个字节变长二进制数据。n取值范围为1~8 000,默认为1。varbinary(n)数据的存储长度为实际输入数据长度+4个字节。

    • 日期时间类型

    日期时间类型数据用于存储日期和时间信息,日期时间数据类型包括date、time、datetime2和datetimeoffset。

    (1)datetime:可表示的日期范围从1753年1月1日到9999年12月31日,精确度为0.03s(3.33ms或0.00333s)。例如,1~3ms的值都表示为0ms,4~6ms的值都表示为4ms。

    用户给出datetime类型数据值时,日期部分和时间部分分别给出。

    日期部分的表示形式常用的格式如下:

    年 月 日2001 Jan 20、2001 January 20
    年 日 月2001 20 Jan
    月 日[,]年Jan 20 2001、Jan 20,2001、Jan 20,01
    月 年 日Jan 2001 20
    日 月[,]年20 Jan 2001、20 Jan,2001
    日 年 月20 2001 Jan
    年(4位数)2001表示2001年1月1日
    年月日20010120、010120
    月/日/年01/20/01、1/20/01、01/20/2001、1/20/2001
    月-日-年01-20-01、1-20-01、01-20-2001、1-20-2001
    月.日.年01.20.01、1.20.01、01.20.2001、1.20.2001

    时间部分常用的表示格式如下:

    时:分10:20、08:05
    时:分:秒20:15:18、20:15:18.2
    时:分:秒:毫秒20:15:18:200
    时:分AM|PM10:10AM、10:10PM

    (2)smalldatetime:可表示从1900年1月1日到2079年6月6日的日期和时间,数据精确到分钟。即29.998s或更低的值向下舍入为最接近的分钟,29.999s或更高的值向上舍入为最接近的分钟。

    (3)date:可以表示从公元元年1月1日到9999年12月31日的日期,date类型只存储日期数据,不存储时间数据,存储长度为3字节,表示形式与datetime数据类型的日期部分相同。

    (4)time:只存储时间数据,表示格式为“hh:mm:ss[.nnnnnnn]”。hh表示小时,范围为0~23。mm表示分钟,范围为0~59。

    (5)datetime2:也用于存储日期和时间信息。但是datetime2类型取值范围更广,日期部分取值范围从公元元年1月1日到9999年12月31日,时间部分的取值范围为00:00:00.000 000 0~23:59:59.999 999。

    (6)datetimeoffset:也用于存储日期和时间信息,取值范围与datetime2类型相同。但datetimeoffset类型具有时区偏移量,此偏移量指定时间相对于协调世界时(UTC)偏移的小时和分钟数。

    • 时间戳型

    标识符是timestamp。若创建表时定义一个列的数据类型为时间戳类型,那么每当对该表加入新行或修改已有行时,都由系统自动将一个计数器值加到该列,即将原来的时间戳值加上一个增量。

    • 图像数据类型

    标识符是image,它用于存储图片、照片等。实际存储的是可变长度二进制数据,介于0与231−1 (2 147 483 647)字节。该类型是为了向下兼容而保留的数据类型,微软推荐用户使用varbinary(MAX)数据类型来替代image类型。

    • 其他数据类型

    (1)cursor:游标数据类型,用于创建游标变量或定义存储过程的输出参数。

    (2)sql_variant:一种存储SQL Server支持的各种数据类型(除text、ntext、image、timestamp和sql_variant外)值的数据类型。sql_variant的最大长度可达8 016字节。

    (3)table:用于存储结果集的数据类型,结果集可以供后续处理。

    (4)uniqueidentifier:唯一标识符类型。系统将为这种类型的数据产生唯一标识值,它是一个16字节长的二进制数据。

    (5)xml:用来在数据库中保存xml文档和片段的一种类型,但是此种类型的文件大小不能超过2 GB。

    (6)hierarchyid:可表示层次结构中的位置。

    4 计算列

    计算列由可以使用同一表中的其它列的表达式计算得来。

    1. 该表达式可以是非计算列的列名、常量、函数、变量,

    2. 也可以是用一个或多个运算符连接的这些元素的任意组合。

    3. 表达式不能为子查询。

    例:在AdventureWorks示例数据库中,Sales.SalesOrderHeader表的TotalDue列有以下定义:TotalDue AS Subtotal + TaxAmt + Freight。

    5 完整性约束

    实体完整性Primary Key, Unique Key, Unique Index, Identity Column(同一表的元组之间)
    值域完整性Default, Check, Foreign Key, Data Type, Rule(列本身)
    引用完整性Foreign Key, Check, Triggers, Procedure (不同表的元组之间)
    用户定义完整性Rule, Triggers, Procedures, CREATE TABLE中的全部列级和表级约束

    6 创建域完整性

    (1)CHECK约束的定义与删除

    • 界面方式创建与删除CHECK约束

    例如,在pxscj数据库的cjb表中,学生每门功课的成绩的范围为0~100,现对用户的输入数据要施加这一限制。

    ① 在“对象资源管理器”中展开“数据库”→“pxscj”→“表”,选择“dbo.cjb”,展开后选择“约束”,右键单击鼠标,在出现的快捷菜单中选择“新建约束”菜单项,如图所示 。

    在这里插入图片描述

    ② 在打开的 “CHECK约束”对话框中,单击“添加”按钮,添加一个“CHECK约束”。在“常规”属性区域中的“表达式”栏后面单击 按钮(或直接在文本框中输入内容),打开“CHECK约束表达式”窗口,并编辑相应的CHECK约束表达式为“成绩>=0 AND成绩<=100”。

    ③ 在“CHECK约束”对话框中选择“关闭”按钮,并保存修改,完成“CHECK约束”的创建。此时若输入数据,如果成绩不是在0~100的范围内,系统将报告错误。

    如果要删除上述约束,只需进入如图6.7所示的“CHECK约束”对话框,选中要删除的约束,单击“删除”按钮删除约束,然后单击“关闭”按钮即可。

    • 命令方式在创建表时创建CHECK约束

    在创建表时可以使用CHECK约束表达式来定义CHECK约束,CHECK约束表达式语法格式如下:

    CHECK [ NOT FOR REPLICATION ] ( 逻辑表达式 )
    

    关键字CHECK表示定义CHECK约束,如果指定NOT FOR REPLICATION选项,则当复制代理执行插入、更新或删除操作时,将不会强制执行此约束。

    【例6.9】 创建一个表student,只考虑“学号”和“性别”两列,性别只能包含“男”或“女”。

    USE pxscj
    GO
    CREATE  TABLE  student
     (    
         学号char(6) 	NOT NULL,
         性别char(1) 	NOT NULL CHECK(性别IN ('男', '女'))
     )
    
    

    【例6.10】 创建一个表student1,只考虑“学号”和“出生日期”两列,出生日期必须大于1980年1月1日,并命名CHECK约束。

    CREATE TABLE student1
     (    
         学号 	   char(6) 	NOT NULL,
         出生时间 datetime  	NOT NULL,
         CONSTRAINT  DF_student1_cjsj  CHECK(出生时间>'1980-01-01')
     )
    
    

    如果指定的一个CHECK约束中,要相互比较一个表的两个或多个列,那么该约束必须定义为表的约束。

    【例6.11】 创建表student2,有“学号”、“最好成绩”和“平均成绩”三列,要求最好成绩必须大于平均成绩。

    CREATE  TABLE  student2
     (    
        学号 	char(6)     NOT NULL,
        最好成绩 	int  	NOT NULL,
        平均成绩 	int  	NOT NULL,
              CHECK(最好成绩>平均成绩)
    )
    
    

    也可以同时定义多个CHECK约束,中间用逗号隔开。

    • 命令方式在修改表时创建CHECK约束

    在使用ALTER TABLE语句修改表时也能定义CHECK约束。

    定义CHECK约束的语法格式为:

    ALTER TABLE表名
          [ WITH { CHECK | NOCHECK } ] ADD
          [<列定义>]
          [CONSTRAINT约束名] CHECK (逻辑表达式)
    

    【例6.12】 通过修改pxscj数据库的cjb表,增加“成绩”字段的CHECK约束。

    USE pxscj
    GO
    ALTER TABLE cjb     
        ADD CONSTRAINT cj_constraint  CHECK (成绩>=0 AND成绩<=100) 
    
    
    • 利用SQL语句删除CHECK约束

    使用ALTER TABLE语句的DROP子句可以删除CHECK约束。

    语法格式:

    ALTER TABLE表名
        DROP CONSTRAINT约束名
    

    【例6.13】 删除cjb表“成绩”字段的CHECK约束。

    ALTER TABLE cjb     
        DROP CONSTRAINT cj_constraint
    

    int CHECK (成绩>=0 AND成绩<=100)

    
    - 利用SQL语句删除CHECK约束
    
    使用ALTER TABLE语句的DROP子句可以删除CHECK约束。
    
    语法格式:
    
    ```sql
    ALTER TABLE表名
        DROP CONSTRAINT约束名
    

    【例6.13】 删除cjb表“成绩”字段的CHECK约束。

    ALTER TABLE cjb     
        DROP CONSTRAINT cj_constraint
    
    展开全文
  • 数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。 例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。...

    数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。 

    例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。 

    通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。 

    使用SQL Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。 

    一、用CREATE语句创建表

    注意: 

    如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向master,tempdb或任何其他任何系统数据库中添加数据。 

    从SQL Sever程序组(在任务栏中)中启动ISQL/w程序。出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库。下一步,在查询窗口中键入下面的SQL语句,单击执行查询按钮,执行这个语句: 

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

    如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章): 

    This command dit not return data ,and it did not return any rows 

    祝贺你,你已经建立了你的第一个表! 

    你所创建的表名为guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用CREATE TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名字;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。 

    表guestbook有三个字段:visitor,comments 和entrydate。

    Visitor         字段存储访问者的名字,

    Comments     字段存储访问者对你站点的意见,

    Entrydate      字段存储访问者访问你站点的日期和时间。 

    注意每个字段名后面都跟有一个专门的表达式。例如,字段名comments后面跟有表达式TEXT。这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段comments包含文本信息,其数据类型定义为文本型。 

     

    二、字段类型 

    不同的字段类型用来存放不同类型的数据。创建和使用表时,你更应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。 

    (1)字符型数据 

    字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。 

    要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook: 

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

    在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。 

    VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。 

    另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子: 

     

    CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate DATETIME) 

     

    在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。 

    VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 

    现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。 

    当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。 

    VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。 

    (2)文本型数据 

    字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。 

    这里有一个使用文本型数据的例子: 

     

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

     

    在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。 

    当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。 

    警告: 

    一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

    (3)数值型数据 

    SQL Sever支持许多种不同的数值型数据。你可以存储整数、小数、和钱数。 

    通常,当你需要在表中的存放数字时,你要使用整型(INT)数据。INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数。下面是一个如何使用INT型数据的例子: 

    CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT) 

     

    这个表可以用来记录你站点被访问的次数。只要没有人访问你的站点超过2,147,483,647次,nubvisits字段就可以存储访问次数。 

    为了节省内存空间,你可以使用SMALLINT型数据。SMALLINT 型数据可以存储从-32768到32768的整数。这种数据类型的使用方法与INT型完全相同。 

    最后,如果你实在需要节省空间,你可以使用TINYINT型数据。同样,这种类型的使用方法也与INT型相同,不同的是这种类型的字段只能存储从0到255的整数。TINYINT型字段不能用来存储负数。 

    通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 

    为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。 

    当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。这里有一个使用这种数据类型的例子: 

     

    CREATE TABLE numeric_data (bignumber NUMERIC(28,0), fraction NUMERIC (5,4) ) 

     

    当这个语句执行时,将创建一个名为numeric_data的包含两个字段的表。字段bignumber可以存储直到28位的整数。字段fraction可以存储有五位整数部分和四位小数部分的小数。 

    一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。 

    你可以使用INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。 

    SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。下面的例子显示了如何使用这两种表示钱的数据类型: 

     

    CREATE TABLE products (product VARCHAR(40),price MONEY, 

    Discount_price SMALLMONEY) 

     

    这个表可以用来存储商品的折扣和普通售价。字段price 的数据类型是MONEY,字段discount_price的数据类型是SMALLMONEY。 

     

    (4)存储逻辑值 

    如果你使用复选框(CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。这里有一个如何使用这种字段的例子: 

     

     

    CREATE TABLE opinion (visitor VARCHAR(40),good BIT) 

     

    这个表可以用来存放对你的网站进行民意调查所得的信息。访问者可以投票表示他们是否喜欢你的网站。如果他们投YES,就在BIT型字段中存入1。反之,如果他们投NO,就在字段中存入0(在下一章里,你将学会如何计算投票)。 

    当心,在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。 

    (5)存储日期和时间 

    当你建立一个网站时,你也许需要记录在一段时间内的访问者数量。为了能够存储日期和时间,你需要使用DATETIME型数据,如下例所示: 

     

    CREATE TABL visitorlog(arrivaltime DATETIME ,departuretime DATETIME) 

     

    这个表可以用来记录访问者进入和离开你网站的时间和日期。一个DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。 

    如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。 

    DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。在下一章,你将学习怎样使用大量的SQL函数来读取和操作日期和时间(参见下面的“缺省值”一节)。你也可以在VBScript和JScript 中使用日期和时间函数来向一个DATETIME型字段中输入日期和时间。 

    三、字段属性 

    上一节介绍了如何建立包含不同类型字段的表。在这一节中,你将学会如何使用字段的三个属性。这些属性允许你控制空值,缺省值和标识值。 

    (1)允许和禁止空值 

    大多数字段可以接受空值(NULL)。当一个字段接受了空值后,如果你不改变它,它将一直保持空值。空值(NULL)和零是不同的,严格的说,空值表示没有任何值。 

    为了允许一个字段接受空值,你要在字段定义的后面使用表达式NULL。例如,下面的表中两个字段都允许接受空值: 

     

    CREATE TABLE empty (empty1 CHAR (40) NULL,empty2 INT NULL) 

     

    注意: 

    BIT型数据不能是空值。一个这种类型的字段必须取0或者1。 

    有时你需要禁止一个字段使用空值。例如,假设有一个表存储着信用卡号码和信用卡有效日期,你不会希望有人输入一个信用卡号码但不输入有效日期。为了强制两个字段都输入数据,你可以用下面的方法建立这个表: 

    CREATE TABLE creditcards (creditcard_number CHAR(20) NOT NULL, 

    Creditcard_expire DATETIME NOT NULL) 

    注意字段定义的后面跟有表达式NOT NULL。通过包含表达式NOT NULL,你可以禁止任何人只在一个字段中插入数据,而不输入另一个字段的数据。 

     

    你将会发现,在你建设自己的网站过程中,这种禁止空值的能力是非常有用的。如果你指定一个字段不能接受空值,那么当你试图输入一个空值时,会有错误警告。这些错误警告可以为程序调试提供有价值的线索。 

    (2)缺省值 

    假设有一个存储地址信息的表,这个表的字段包括街道、城市、州、邮政编码和国家。如果你预计地址的大部分是在美国,你可以把这个值作为country字段的缺省值。 

    为了在创建一个表时指定缺省值,你可以使用表达式DEFAULT。请看下面这个在创建表时使用缺省值的例子: 

    CREATE TABLE addresses (street VARCHAR(60) NULL, 

    city VARCHAR(40) NULL, 

    state VARCHAR(20) NULL 

    zip VARCHAR(20) NULL, 

    country VARCHAR(30) DEFAULT ‘USA’) 

    在这个例子中,字段country的缺省值被指定为美国。注意单引号的使用,引号指明这是字符型数据。为了给非字符型的字段指定缺省值,不要把该值扩在引号中: 

    CREATE TABLE orders(price MONEY DEFAULT $38.00, 

    quantity INT DEFAULT 50, 

    entrydate DATETIME DEFAULT GETDATE()) 

    在这个CREATE TABLE语句中,每个字段都指定了一个缺省值。注意DATETIME型字段entrydate所指定的缺省值,该缺省值是函数Getdate()的返回值,该函数返回当前的日期和时间。 

     

    (3)标识字段 

    每个表可以有一个也只能有一个标识字段。一个标识字段是唯一标识表中每条记录的特殊字段。例如,数据库pubs中的表jobs包含了一个唯一标识每个工作标识字段: 

    job_id job_desc 

    ……………………………………………………………

    1 New Hire Job not specified 

    2 Chief Executive officer 

    3 Bushness Operations Manager 

    4 Chief Financial Officier 

    5 Publisher 

    字段job_id为每个工作提供了唯一的一个数字。如果你决定增加一个新工作,新增记录的job_id字段会被自动赋给一个新的唯一值。 

    为了建立一个标识字段,你只需在字段定义后面加上表达式IDENTITY即可。你只能把NUMERIC型或INT型字段设为标识字段,这里有一个例子: 

    CREATE TABLE visitorID (theID NUBERIC(18) IDENTITY,name VARCHAR(40)) 

    这个语句所创建的表包含一个名为theid的标识字段。每当一个新的访问者名字添加到这个表中时,这个字段就被自动赋给一个新值。你可以用这个表为你的站点的每一个用户提供唯一标识。 

    技巧: 

    建立一个标示字段时,注意使用足够大的数据类型。例如你使用TINYINT型数据,那么你只能向表中添加255个记录。如果你预计一个表可能会变得很大,你应该使用NUMERIC型数据。 

    标识字段的存在会使你想尝试许多不可能的事情。例如,你也许想利用标识字段来对记录进行基于它们在表中位置的运算。你应该抛弃这种意图。每个记录的标识字段的值是互不相同的,但是,这并不禁止一个标识字段的标识数字之间存在间隔。例如,你永远不要试图利用一个表的标识字段来取出表中的前十个记录。这种操作会导致失败,比如说6号记录和7号记录根本不存在。

    四、删除和修改表 

    要删除一个表,你可以使用SQL语句DROP TABLE。例如,又从数据库中彻底删除表mytable,你要使用如下的语句: 

    DROP TABLE mytable 

    警告: 

    使用DROP TABLE命令时一定要小心。一旦一个表被删除之后,你将无法恢复它。 

    当你建设一个站点时,你很可能需要向数据库中输入测试数据。而当你准备向世界提供你的网点时,你会想清空表中的这些测试信息。如果你想清除表中的所有数据但不删除这个表,你可以使用TRUNCATE TABLE语句。例如,下面的这个SQL语句从表mytable中删除所有数据: 

    TRUNCATE TABLE mytable 

    虽然你不能删除和修改已经存在的字段,但你可以增加新字段。最容易的实现方法是使用SQL事务管理器中的Manager Tables窗口。你也可以使用SQL语句ALTER TABLE。下面是一个如何使用这种语句的例子: 

    ALTER TABLE mytable ADD mynewcolumn INT NULL 

    这个语句向表mytable中增加了一个新字段mynewcolumn。当你增加新字段时,你必须允许它接受空值,因为表中原来可能已经有了许多记录。

     总结

    为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。

    1
    .在查询结果中显示列名:

    a.用as关键字:
    select name as '姓名' from students order by
     age

    b.直接表示:
    select name '姓名' from students order by
     age

    2
    .精确查找:

    a.用in限定范围:
    select * from students where native in ('湖南''四川'
    )

    b.
    betweenandselect * from students where age between 20 and 30


    c.“
    =”:select * from students where name = '李山'

    d.
    like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%''_李''_李_' 。)

    e.
    []匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in()"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%'
    )

    3
    .对于时间类型变量的处理

    a.
    smalldatetime
    :直接按照字符串处理的方式进行处理,例如:
    select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'


    4 .集函数

    a.
    count()求和,如:select count(*from
     students (求学生总人数)

    b.
    avg(列)求平均,如:select avg(mark) from grades where cno=
    ’B2’

    c.
    max
    (列)和min(列),求最大与最小

    5
    .分组group

    常用于统计时,如分组查总数:
    select gender,count
    (sno) 
    from
     students
    group by
     gender
    (查看男女学生各有多少)

    注意:从哪种角度分组就从哪列"
    group by
    "

    对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"
    group by
     grade, mno, gender"

    select grade, mno, gender, count(*
    )
    from
     students
    group by
     grade, mno, gender

    通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:

    select sno,count(*from
     grades 
    where mark<60

    group by  sno
    having count(*)>1


    6 .UNION联合

    合并查询结果,如:

    SELECT * FROM
     students
    WHERE name like ‘张%

    UNION [ALL]

    SELECT * FROM  students
    WHERE name like ‘李%


    7
    .多表查询

    a.内连接

    select
     g.sno,s.name,c.coursename 
    from grades g JOIN students s ON g.sno=
    s.sno
    JOIN courses c ON g.cno=
    c.cno
    (注意可以引用别名)
    b.外连接
    b1.左连接
    select courses.cno,max(coursename),count
    (sno) 
    from courses LEFT JOIN grades ON courses.cno=
    grades.cno 
    group by
     courses.cno

    左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。

    左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。

    b2.右连接

    与左连接类似

    b3.全连接

    select
     sno,name,major 
    from students FULL JOIN majors ON students.mno=
    majors.mno

    两边表中的内容全部显示

    c.自身连接

    select
     c1.cno,c1.coursename,c1.pno,c2.coursename 
    from courses c1,courses c2 where c1.pno=
    c2.cno

    采用别名解决问题。

    d.交叉连接

    select lastname+firstname from lastname CROSS JOIN
     firstanme

    相当于做笛卡儿积

    8
    .嵌套查询

    a.用关键字IN,如查询李山的同乡:

    select * from
     students
    where native in (select native from students where name=
    ’ 李山’)

    b.使用关键字EXIST,比如,下面两句是等价的:

    select * from
     students
    where sno in (select sno from grades where cno=
    ’B2’)

    select * from students where exists
     
    (
    select * from grades where
     
    grades.sno
    =students.sno AND cno=
    ’B2’)

    9
    .关于排序order

    a.对于排序order,有两种方法:asc升序和desc降序

    b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:

    select sno,count(*) ,avg(mark) from
     grades 
    group by
     sno
    having avg(mark)>85

    order by 3

    10 .其他

    a.对于有空格的识别名称,应该用"
    []
    "括住。

    b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno 
    from grades where mark IS NULL


    c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“
    ||”而all则相当于逻辑运算“&&

    d.注意在做否定意义的查询是小心进入陷阱:

    如,没有选修‘B2’课程的学生 :

    select students.*

    from  students, grades
    where students.sno=
    grades.sno
    AND grades.cno <>
     ’B2’

    上面的查询方式是错误的,正确方式见下方:

    select * from
     students
    where not exists (select * from
     grades 
    where grades.sno=students.sno AND cno='B2'
    )

    11
    .关于有难度多重嵌套查询的解决思想:

    如,选修了全部课程的学生:

    select *

    from  students
    where not exists ( select *

    from  courses
    where NOT EXISTS
     
    (
    select *

    from  grades
    where sno=
    students.sno
    AND cno=
    courses.cno))

    最外一重:从学生表中选,排除那些有课没选的。用not exist。由于讨论对象是课程,所以第二重查询从course表中找,排除那些选了课的即可。

     

    添加数据库

    use  master
    go

    if exists (select * from sysdatabases where name='test' )
    drop database
     mlnt
    go
     
    create database
     test  
    on

    (
    name
    ='test_data' ,  
    filename
    ='D:"SQLSERVER2000"MSSQL"Data"test_data.mdf'
    ,  
    size
    =
    10mb,
    filegrowth
    =10%


    )
    log on
    (
    name
    ='test_log' ,
    filename
    ='D:"SQLSERVER2000"MSSQL"Data"test_log.ldf'
    ,
    size
    =
    10mb,
    filegrowth
    =10%

    )
    展开全文
  • oracle学习笔记(二)--创建数据库

    千次阅读 2009-01-06 11:25:00
    Oracle创建数据库先用向导看看好使不,开始菜单中Oracle - OraDb10g_home1 | Configuration and Migration Tools | Database Configuration Assistant。1. 进入Database Configuration Assistant页面,入下图,点击...
  • CREATE TABLE 语句用于创建数据库中的表。 SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... ) 数据类型(data_type)规定了列可容纳何种数据类型。...
  • 知识点:使用SQL语句创建完整版数据库、使用SQL语句创建表、数据库表创建好以后新增加字段、修改字段、...SQL Server数据库第二课:创建数据库表、完善数据库表的设计、建立数据库表之间的关系 SQL Server数据库...
  • 第2章 创建数据库 数据库是用来存储数据的空间,它作为存储结构的最高层次是其他一切数据库操作的基础。用户可以通过创建数据库来存储不同类别或者形式的数据。 因此,在本章用户将详细地学习针对数据库的基本操作...
  • 数据库MySQL详解

    万次阅读 多人点赞 2018-07-24 20:03:47
    创建数据库、创建数据表、向数据表中添加一条条数据信息均需要使用SQL语句。 3.1 SQL语句 SQL分类: 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,...
  • 数据库创建索引是为了提升查询性能,但是建立索引也会降低修改性能。下面是几个面试中会问到的关于索引如何使用的经典面试问题。虽然是面向SQL Server,但对于其他任何关系型数据基本都适用。 为什么不对表中的每...
  • 1.1.导包(注意:以下两个包是 c3p0包,还有jdbc驱动包没加上去。。) 1.2.添加idea类识别路径 1.3.加载配置文件 c3p0-config.xml ,并放到src文件夹下 (注意:文件名字是固定的,无需修改) 文件内容:...
  • 几种常见数据库连接池的使用比较

    万次阅读 多人点赞 2016-11-23 20:35:32
    最原始的数据库使用就是打开一个连接并进行使用使用过后一定要关闭连接释放资源。由于频繁的打开和关闭连接对jvm包括数据库 都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题。由此使用...
  • 数据库

    千次阅读 2010-04-20 13:30:00
    数据库编程总结 收藏 此文于2010-04-12被推荐到CSDN首页此文于2010-04-16被推荐到CSDN首页如何被推荐?数据库编程总结当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, ...
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...
  • Django连接数据库创建表字段的解释

    千次阅读 2019-05-23 08:49:52
    每个字段有一些特有的参数,例如,CharField需要max_length参数来指定VARCHAR数据库字段的大小。还有一些适用于所有字段的通用参数。这些参数在文档中有详细定义,这里我们只简单介绍一些最常用的:更多字段: <1...
  • 由于所要发布的数据随业务流程的进行和相关要求的变化而不断地发生变化,因此创建可读数据(主题数据库)的服务器必须提供高性能。在这种情况下,可以将多个 CPU 与 SQL Server 2000 一起使用。 ·   高...
  • DBMS提供相应数据语言来定义(DDL)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。 (2)数据存取功能。DBMS提供数据操纵语言(DML),实现对数据库数据的基本存取操作:检索,插入,修改和删除。 (3)...
  • 在Visual Basic中使用数据库

    千次阅读 2012-03-04 20:42:22
    你可以使用许多数据库产品建立强大的数据库,这些产品包括Microsoft Access、Microsoft FoxPro、Btrieve、Paradox和dBASE等。你还可以使用Open Database Connectivity(ODBC)型客户机/服务器数据库,比如Microsoft...
  • 数据库系统

    千次阅读 2021-02-21 21:13:25
    数据定义语句(Data Definition Language ,DDL)是SQL语言中用于创建、修改和删除数据库对象的语句。 • Create database 创建数据库 • Drop database 删除数据库 • Alter database 修改数据库属性 • Create ...
  • SQLite是一个数据库引擎,可以简化... 在如何使用Python和Pandas处理SQLite数据库中,我们将逐步介绍如何使用它sqlite3来创建,查询和更新数据库。我们还将介绍如何使用pandas包简化使用SQLite数据库的工作。我们将
  • 第三章 创建多层应用程序 一个多层的Client/Server应用程序在逻辑上划分为几个部分,分别在不同的机器上运行,这些机器既可以在一个局域网内,也可以在Internet上。多层体系结构最大的优势可以概括为两点,一是集中...
  • 数据库编程

    千次阅读 2014-04-27 22:32:08
    当前各种主流数据库有很多,包括Oracle,MS SQL Server, Sybase, Informix, MySQL, ...数据库编程是对数据库创建、读写等一列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使用O
  • 5在JSP中使用数据库

    千次阅读 2016-07-15 10:42:55
    1JDBC JDBC(Java DataBase Connection)是Java运行平台的核心类库中的一...使用JDBC的应用程序一旦和数据库建立连接,就可以使用JDBC提供的API操作数据库。 经常使用JDBC进行如下操作: 与一个数据库建立连接。
  • 数据库

    万次阅读 2018-05-20 15:29:14
    数据库概述 云计算是云数据库兴起的基础: 云计算的概念:通过整合、管理、调配分布在网络各处的计算资源,通过互联网以统一界面,同时向大量的用户提供服务。 云计算特点:按需服务,随时服务,通用型,高...
  • Oracle 数据库实例介绍

    万次阅读 多人点赞 2018-11-23 15:44:13
    本章介绍 Oracle 数据库实例的原理,实例的参数文件和诊断文件,以及实例创建数据库的打开与关闭的过程。
  • 使用JDBC操作MySQL数据库5.7

    千次阅读 2018-07-05 17:38:14
    前言: 这篇笔记的内容为使用JDBC操作MySQL数据库,主要内容为概念介绍和编写Demo来使用JDBCAPI,而关于API的具体内容就没有详细说明了,代码中用到的API可以在https://docs.oracle.com/javase/8/docs/api/中找到。...
  • 数据库原理习题

    万次阅读 2020-09-07 18:39:47
    数据库是存放数据的仓库。数据库原理是每个计算机专业的学生必须掌握的课程之一,所以学好数据库原理对日后实际工作和项目十分重要。这篇博客通过总结广州大学数据库原理课程和教材中的例题,希望能够对数据库原理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,136
精华内容 29,654
关键字:

创建数据库使用以下哪项