MySQL中对数据表的操作
1.新建数据表
create table t_name(
属性名 数据类型 [约束...],
属性名 数据类型 [约束...],
......
属性名 数据类型 [约束...]
)
级联删除:
-
在添加外键约束时,使用关键字 on delete cascade
使用:当删除父表数据时,自动删除子表相关所有数据。语法:
constraint 外键名 foreign key (字段名) references 表名 (字段名) on delete cascade
-
使用关键字 on delete set null
删除父表数据时,将子表中的依赖字段的值设置为null。
注意:子表依赖字段不能添加非空约束。语法:
constraint 外键名 foreign key (字段名) references 表名 (字段名) on delete set null
注意:
- MySQL中的关键字不能使用作为表名, 数据库名和字段名等, 如果要使用要在名称上加上反引号
- 字段间用逗号隔开, 最后一个字段最后不需要加逗号
2.查看所有数据表
show tables;
如果没有进入先进入数据库中, 将会得到:
ERROR 1046 (3D000): No database selected
注意:
- 查看所有数据表之前, 要先进入到一个数据库中
3.删除数据表
DROP TABLE [IF EXISTS] <表名>;
语法说明如下:
- <表名>:被删除的表名。DROP TABLE 语句可以同时删除多个表,用户必须拥有该命令的权限。
- 表被删除时,所有的表数据和表定义会被取消,所以使用本语句要小心。
- 表被删除时,用户在该表上的权限并不会自动被删除。
- 参数
IF EXISTS
用于在删除前判断删除的表是否存在,加上该参数后,在删除表的时候,如果表不存在,SQL 语句可以顺利执行,但会发出警告(warning)。
4.查看数据表结构
DESCRIBE/DESC 语句可以查看表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,语法规则如下:
DESCRIBE <表名>;
或简写成:
DESC <表名>;
SHOW CREATE TABLE 语句可以用来显示创建表时的CREATE TABLE语句,语法格式如下:
show create table 表名\G;
提示:使用 SHOW CREATE TABLE 语句不仅可以查看创建表时的详细语句,而且可以查看存储引擎和字符编码。如果不加“\G”参数,显示的结果可能非常混乱,加上“\G”参数之后,可使显示的结果更加直观,易于查看。
5. 修改数据表
在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、创建或取消索引、更改原有列类型、重新命名列或表等。
常用的语法格式如下:
ALTER TABLE <表名> [修改选项]
修改选项的语法格式如下:
- ADD COLUMN <列名> <类型>
- CHANGE COLUMN <旧列名> <新列名> <新列类型>
- ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
- MODIFY COLUMN <列名> <类型>
- DROP COLUMN <列名>
- RENAME TO <新表名>
创建四个表:
# 创建商品种类表
create table commoditytype(
ct_id int(11) primary key,
ct_name varchar(50) not null
)default charset=utf8;
# 创建商品表
create table commodity(
c_id int(11) primary key,
c_name varchar(50) not null,
c_madein varchar(50) not null,
c_type int(11) not null,
c_inprice int(11) not null,
c_outprice int(11) ,
c_num int(11) default '100',
constraint fk_1 foreign key (c_type) references commoditytype (ct_id)
)default charset=utf8;
# 创建客户表
create table customer(
cu_id int(11) primary key,
cu_name varchar(50) not null,
cu_phone varchar(50) not null,
cu_gender int(11) not null default '1',
cu_address varchar(100) not null
)default charset=utf8;
# 创建订单表
create table `order`(
o_id int(11) primary key auto_increment,
o_cuid int(11) not null,
o_cid int(11) not null,
o_num int(11) not null,
constraint fk_2 foreign key (o_cuid) references customer (cu_id),
constraint fk_3 foreign key (o_cid) references commodity (c_id)
)default charset=utf8;