mysql基本操作

mysql 创建表,并设置主键自增:

create table log(  
logid int ( 4 ) primary key not  null  auto_increment,  
logtitle varchar(32 ) not  null ,  
logcontent varchar(160 ) not  null ,  
logtime datetime not null ,  
userip varchar(64 ) not  null   
);  

mysql修改表字段名称:

ALTER TABLE tablename CHANGE oldname newname TINYINT;

 删除一列:

alter table db.table drop column field;

 

从一个表中取出数据导入另一个表中:

类别一、 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:(此方法只适合导出两表在同一database)
 
INSERT INTO 目标表 SELECT * FROM 来源表;
例如,要将 articles 表插入到 newArticles 表中,则可以通过如下SQL语句实现:
 
INSERT INTO newArticles SELECT * FROM articles;
类别二、 如果只希望导入指定字段,可以用这种方法:
 INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;
请注意以上两表的字段必须一致(字段类型),否则会出现数据转换错误。
 
 
插入一条不重复记录:
INSERT INTO table1
(filed1, filed2)
SELECT 'value1', 'value2'
FROM dual
WHERE NOT EXISTS (
  SELECT * FROM table1
  WHERE filed1 = 'value1'
  AND filed2 = 'value2'
);
其中的dual是固定的
 
 mysql 中用sum函数的时候,后面不要有空格 ,否则会识别不出来。
 
mysql 中是没有 with  ...as..的,遇到这种情况,可以用子查询解决,例如:
select a.*
from (
SELECT name from t1 union all

SELECT name from t2 union all
SELECT name from t2
) as a



分析以下两个语句
1.select * from test1 where name like 'A%' limit 10
union
select * from test1 where name like 'B%' limit 10

2.
(select * from test1 where name like 'A%' limit 10)
union
(select * from test1 where name like 'B%' limit 10)
结果是1 出10行 2出20行
这里面要注意的是union中limit的用法



创建表并指定自增主键及初始值
 

CREATE TABLE t(
f_id INT AUTO_INCREMENT PRIMARY KEY
)AUTO_INCREMENT=1

 

 

截取某个字符后的字符串:

SELECT  SUBSTR('ABCD|D',LOCATE('|','ABCD|D')+1)

posted @ 2015-05-09 16:14  jiang_jiang  阅读(181)  评论(0编辑  收藏  举报