表的创建、数据类型、表的约束

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):该列每次添加数据都会自增,(不做讨论)

 

posted @ 2023-02-28 16:49  Carllll  阅读(122)  评论(0编辑  收藏  举报