mysql常用的一些语句

创建表

create TABLE emp(
id INT(10) unsigned NOT NULL AUTO_INCREMENT,
emp_no VARCHAR(10) NOT NULL,
emp_name VARCHAR(50) NOT NULL,
emp_sex CHAR(1) default null,
emp_salary DOUBLE(10,2) default NULL,
birthday Date default null,
entry_date TIMESTAMP(8),
PRIMARY KEY (`id`)
)ENGINE=InnoDB  DEFAULT CHARSET=utf8

插入数据
insert into emp(emp_no,emp_name,emp_sex,emp_salary,birthday)values('1001','zhansan','M',5000.345555,'2004-09-23');

添加表字段number在cityId后
alter table emp ADD number INT(10) after emp_name;
如果一次加多个字段这样写
ALTER TABLE MYTABLE ADD FIELD1 VARCHAR(10),ADD FIELD2 INT,ADD FIELD3 VARCHAR(1)

如果一次加多个字段这样写也可以这样写
ALTER TABLE MYTABLE ADD (FIELD1 VARCHAR(10),FIELD2 INT,FIELD3 VARCHAR(1))

修改表的字段名字定义
alter table emp change emp_name  emp_namedd VARCHAR(55);

修改表的字段的定义位置

alter table emp modify emp_name VARCHAR(20)  default 'zhangsan';

删除表的字段
alter table emp drop emp_name;

删除表
drop table emp;

清空表数据
truncate table emp;

得到表结构
desc emp;

修改表名
alter table tablename1 rename to tablename2

这个是用来对表进行优化。这个命令可以将表中的碎片进行合并,并且可以消除由于删除或者更新造成的空间的浪费。这个命令只对MyISAM BDB,InnoDB起作用。
OPTIMIZE TABLE emp;

创建过程:向表emp中插入10000条数据
create PROCEDURE createEmpData()
BEGIN
set @x=1;
loop1:LOOP
set @x = @x + 1;
  if @x = 10000 THEN
LEAVE loop1;
end IF;
insert into emp(emp_no,emp_name,emp_sex,emp_salary,birthday)values('1001','zhansan','M',5000.34,'2004-09-23');
end loop loop1;
END

调用过程
call createEmpData;

删除过程
drop PROCEDURE createEmpData;

快速对Mysql添加索引的五个方法
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` )
例子:alter table `balance` add index  data_date_index(data_date);


4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT (
`column`
)

5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

mysql临时表的使用

创建临时表
create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null)
临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。这就意味着你可以在两个不同的连接里使用相同的临时表名,并且相互不会冲突,或者使用 已经存在的表,但不是临时表的表名。(当这个临时表存在的时候,存在的表被隐藏了,如果临时表被drop,存在的表就可见了)。创建临时表你必须有

  create temporary table 权限


临时表用完后要记得drop掉:
    DROP TEMPORARY TABLE IF EXISTS sp_output_tmp;
临时表参考的博客地址:
http://www.cnblogs.com/end/archive/2011/03/31/2001094.html

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中。

两种表复制语句参考的博客
http://www.cnblogs.com/freshman0216/archive/2008/08/15/1268316.html

mysql 批量更新

批量更新参考的博客
http://blog.sina.com.cn/s/blog_3f776cca0100xka5.html

http://www.oschina.net/code/snippet_12_3346

http://www.cnblogs.com/rockee/archive/2012/06/11/2544903.html

你可能感兴趣的:(mysql)