1.创建表
创建表的作用在于指定表字段的类型+属性(约束)
创建表使用CREATE TABLE关键字进行操作
语法结构
CREATE TABLE 表名(
字段名 数据类型 属性/约束,
...
字段名 数据类型 属性/约束,
[PRIMARY KEY(字段名)]
注意
1.表名和字段名需唯一
2.属性/约束中,默认允许设置NULL
理解NULL
NULL不等于空串,空串是有效值
不要把NULL值与空串相混淆。NULL值是没有值,它不是空串。如果指定''(两个单引号,其间没有字符),这在NOT NULL列中是允许的。空串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空串指定
3.属性/约束中,默认值DEFAULT设置必须是常数,不允许使用函数作为默认值
4.属性/约束AUTO_INCREMENT
每个表只允许一个AUTO_INCREMENT列
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL,
cust_address char(50) NULL,
cust_city char(50) NULL,
.....
PRIMARY KEY(cust_id)
);
AUTO_INCREMENT告诉Mysql,本列每当增加一行记录时进行自动增量。每次执行一个INSERT操作,Mysql自动对该列增量,给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值
例:在test数据库中创建pet表
CREATE TABLE pet
(
id int NOT NULL AUTO_INCREMENT,
name VARCHAR(225) NOT NULL,
owner VARCHAR(225) DEFAULT 'Odin',
species VARCHAR(225),
sex CHAR(1),
birth DATE,
death DATE,
PRIMARY KEY(id)
);
在创建新表时,指定的表名必须不存在,否则将出错。如果要防止意外覆盖已有的表,SQL要求首先手动删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。如果仅想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS,它不检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,并且仅在表名不存在时创建它