MySql 数据库常用命令
Mysql常用命令集:
1、增加表
语法: CREATE 表名(字段名1[,字段名2,字段名3,....])
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF NOT EXISTS ( SELECT * FROM information_schema. TABLES WHERE table_schema = CurrentDatabase AND table_name = '表名' ) THEN CREATE TABLE 表名 ( Id INT NOT NULL auto_increment, 字段名 字段类型 [NOT NULL], [.....], PRIMARY KEY (Id) ) DEFAULT CHARSET = utf8 ; END IF ; END// DELIMITER ; CALL schema_change ();
2、为已有表增加字段
语法:
ALTER TABLE 表名 ADD 字段名 字段类型 [COMMENT 描述];
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF NOT EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 ADD 字段名 TINYINT (1) COMMENT '字段描述'; END IF ; END DELIMITER ; CALL schema_change ();
3、为数据库表已有字段设置默认值
语法: ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT '默认值';
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN
DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF NOT EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT '默认值'; END IF ; END DELIMITER ; CALL schema_change ();
4、删除表中字段的默认值
语法:
ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT;
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT; END IF ; END DELIMITER ; CALL schema_change ();
5、删除表字段
语法:
ALTER TABLE 表名 DROP COLUMN 字段名;
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change ()
BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 DROP COLUMN 字段名; END IF ; END DELIMITER ; CALL schema_change ();
6、修改字段名
语法: ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名;
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 RENAME COLUMN 原字段名 TO 新字段名; END IF ; END DELIMITER ; CALL schema_change ();
7、修改字段类型
语法: ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型 [NOT NULL|NULL];
DROP PROCEDURE IF EXISTS schema_change; DELIMITER CREATE PROCEDURE schema_change () BEGIN DECLARE CurrentDatabase VARCHAR (100) ; SELECT DATABASE () INTO CurrentDatabase ; IF EXISTS ( SELECT * FROM information_schema. COLUMNS WHERE table_schema = CurrentDatabase AND table_name = '表名' AND column_name = '字段名' ) THEN ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型 [NOT NULL|NULL]; END IF ; END DELIMITER ; CALL schema_change ();
8、删除表(物理删除)
语法: DROP TABLE [IF EXISTS] 表名1[ ,表名2, 表名3 ...];
9、删除表数据
TRUNCATE TABLE 表名; 或者 DELETE FROM 表名 [WHERE ...]
truncate 和 delete 的区别:
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、truncate不能进行回滚操作。
3、truncate不触发任何delete触发器。
4、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。
5、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
结束:
先就写这么多吧,以后有更多的再补充。