1. 查看表
SHOW TABLES
SHOW CREATE TABLE students
2. 创建表
- 如果你仅想在一个表不存在时创建它,应该在表名后给出IFNOT EXISTS。这样做不检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,并且仅在表名不存在时创建它
- 使用CREATE TABLE 语句
- 新表的的名字,在关键字CREATE TABLE 之后
- 表列的名字和定义,用逗号分隔
CREATE TABLE students (
id int NOT NULL AUTO_INCREMENT,
name char(50) NOT NULL,
address char(200) NOT NULL,
email char(50) NOT NULL,
PRIMARY KEY(id))
查看表结构
DESC students
3. NULL值
- NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值
例:
CREATE TABLE orders(
order_num int NOT NULL AUTO_INCREMENT,
order_date datetime NOT NULL,
cust_id int NOT NULL,
PRIMARY_KEY(order_num));
这条语句创建本书中所用的orders表。orders包含3个列,分别是订单号、订单日期和客户ID。所有3个列都需要,因此每个列的定义都含有关键字NOT NULL。这将会阻止插入没有值的列。如果试图插入没有值的列,将返回错误,且插入失败
CREATE TABLE vendors(
vend_id int NOT NULL AUTO_INCREMENT, vend_name char(50) NOT NULL ,
vend_address char(50) NULL , vend_city char(50) NULL ,
vend_state char(5) NULL , vend_zip char(10) NULL ,
vend_country char(50) NULL , PRIMARY KEY (vend_id));
这条语句创建本书中使用的vendors表。供应商ID和供应字列是必需的,因此指定为NOT NULL。其余5个列全都允许NULL值,所以不指定NOT NULL。NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL
不要把NULL值与空串相混淆。NULL值是没有值,它不是空串。如果指定''(两个单引号,其间没有字符),这在NOT NULL列中是允许的??沾且桓鲇行У闹?,它不是无值。NULL值用关键字NULL而不是空串指定
4. 主键
- 表中的任何列都可以作为主键,只要它满足以下条件:
任意两行都不具有相同的主键值
每个行都必须具有一个主键值(主键列不允许NULL值)
5. 自增
使用AUTO_INCREMENT
customers表中的顾客由列cust_id唯一标识,每个顾客有一个唯一编号。类似,orders表中的每个订单有一个唯一的订单号,这个订单号存储在列order_num中。
这些编号除它们是唯一的以外没有别的特殊意义。在增加一个新顾客或新订单时,需要一个新的顾客ID或订单号。这些编号可以任意,只要它们是唯一的即可。显然,使用的最简单的编号是下一个编号,所谓下一个编号是大于当前最大编号的编号。例如,如果cust_id的最大编号为10005,则插入表中的下一个顾客可以具有等于10006的cust_id
6. 默认值
指定默认值
如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。
默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。
CREATE TABLE students(
stu_id int NOT NULL AUTO_INCREMENT,
birthday date NOT NULL,
navtive_plac varchar(50) NOT NULL DEFAULT “山西长治”,
PRIMARY_KEY(order_num));
7. 更新表
- 为更新表定义,可使用ALTER TABLE语句。但是,理想状态下,当表中存储数据以后,该表就不应该再被更新。在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。
- 为了使用ALTER TABLE更改表结构,必须给出下面的信息:
在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)
添加一列:
ALTER TABLE orders ADD phone int(11);
删除一列:
ALTER TABLE orders DROP COLUMN phone;
小心使用ALTER TABLE 使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据
8. 删除表
- 删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE语句即可:
- DROP TABLE orders;
9. 重命名表
- 使用RENAME TABLE语句可以重命名一个表:
- RENAME TABLE orders to orders1;
CREATE TABLE用来创建新表
ALTERTABLE用来更改表列
DROP TABLE用来完整地删除一个表