mysql 基本操作汇集

时间:2021-10-15 06:59:47

导出
#> 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子句

至于如何实现完全创建表结构和索引的方法有待继续探讨!