mysql数据表交叉引用_MySQL之表的创建与使用篇

1.创建和操纵表

1.1.创建表使用SQL的CREATE TABLE语句来创建表

1.1.1、表创建基础为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出。

表列的名字和定义,用逗号分隔。CREATE TABLE语句也可能会包括其他关键字或选项,但至少要包括表的名字和列的细节。

MariaDB [test]> CREATE TABLE new (

cust_id int NOT NULL AUTO_INCREMENT,

cust_name char(50) NOT NULL,

cust_address char(50) NULL,

cust_city char(50) NULL,

cust_state char(5) NULL,

cust_zip char(10) NULL,

cust_country char(50) NULL,

cust_contact char(50) NULL,

cust_email char(255) NULL,

PRIMARY KEY(cust_id)

) ENGINE=InnoDB;

Query OK, 0 rows affected (0.04 sec)实际的表定义(所有列)括在圆括号之中。各列之间用逗号分隔。每列的定义以列名(它在表中必须是唯一的)开始,之后跟列的数据类型。表的主键可以在创建表时用PRIMARY KEY关键字指定。整条语句由右圆括号后的分号结束。在创建新表时,指定的表名必须不存在,否则将出错。为防止意外覆盖已有的表,SQL要求首先手工删除该表,再重建,而不是通过创建表来覆盖。如果仅需在一个表不存在时创建,应在表名后给出IF NOT EXISTS。

1.1.2、使用NULL值NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL。MariaDB [test]> CREATE TABLE test1

(

num int NOT NULL AUTO_INCREMENT,

date datetime NOT NULL,

id int NOT NULL,

PRIMARY KEY(num)

) ENGINE=InnoDB;

Query OK, 0 rows affected (0.04 sec)该表定义的3个列都包含关键字NOT NULL,即插入相关列时都需要输入相应值。不要把NULL值与空串相混淆。NULL值是没有值,它不是空串。如果指定''(两个单引号,其间没有字符),这在NOT NULL列中是允许的。空串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空串指定。

1.1.3、主键主键值必须唯一。即,表中的每个行必须具有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。创建由多个列组成的主键,应该以逗号分隔的列表给出各列名。

MariaDB [test]> CREATE TABLE test2

(

name int NOT NULL,

email int NOT NULL,

id int NOT NULL,

address char(50) NOT NULL,

city char(50) NOT NULL,

PRIMARY KEY(name,email)

) ENGINE=InnoDB;

Query OK, 0 rows affected (0.06 sec)主键为其值唯一标识表中每个行的列。主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。

1.1.4、使用AUTO_INCREMENTAUTO_INCREMENT,每当增加一行时自动增量。每次执行一个INSERT操作时,自动对该列增量,给该列赋予下一个可用的值。每个表只允许一个AUTO_INCREMENT列,而且它必须被索引。SELECT last_insert_id()返回最后一个AUTO_INCREMENT值。

1.1.5、指定默认值如果在插入行时没有给出值,SQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。不允许使用函数,只支持常量作为默认值。MariaDB [test]> CREATE TABLE test3

(

name char(50) NOT NULL,

email char(255) NOT NULL,

city char(50) NOT NULL,

country char(50) NOT NULL DEFAULT 'CN',

PRIMARY KEY(name,email)

) ENGINE=InnoDB;

Query OK, 0 rows affected (0.05 sec)这里给country列添加文本DEFAULT 'CN'来指示MySQL在未给出country列值的情况下指定值为CN。

MariaDB [test]> INSERT INTO test3(

nam

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值