首页 > 数据库 >数据库之二、表的创建、数据类型、表的约束

数据库之二、表的创建、数据类型、表的约束

时间:2023-02-28 16:56:43浏览次数:38  
标签:10 varchar name 数据库 数据类型 约束 table 之二

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

 

标签:10,varchar,name,数据库,数据类型,约束,table,之二
From: https://www.cnblogs.com/chenbao1012/p/17165049.html

相关文章

  • C#文件转Byte存储到SQLServer数据库
    场景:临时不同的系统,相同的数据库,通用文件读取1.数据库字段采用:varbinary(max)类型2.代码注:这里获取文件是通过先将byte[]数据先存到当前服务器对应项目的文件夹中(加了......
  • 【MyBatis】测试链接数据库查询用户
    配置文件访问:【MyBatis】配置Mybatis项目-小鼻涕孩-博客园(cnblogs.com)数据表数据:Test.java:1importorg.apache.ibatis.io.Resources;2importorg.apache.......
  • 记一次druid 数据库连接池遇到 union或者union all语句时报错以及处理
    报错日志大概如下:##Errorupdatingdatabase.Cause:java.sql.SQLException:sqlinjectionviolation,syntaxerror:syntaxerror,errorin:'UNIONALL......
  • beeline连接远程hive数据库
    被要求用hive-e连接远程hive数据库,因为之前很少用hive这个命令,转而用beeline,可以用下列命令成功连接远程数据库。/opt/hive/bin/beeline-ujdbc:hive2://host:port/dat......
  • python对mysql数据库进行读写的操作
    python对mysql数据库进行读写的操作importpymysql#使用python连接mysql数据库,并对数据库进行添加数据的方法#创建连接,数据库主机地址数据库用户名称密码数据库......
  • 《数据库系统概论》读后感
    作为一本经典的数据库入门教材,《数据库系统概论》给我留下了深刻的印象。在读完这本书之后,我深刻认识到了数据库系统在当今信息时代的重要性,并且对于数据管理和应用开发方......
  • 1.3 抽象数据类型的表示与实现
    1.3抽象数据类型的表示与实现概念小结抽象数据类型的实现C语言实现抽象数据类型抽象数据类型可以通过固有的数据类型(如整形、实型、字符型等)来表示和实现即利用......
  • Java连接数据库
    对于Java数据库操作,需要先导入JDBC相关的包,然后连接数据库。连接数据库有以下几个步骤:1.加载JDBC驱动类Class.forName("com.mysql.jdbc.Driver");2.创......
  • 数据库死锁
    Mysql异常:Lockwaittimeoutexceeded;tryrestartingtransaction的解决办法#当前运行的所有事务SELECT*FROMinformation_schema.INNODB_TRX;#当前出现的锁SELEC......
  • 导出/打印Access数据库的结构
    因为工作需要,现想将ACCESS数据库的所有表的结构及相关说明生成WORD文档并打印出来。比如下图:图一数据表及其说明性文字(留意深橙色矩形部分)图二Access表的结构及其字段说明......