导出
#> cd /usr/local/src
#> /usr/local/mysql/bin/mysqldump -uroot -p123456 cacti > cacti.sql;
这样就看到cacti.sql导出到了/usr/local/src/目录
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p abc > abc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u root -p abc users> abc_users.sql
3.导出一个数据库结构
mysqldump -u root -p -d --add-drop-table abc >/usr/local/abc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
导入
#> /usr/local/mysql/bin/mysql -uroot -p
mysql> create database cacti; 新建数据库名为cacti
mysql> use cacti; 选择目标数据库
mysql> source /usr/local/src/cacti.sql 导入数据库
这样就导入了cacti.sql文件
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change oldname newname mysql_filed_type(forexample varchar(255) or int);
修改列名SQLServer:exec sp_rename't_student.name','nn','column';
修改列名Oracle:alter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` )
3.INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
5.多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
--------------------------------------------------------
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。
如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。
--------------------------------------------------------
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
2.SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
结论:mysql下create table tablename as select * from b形式创建的表不包含索引信息,like(create table tablename like tablename)子句形式包含完整表结构和索引信息
所以 as select 子句一般适用于建表并复制源表数据的情况,like子句适用于只复制表结构的情况
误用的风险: 索引的缺失对于业务的性能是致命的,不必多说.
Oracle下:
a create as select同样不会创建索引
b oracle不支持like子句
至于如何实现完全创建表结构和索引的方法有待继续探讨!
相关文章
- Mysql 定位执行效率低的sql 语句
- mysql5.7安装配置,常用命令,常见问题
- MySQL缓存机制详解(一)
- [MySQL FAQ]系列 — processlist中哪些状态要引起关注 解决mysql cpu过高问题
- "Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs
- 《MySQL高级篇》十四、多版本并发控制
- PHP MySQL从半径用户的位置获取位置
- 终极MySQL遗留数据库的噩梦
- MySql在Mac上的安装配置
- 如何删除Mysql“显示processlist”中的所有进程?