数据表
创建表
如果数据表已创建且加上IF NOT EXISTS
再创建系统不会报错。
--创建数据表:
CREATE TABLE tb1(
username VARCHAR(20) NOT NULL; --用户名称 字符型,非空
age TINYINT UNSIGNED NULL, --年龄 整型无负数,可为空值
salary FLOAT(8,2) UNSIGNED --工资 浮点型 整数6位 小数2位 无负数
);
SHOW TABLES [FROM db_name];--查看表
SHOW COLUMNS FROM table_name;--查看表结构
--INTO可以省略;列名可以省略,此时必须为所有的列赋值。
INSERT [INTO] table_name [(col_name,...)] VALUES (val,...);
修改表
添加(多)列
ALTER TABLE table_name ADD [COLUMN] column_name column_definition [FIRST | AFTER column_name]
ALTER TABLE table_name ADD [COLUMN] (column_name column_definition,...)
ALTER TABLE user1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name
ALTER TABLE user1 DROP truename;--删除表user1的truename单列
ALTER TABLE user1 DROP password,DROP age;--删除多列,用逗号分隔开
增删主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [自己起的约束名字]] PRIMARYKEY [index_type] (index_col_name,...)
--index_type 可选参数,创建的索引类型(B树,Hash),默认B树
ALTER TABLE table_name DROP PRIMARY KEY;
增删外键约束:
ALTER TABLE tb_name ADD [CONSTRANINT [约束名]] FOREIGN KEY [index_name] (index_col_name,...) references_definition;
ALTER TABLE table_name DROP FOREIGN KEY (约束名);
--外键约束的名字 约束名 可通过 SHOW CREATE TABLE table_name; 查询
--示例
ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
增删唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT [约束名]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
ALTER TABLE table_name DROP INDEX 约束名;
--示例
ALTER TABLE user2 ADD UNIQUE (username);
增删默认约束
ALTER TBALE tb_name ALTER [COLUMN] col_name {SET DEFAULT 默认值 | DROP DEFAULT}
--示例
ALTER TABLE user2 ALTER age SET DEFAULT 15;
ALTER TABLE user2 ALTER age DROP DEFAULT;
修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [ FIRST | AFTER col_name];
--将id字段的位置提到第一列
ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;
--修改数据类型,需注意数据丢失的问题
SHOW COLUMNS FROM users2; ALTER TABLE users2 MODIFY id TINYINT UNSIGNED NOT NULL;
修改列名称
尽量不要修改列名
ALTER TABLE tbl_name CHANGE [COLUMN] col_name new_col_name column_definition [ FIRST | AFTER col_name];
--修改列名称 pid -> p_id
ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED;
数据表更名
尽量不要修改表名
--方法1
ALTER TABLE tbl_name RENAME [TO/AS] new_tbl_name
--示例
ALTER TABLE users2 RENAME (to/as) users3;
SHOW TABLES;
--方法2
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
--示例
RENAME TABLE users5 TO users2;
不要随意修改表明列名,以前引用过表名或列名的话,可能会影响某些视图或存储过程的正常工作.