MySql学习笔记【三、表相关操作】
创建表
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
...
)
如:
CREATE TABLE test_table(
id BIGINT,
createdate DATETIME,
username VARCHAR(20),
)
指定主键
KEY/PRIMARY KEY
如:
CREATE TABLE tb1(
id bigint NOT NULL PRIMARY KEY,
username VARCHAR(10) NULL
)
指定列自增(该列必须为数字类型,且为主键)
AUTO_INCREMENT
如:
CREATE TABLE tb1(
id BIGINT AUTO_INCREMENT KEY,
username VARCHAR(10) NULL,
age SMALLINT UNSIGNED NOT NULL
)
设置列缺省值
DEFAULT xxx
如:
CREATE TABLE tb1(
id bigint AUTO_INCREMENT KEY,
username VARCHAR(10) DEFAULT ''
)
唯一约束
UNIQUE KEY
唯一约束的值可空,且可有多条记录为NULL
如:
CREATE TABLE tb1(
id bigint NOT NULL,
username VARCHAR(10) UNIQUE KEY
)
指定列为空/非空(默认可空)
NULL / NOT NULL
如:
CREATE TABLE tb1(
id bigint NOT NULL,
username VARCHAR(10) NULL
)
指定列无符号(默认有符号)
UNSIGNED
如:
CREATE TABLE tb1(
id bigint NOT NULL,
username VARCHAR(10) NULL,
age SMALLINT UNSIGNED NOT NULL
)
查看数据表
SHOW TABLES [FROM db_name]
[LIKE 'pattern'| WHERE expr]
如:SHOW TABLES;
查看数据表列/约束
SHOW {COLUMNS|INDEXES} FROM tb_name [\G]
如: SHOW COLUMNS FROM test_table;
末尾带\G,表示可以以行结构查看
修改表
添加单列
ALTER TABLE tb_name ADD [COLUMN]
col_name column_definition [FIRST|AFTER col_name]
如:
ALTER TABLE tb1 ADD
age INT UNSIGNED AFTER id;
省略FIRST|AFTER 将默认在末尾追加列
添加多列
ALTER TABLE tb_name ADD [COLUMN]
(col_name column_definition)
与添加单列的区别是,多列须加小括号,且无法指定位置
如:
ALTER TABLE tb1 ADD
(age INT UNSIGNED AFTER id,
password VARCHAR(10) DEFAULT '');
修改列
ALTER TABLE tb_name MODIFY [COLUMN]
col_name column_definition ;
如:
ALTER TABLE goods MODIFY
price decimal(10,2) ;
添加/删除主键约束
-
添加
ALTER TABLE tb_name ADD [CONSTRAINT [cons_name]]
PRIMARY KEY [index_type] (index_col_name,...)
如:ALTER TABLE tb2 ADD CONSTRAINT PRIMARY KEY (id); -
删除
ALTER TABLE tb_name DROP PRIMARY KEY
如:ALTER TABLE tb2 DROP PRIMARY KEY ;
添加/删除唯一约束
-
添加
ALTER TABLE tb_name ADD [CONSTRAINT [cons_name]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
如:ALTER TABLE tb2 ADD UNIQUE (username) -
删除
ALTER TABLE tb_name DROP {INDEX|KEY} index_name
如:ALTER TABLE tb2 DROP INDEX username;
对于删除唯一约束来说,INDEX与KEY 相同
添加/删除默认约束
ALTER TABLE tb_name ALTER [COLUMN] col_name
{SET DEFAULT value|DROP DEFAULT}
如:
ALTER TABLE tb2 ALTER username SET DEFAULT '';
ALTER TABLE tb2 ALTER username DROP DEFAULT;
删除表
DROP TABLE tb_name
如:DROP TABLE test_table;
约束
- 主键 RPIMARY KEY
- 非空约束 NOT NULL
- 唯一约束 UNIQUE KEY
- 默认约束 DEFAULT
- 外键约束 FOREIGN KEY (实际项目中很少用到)