zoukankan      html  css  js  c++  java
  • 创建数据库和表

    一、创建数据库

      我们知道表是属于架构的,而架构又是属于数据库的。要在SQL Server环境中创建一个名为TestDB的数据库,可以运行以下代码:

     IF DB_ID('TestDB') IS NULL
     CREATE DATABASE TestDB;
    

      如果不存在名为TestDB的数据库,这段代码就会创建一个新的。DB_ID函数接受一个数据库名称作为输入,返回它的内部数据库ID。如果输入名称指定的数据库不存在,这个函数将返回NULL。这是一种检查数据库是否存在的简单方法。注意:在这个简单的CREATE DATABASE语句中,采用了默认的文件设置(例如,区域和初始大小)。在产品环境中,通常应该显示指定所需要的数据库和文件的设置。

      在例子中使用的架构是dbo,在每个数据库中都会自动创建这个架构。当用户没有默认架构显示关联到其他架构时,就会将这个dbo作为默认架构。

    二、创建表

      以下代码在TestDB数据库中创建一个名为Employees的表:

    USE TestDB
     IF OBJECT_ID('dbo.Employees','U') IS NOT NULL
         DROP TABLE dbo.Employees;
     CREATE TABLE dbo.Employees
     (
         empid INT NOT NULL,
         firstname VARCHAR(30) NOT NULL,
         lastname VARCHAR(30) NOT NULL,
         hiredate DATETIME NOT NULL,
         mgrid INT NULL,
         ssn VARCHAR(20) NOT NULL,
         salary MONEY NOT NULL
     );
    

      USE语句将当前的数据库上下文切换为TestDB。在创建对象的脚本中加入USE语句,它的重要作用是确保要在正确的数据库中创建对象。

      IF语句调用调用OBJECT_ID函数来检查当前数据库中是否已经存在Employees表。OBJECT_ID函数接受一个对象名称和类型作为它的输入。这里,类型'U'代表用户表。如果匹配给定输入名称和类型的对象存在,这个函数就会返回内部的对象ID,否则返回NULL。如果该函数返回NULL,就可以知道检查的数据库对象是不存在的。在这个例子中,如果Employees表已经存在,代码就先删除(DROP)这个表,接着再创建一个新的。当然,也能够选择不同的处理办法,例如,当Employees表已经存在时,可以简单地不创建这个对象。

      CREATE TABLE语句负责定义前面提到的关系的主题。在这个语句中先指定表的名称,接着在圆括号中定义它的各个属性(列)。注意表名使用了两部分组成的名称dbo.Employees。如果省略了架构名称,SQL Server将使用与运行这段代码的数据库用户相关联的默认架构。

      对于表的每个属性,需要指定它的属性名称、数据类型和是否允许NULL数据值。在Employees表中,empid(雇员ID)和mgrid(经理ID)定义为INT(4字节的整数类型);firstname、lastname和ssn(社会保险号,social security number)定义为VARCHAR(可变长长度的字符串类型,指定最多支持的字符个数);hiredate定义为DATETIME,在SQL Server 2008中可以定义为DATE,DATE数据类型是SQL Server 2008新增的,salary定义为MONEY。

      如果不显示指定一个列是否允许NULL值,SQL Server则采用默认值。ANSI规定:如果不指定一个列是否允许NULL值,则假设应该是NULL(允许NULL值)。但SQL Server提供了一些设置可以改变这一默认行为。我们强烈推荐在这种情况下要显示指定设置,不要依赖其默认值。而且,也强烈推荐将列定义为NOT NULL,除非有明显的原因而需要支持NULL。即使认为一个列不允许NULL值,但没有用NOT NULL约束加以限制时,NULL值仍然可以插入这个列中。在Employees表中,除了mgrid列,其他所有列都定义为NOT NULL。mgrid属性为NULL值表示雇员没有经理,例如企业的CEO这种情况。

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/2695499.html
Copyright © 2011-2022 走看看