Mysql可视化工具Navicat for MySQL
1 alter命令
修改字段
alter+drop删除i字段
ALTER TABLE testalter_tbl DROP i;
alter+add添加i字段(column),会默认在末尾添加
ALTER TABLE testalter_tbl ADD i INT;
alter+add+first/after
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl ADD i INT AFTER c;
修改字段类型和名称
alter+modify修改字段的类型
ALTER TABLE testalter_tbl MODIFY c CHAR(10);
alter+change修改字段的名称和类型
ALTER TABLE testalter_tbl CHANGE i j BIGINT;
ALTER TABLE testalter_tbl CHANGE j j INT;
修改字段默认值
default为默认值,不声明为null alter table X alter set default
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除字段的默认值alter alter drop default
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
修改表名 rename to
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
2 索引
创建索引
a.CREATE INDEX indexName ON mytable(username(length));
B)ALTER mytable ADD INDEX [indexName] ON (username(length))
C创建表的时候直接指定
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length))
);
删除索引
DROP INDEX [indexName] ON mytable;
创建唯一索引,允许有空值 unique index
A.CREATE UNIQUE INDEX indexName ON mytable(username(length))
B.ALTER mytable ADD UNIQUE [indexName] ON (username(length))
C.CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
);
添加主键,保证not null
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。
显示索引信息
SHOW INDEX FROM table_nameG
3mysql临时表
MySQL临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
退出mysql时,会自动删除,也可用drop手动删除
CREATE TEMPORARY TABLE SalesSummary();
4 。复制表 inser into select
SHOW CREATE TABLE runoob_tbl G;
- 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
- 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
CREATE TABLE `clone_tbl` (
-> `runoob_id` int(11) NOT NULL auto_increment,
-> `runoob_title` varchar(100) NOT NULL default '',
-> `runoob_author` varchar(40) NOT NULL default '',
-> `submission_date` date default NULL,
-> PRIMARY KEY (`runoob_id`),
-> UNIQUE KEY `AUTHOR_INDEX` (`runoob_author`)-> ) ENGINE=InnoDB;
- 如果你想复制表的内容,你就可以使用 INSERT INTO ... SELECT 语句来实现。
INSERT INTO clone_tbl (runoob_id,
-> runoob_title,
-> runoob_author,
-> submission_date)
-> SELECT runoob_id,runoob_title,
-> runoob_author,submission_date
-> FROM runoob_tbl;
- 5 更新
- Update 表名 set 字段=值 where 条件
- 6处理重复数据
- 统计重复数据
SELECT COUNT(*) as repetitions, last_name, first_name
-> FROM person_tbl
-> GROUP BY last_name, first_name
-> HAVING repetitions > 1;
- 过滤重复数据 加关键字DISTINCT
SELECT DISTINCT last_name, first_name
-> FROM person_tbl
-> ORDER BY last_name;
也可以使用 GROUP BY 来读取数据表中不重复的数据:
mysql> SELECT last_name, first_name
-> FROM person_tbl
-> GROUP BY (last_name, first_name);
删除重复数据 选出不重复的数据保存到新表中,删除旧表
mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
-> FROM person_tbl;
-> GROUP BY (last_name, first_name);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;
也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录
ALTER IGNORE TABLE person_tbl
-> ADD PRIMARY KEY (last_name, first_name);