MySQL不仅用于表数据 *** 纵,而且还可以用来执行数据库和表的所有 *** 作,包括表本身的创建和处理。
一般有两种创建表的方法:
使用具有交互式创建和管理表的工具(如Navicat for MySql)表也可以直接用MySQL语句 *** 纵
为了用程序创建表,可使用SQL的CREATE TABLE语句。为利用CREATE TABLE创建表,必须给出下列信息:
新表的名字,在关键字CREATE TABLE之后给出表列的名字和定义,用逗号分隔。
CREATE TABLE customers1( 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;
从上面的例子中可以看到,表名紧跟在CREATE TABLE关键字后面。实际的表定义(所有列)括在圆括号之中。各列之间用逗号分隔。这个表由9列组成。每列的定义以列名(它在表中必须是唯一的)开始,后跟列的数据类型。表的主键可以在创建表时用PRIMARY KEY关键字指定。这里,列cust_id指定作为主键列。
1. 使用NULL值NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须有值。
每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。如上例中创建customers1表所示。
2. 使用AUTO_INCREMENTAUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT *** 作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值。
每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。
3. 指定默认值如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。
CREATE TABLE orderitems1( order_num INT NOT NULL, order_item INT NOT NULL, prod_id CHAr(10) NOT NULL, quantity int NOT NULL DEFAULT 1, item_price DECIMAL(8,2) NOT NULL, PRIMARY KEY(order_num,order_item) ) ENGINE = INNODB;
这条语句创建包含组成订单的各物品的orderitems表(订单本身存储在orders表中)。quantity列包含订单中每项物品的数量。在此例子中,给该列的描述添加文本DEFAULT 1指示MySQL,在未给出数量的情况下使用数量1。
二、更新表为更新表定义,可使用ALTER TABLE语句。但是,理想状态下,当表中存储数据以后,该表就不应该再被更新。为了使用ALTER TABLE更改表结构,必须给出下面的信息:
在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错); 所做更改的列表。
示例:
ALTER TABLE vendors ADD vend_phron CHAr(20)
以上语句给vendors表增加一个名为vend_phone的列,必须明确其数据类型。
ALTER TABLE vendors DROP COLUMN vend_phron;
以上语句删除vendors表中名为vend_phone的列。
ALTER TABLE的一种常见用途是定义外键,如下是其具体 *** 作代码:
ALTER TABLE orderitems ADD ConSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders(order_num); ALTER TABLE orderitems ADD ConSTRAINT fk_orderitems_products FOREIGN KEY (prod_id) REFERENCES products(prod_id); ALTER TABLE orders ADD ConSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers(cust_id); ALTER TABLE products ADD ConSTRAINT fk_products_vendors FOREIGN KEY (vend_id) REFERENCES vendors(vend_id);
复杂的表结构更改一般需要手动删除过程,它涉及以下步骤:
用新的列布局创建一个新表;使用INSERT SELECT语句从旧表复制数据到新表。如果有必要,可使用转换函数和计算字段; 检验包含所需数据的新表;重命名旧表(如果确定,可以删除它);用旧表原来的名字重命名新表; 根据需要,重新创建触发器、存储过程、索引和外键。 三、删除表
删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE语句即可:
DROP TABLE customers1四、重命名表
使用RENAME TABLE语句可以重命名一个表:
RENAME TABLE custnew TO customers2;五、结束
本文主要介绍了对数据表的 *** 作。包括CREATE TABLE用来创建新表,ALTER TABLE用来更改表列(或其他诸如约束或索引等对象),DROP TABLE用来完整地删除一个表。这些语句必须小心使用,并且应在做了备份后使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)