• 创建数据库和表


    一、创建数据库

      我们知道表是属于架构的,而架构又是属于数据库的。要在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这种情况。

  • 相关阅读:
    统计学_筛选试验
    ROC、PR 曲线/准确率、覆盖率(召回)、命中率、Specificity(负例的覆盖率)、F1 score
    阳/阴性预测值Positive/negative Predictive Value(推荐AA)
    统计学_样本量估计_python代码实现
    统计学_效应量Effect Size
    统计学_二型错误和功效(Type II Errors and Test Power)
    统计学的P值解释和误区
    【线性代数的几何意义】向量的基本几何意义
    【线性代数的几何意义】什么是线性代数
    【Eclipse】如何在Eclipse中使用命令行?
  • 原文地址:https://www.cnblogs.com/ShaYeBlog/p/2695499.html
Copyright © 2020-2023  润新知