创建表

表是数据库储存数据的基本单位。一个表包含若干个字段或记录。表的操作包括创建新表、修改表、删除表。

1、创建表

1.1 创建表的语法形式:

CREATE  TABLE  表名  (属性名 数据类型  [完整性约束条件],

     属性名 数据类型  [完整性约束条件],

     ....

     属性名 数据类型

   ;

其中,表名 参数表示所要创建的表的名称;属性名 参数表示表中字段的名称;数据类型 参数指定字段的数据类型;完整性约束条件 参数指定字段的某些特殊约束条件。

在创建表时,首先要使用USE语句选择数据库,如: mysql> USE test1; 选择数据库test1

表名不能为SQL语句的关键字,如createupdataorder等都不能做表名,一个表中可以有一个或多个属性,定义时,字母大小写均可,各属性之间用逗号隔开,最后一个属性不需要加逗号。

mysql> CREATE TABLE example0(id INT,name VARCHAR(20),sex BOOLEAN);

example0 表包含3个字段。其中,id 字段是整型;name 字段是字符串型;sex 字段是布尔型。

mysql> SHOW TABLES; 查询表

完整性约束条件是对字段进行限制。要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不执行用户的操作。其目的是为了保证数据库中数据的完整性。MySQL中基本的完整性约束条件如表1.1

1.1 完整性约束条件表

约束条件

说明

PRIMARY  KEY

标识该属性为该表的主键,可以唯一的标识对应的元组

FOREIGN KEY

标识该属性为该表的外键,是与之联系的某表的主键

NOT NULL

标识该属性不能为空

UNIQUE

标识该属性的值是唯一的

AUTO_INCREMENT

标识该属性的值自动增加,这 是MySQLSQL语句的特色

DEFAULT

为该属性设置默认值

1.2 设置表的主键

主键是表的一个特殊字段。该字段能唯一地标识该表中的每条信息。设置表的主键指在创建表时设置表的某个字段为该表的主键。帮助MySQL快速查找到表中的某条信息,主键必须是唯一的,任意两条记录的主键字段的值不能相同;主键的值是非空值,可以是单一的字段,也可以是多个字段的组合。

1.2.1 单字段主键

主键由一个字段构成时,可以直接在该字段的后面加上PRIMARY KEY来设置主键。

语法规则: 属性名  数据类型  PRIMARY KEY  其中, 属性名 参数表示表中字段的名称;数据类型 参数指定字段的数据类型。

mysql> CREATE TABLE example1(stu_id INT PRIMARY KEY,

    -> stu_name VARCHAR(20),

    -> stu_sex BOOLEAN

    -> );

example1 表中包含了3个字段。stu_id 字段是整形;stu_name 字段是字符串型;stu_sex 字段是布尔型。其中stu_id 字段是主键。

1.2.2 多字段主键

主键是由多个属性组合而成时,在属性定义完之后统一设置主键。

语法规则: PRIMARY KEY(属性名1,属性名2......,属性名n)

mysql> CREATE TABLE example2(stu_id INT,

    -> course_id INT,

    -> grade FLOAT,

    -> PRIMARY KEY(stu_id,course_id)                                                            

    -> );

example2 表中包含3个字段。其中stu_idcourse_id两个字段为主键。stu_idcourse_id两者的组合可以确定唯一的一条记录。

1.3 设置表的外键

外键是表的一个特殊字段。如果字段sno是一个表A的属性,且依赖于表B的主键,数据类型必须一致。那么,称表B为父表,表A为子表,sno为表A的外键。通过sno字段将父表B和子表A建立关联关系。设置表的外键指在创建表设置某个字段为外键。

设置外键的原则就是必须依赖于数据库已存在的父表的主键;外键可以为空值。外键的作用是建立该表与父表的关联关系,父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。 语法规则:

 CONSTRAINT 外键别名 FOREIGN KEY(属性1.1,属性1.2,......属性1.n)

REFERENCES  表名(属性2.1,属性2.2,......属性2.n)

其中,"外键别名"参数是为外键的代号;"属性1"参数列表是子表中设置的外键;"表名"参数是指父表的名称;"属性2"参数列表是父表的主键。

mysql> CREATE TABLE example3(id INT PRIMARY KEY,

    -> stu_id INT,

    -> course_id INT,

    -> CONSTRAINT c_fk FOREIGN KEY(stu_id,course_id)

    -> REFERENCES example2(stu_id,course_id)

    -> );

example3表中包含3个字段。其中,id字段是主键;stu_idcourse_id字段为外键;c_fk是外键的别名;example2表称为example3表的父表;example3表的外键依赖于父表example2的主键stu_idcourse_id

1.4 设置表的非空约束

非空性是指字段的值不能为空值(NULL)。非空约束保证所有记录中该字段都有值,如插入记录的id字段的值为空,将不能插入并报错。

基本语法: 属性名  数据类型  NOT NULL

mysql> CREATE TABLE example4(id INT  NOT NULL  PRIMARY KEY,

    -> name VARCHAR(20)  NOT NULL,

    -> stu_id INT,

    -> CONSTRAINT d_fk FOREIGN KEY(stu_id)

    -> REFERENCES example1(stu_id)

    -> );

example4表中包含3个字段。其中,id 字段为主键;idname字段为非空字段;stu_id字段为外键;d_fk为外键别名;example1表为example4表的父表;example4的外键依赖于父表的主键stu_id

1.5 设置表的唯一性约束

唯一性是指所有记录中该字段的值不能重复出现,设置表的唯一性约束是指在创建表时,为表的某些特殊字段加上UNIQUE约束条件。

基本语法: 属性名  数据类型  UNIQUE

mysql> CREATE TABLE example5(id INT PRIMARY KEY,

    -> stu_id INT UNIQUE,

    -> name VARCHAR(20) NOT NULL

    -> );

example5表中包含3个字段。其中,id字段为主键;stu_id字段为唯一值;name字段为非空字段。

1.6 设置表的属性值自动增加

AUTO_INCREMENT MySQL数据库中一个特殊的约束条件。其主要用于为表中插入的新记录自动生成唯一的ID。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT 约束的字段可以是任何整数类型(TINYINTSMALLINTINT BIGINT)。默认情况下,该字段的值是从 1 开始自增。如果第一记录设置了该字段的初值,那么从初值开始自增。

基本语法: 属性名  数据类型  AUTO_INCREMENT

mysql> CREATE TABLE example6(id INT   PRIMARY KEY  AUTO_INCREMENT,

    -> stu_id  INT  UNIQUE,

    -> name VARCHAR(20)  NOT NULL

    -> );

example6表中包含3个字段。其中,id字段为主键,且每插入一条新纪录id的值会自动增加1stu_id字段为唯一值,该字段值不能重复;name字段为非空字段,该字段的值不能为空值(NULL)

1.7 设置表的属性默认值

在创建表时可以指定表中字段的默认值。如果插入一条新的记录时没有为这个字段赋值,那么数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字来设置的。

基本语法: 属性名  数据类型  DEFAULT 默认值

mysql> CREATE TABLE example7(id INT PRIMARY KEY  AUTO_INCREMENT,

    -> stu_id  INT UNIQUE,

    -> name VARCHAR(20) NOT NULL,

    -> English VARCHAR(20) DEFAULT 'zero',

    -> Math FLOAT DEFAULT 0,

    -> Computer FLOAT DEFAULT 0

    -> );

 example7表中包含6个字段。其中,id字段为主键,且每插入一条新纪录 id 的值就会自动增加;stu_id 字段为唯一值,该字段的值不能重复;name 字段为非空字段,该字段的值不能为空值(NULL)English 字段的默认值为zeroMath 字段和Computer 字段默认值为 0。如果没有使用DEFAULT 关键字指定字段的默认值,也没有指定字段为非空,那么字段的默认值为空(NULL)

 

 

 

 

 

posted on 2019-07-21 15:00  凌乱的运维  阅读(468)  评论(0编辑  收藏  举报

导航