mysql SQL语句用法

-- mysql查当前用户,查版本
select user(),version();


增加字段,字段改名-改属性,删除字段,改变顺序

alter table tt1 add  col1 varchar(20)
alter table tt1 change col1 col2 varchar(20)
alter table tt1 change col1 col1 varchar(30)
alter table tt1 drop col1


alter table itbug  change col1 col1 varchar(20) first  --放到第一位

alter table itbug  change col1 col1 varchar(20) after col2  --放到col2后面


字段加主键,索引

-- 加主键
alter ignore table itbug add primary key(id)

-- 加唯一索引
alter  table itbug add unique index idx01(issuekey,projectid)


视图创建,更新,删除

create or replace view view_tm as
select a.kfcname, b.ywbm1,t.*
from taskmain t
left join itsys a on t.tasksystem=a.sysname
left join itchg b on t.chgid=b.chgid


drop view xxxx


mysql group_concat的用法

GROUP_CONCAT([DISTINCT] expr[,expr ...][ORDERBY{unsigned_integer | col_name | expr}[ASC |DESC][,col_name ...]][SEPARATOR str_val])

分隔符还可以自定义,默认是以“,”作为分隔符

例子:

select team,group_concat(username) from userinfo
where rowid<40
group by team


a.int字段的连接陷阱

用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,

下面是转换函数Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]


b.长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度,则结果被截至这个最大长度。







mysql 分组小计,总计

使用 group by c1,c2 with rollup 即可实现:

call p_monthly('2014/03/01','2014/03/31');

select
ifnull(c1,'合计') c1,
ifnull(c2,'小计') c2,
sum(round(c6/8,2)) c6,
sum(c9b) c9b,
sum(c10)c10,
sum(c13) c13,
c12,c11,c14
from tt1
group by c1,c2 with rollup




mysql select into

从一个表获取记录插入到另外一个表

 

Insert into Table2(field1,field2,...)

selectvalue1,value2,... from Table1

 

select vale1, value2

intoTable2

fromTable1

 

mysql百分比表示查询结果

用函数concat()

select concat(col1,%')

 

mysql 中文字段排序( 按拼音首字母排序) 的查询语句

如果数据表tbl的某字段name的字符编码是latin1_swedish_ci

select * from `tbl` order by birary(name) asc ; 

 

如果数据表tbl的某字段name的字符编码是utf8_general_ci

SELECT name FROM `tbl` WHERE 1 ORDER BY CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC

 

 

查询及操作表上的索引

查询:

show index from tblname;

show keys from tblname;

alter table创建:

ALTER TABLE table_name ADD INDEX index_name (column_list)

ALTER TABLE table_name ADD UNIQUE (column_list)

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

 create创建:

CREATE INDEX index_name ON table_name (column_list)

CREATE UNIQUE INDEX index_name ON table_name (column_list)

 删除:

DROP INDEX index_name ON talbe_name;

ALTER TABLE table_name DROP INDEX index_name;

ALTER TABLE table_name DROP PRIMARY KEY;

  

用A表查询内容更新B表

update checkinfo as c inner join userinfo as u
set c.useranaly=u.userid_rd
where c.useranalyname=u.username and c.useranalyname=''

去掉重复的列

方法1:

ALTER IGNORE TABLE <tbl_name> ADD UNIQUE (field1,field2,field3,field4 ...); 

方法2:

Step 1: Move the non duplicates (unique tuples) into a temporary table 

CREATE TMP TABLE tmp_table AS 
(SELECT distinct col1,col2 ...  FROM old_table WHERE 1) 

Step 2: Dump everything in the permanent table
TRUNCATE TABLE old_table;

Step 3: Copy unique rows back to the permanent table
INSERT INTO old_table SELECT * FROM tmp_table;
 

 

#Add Unique key to old_table

Alter table old_table add unique index(col1,col2)










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值