zoukankan      html  css  js  c++  java
  • 数据库之二、表的创建、数据类型、表的约束

    1、表的创建

     


    创建表之前一般需要在特定的库中创建表,先创建一个库,之后的表都在该库中创建。创建数据库的语法:

                                              CREATE DATABASE <数据库的名字>

    这里创建名字为Tem_base的库:

                                              CREATE DATABASE Tem_Base

    这是比较简单的写法,其它暂不讨论,然后便可以在该库下创建表
    创建表的语法格式: 

                                              CREATE TABLE Table_Name(
                                                  列名1 数据类型 该列的约束,
                                                  列名2 数据类型 该列的约束,
                                                        ...
                                                  列名n 数据类型 该列的约束,
                                                  该表的约束1,
                                                       ...
                                                  该表的约束n
                                               )


    列名:就是每列的名字,如这里的SID、SNAME、SAGE、SSEX;数据类型:数据类型有很多比如int、char,date等,暂且不谈;该列的约束:对该列的数据的要求,暂且不谈;表约束:对表的数据的要求,暂且不谈
    下面便可以创建表:

    CREATE TABLE Student(
    SID varchar(10) not null,
    Sname varchar(10),
    Sage datetime,
    Ssex varchar(10));
    CREATE TABLE Course(
    CID varchar(10) not null,
    Cname varchar(10),
    TID varchar(10));
    CREATE TABLE Teacher(
    TID varchar(10)  not null,
    Tname nvarchar(10));
    CREATE TABLE SC(
    SID varchar(10) not null,
    CID varchar(10),
    score decimal(18,1));

    分别创建了Student、Course、Teacher、SC四个表
    2.1、命名规则:我们只能使用半角英文字母、数字、下划线(_)作为数据库、表和

    2.2、列的名称,且名称必须以半角英文字母开头,同一个数据库中不能创建两个相同名称的表,同一个表中也不可能有同名的列,但列名可以与表名相同

     

    2、数据类型:


      用来声明该列的数据类型的,所有的列都必须指定数据类型,包括数字型、字符型和日期型等,下面一一介绍比较常用的:


    2.1、Int(Integer(整数)):INT (或INTEGER)数据类型存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的所有正负整数。每个INT 类型的数据按4 个字节存储,其中1 位表示整数值的正负号,其它31 位表示整数值的长度和大小;如1,2,100,50等;

    2.2、SMALLINT SMALLINT 数据类型存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的所有正负整数。每个SMALLINT 类型的数据占用2 个字节的存储空间,其中1 位表示整数值的正负号,其它15 位表示整数值的长度和大小。

    2.3、FLOAT:FLOAT数据类型可精确到第15 位小数,其范围为从-1.79E -308 到1.79E +308。 每个FLOAT 类型的数据占用8 个字节的存储空间。 FLOAT数据类型可写为FLOAT[ n ]的形式。n 指定FLOAT 数据的精度。n 为1到15 之间的整数值。

    2.4、char(定长字符串):如char(10),表示该列的字符串的长度不能大于10,超出的部分会舍弃,不足的部分会用空格补充;

    2.5、varchar(可变长字符串):varchar(20),超出最大长度会舍弃,不足的部分不会用空格补充

    2.6、Date(日期):存储日期

     

    3、约束的类型:


    3.1、主键约束(primary key): 唯一性,非空性:

      创建学生编号为主键:
            SID varchar(10) primary key

      创建学生编号为主键,并命名为pk_id:
            constraint pk_id primary key (SID ) 创建学生编号为主键,并命名为pk_id
      为已存在的列创建主键:
            alter table table_name add primary key(column_name)
      删除主键约束:
            alter table table_name drop primary key
      删除主键约束:
            alter table table_name drop constraint 主键约束名


    3.2、唯一约束(unique):唯一性,可以空,每个约束下每个值只能有一个,但可以有多个列为唯一约束:

      列级:

            SID varchar(10) unique 

      表级:
            CONSTRAINT un_id unique (sid) 

      增加表中的约束
            alter table table_name add unique(column_name) 

      删除约束         alter table able_name drop constaint 主键名 删除约束 

     

    3.3、检查约束(check):对该列数据的范围、格式的限制(如:年龄、性别等)

      创建Ssex列约束,只能为'男'或者'女'

            Ssex varchar(10)) check(Ssex='男' or Ssex='女')

      向已有的列加入check约束
            alter table table_name add check(列名>0) 

      删除约束 
            alter table table_name drop constraint check约束名


    3.4、默认约束(default):该数据的默认值
            Ssex varchar(10)) default ‘男’

      向已有列名中插入默认值
            alter table table_name add 列名 set default '数值' 

      删除默认约束
            alter table table_name drop constraint 约束名 


    3.5、非空约束(not null):确定该列数据是否为空
            Sname varchar(10) not null


    3.6、外键约束(foreign key):需要建立两表间的关系并引用主表的列
      a、一个表中的foreign key 指向另一个表的primary key
      b、foreign key约束用于预防破坏表之间连接的动作
      c、foreign key约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一

      创建column_name为主表名的外键
            foreign key (column_name) references 主表名(主键列名)

      创建column_name为主表名的外键
            column_name int foreign key references 主表名(主键列名) 
      为已存在的列创建外键
            add foreign key (列名) references 主表名(主键列名) 

      删除外键约束
            alter table table_name drop constraint 外键约束名 


    3.7、自增列(auto_increment):该列每次添加数据都会自增,(不做讨论)

     

    尽管很渺小,但终究会变得伟大
  • 相关阅读:
    送给有缘的人,2007年9月20日可买入股票
    上次9.19推荐的兰太实业停牌的公告,有持有的朋友可查看
    送给有缘的人,2007年9月24日可买入股票
    对古越龙山的惆怅
    将PDA矢量图控件开源
    读取PE文件的导入表
    [非原创] 用于将真彩色图像降级为索引图像的八叉树算法
    读取PE文件的资源表
    [VC6] 图像文件格式数据查看器
    关于 AlphaBlend 和 32bpp 的反锯齿图标
  • 原文地址:https://www.cnblogs.com/chenbao1012/p/11811157.html
Copyright © 2011-2022 走看看