本篇博客不算是新手教程或者是什么mysql语句整理大全,所有列出的语句都是我自己不怎么熟或者不会的。。。有这么多QWQ
mysql -u root -p password; | 从cmd进入数据库 |
\q / exit /quit; | 从cmd退出数据库 |
\G | 打印表时按行打印(加在打印语句末尾) |
use diyun_db | 选择要操作的数据库 |
show warnings | 查看警告信息 |
show create database/table name | 显示创建时的完整语句 |
show databases [like ‘pattern’|where expr] | 列出数据库列表 |
show indexs from article_tbl | 显示数据表的详细索引信息 |
show table status from db_name [like ‘%pattern%’] | 输出Mysql数据库管理系统的性能及统计信息 |
create database [if not exists] db_name [character set charset_name] | 创建数据库 |
alter database db_name [character set charset_name] | 修改数据库 |
drop database [if exists] db_name | 删除数据库 |
select version()/now()/user()/database() | 显示当前服务器版本/当前日期时间/当前用户/当前数据库 |
create table [if not exists] table_name( column_name data_type [default value] [unsigned] [null|not null] [auto_increament[=startNumber]] [primary key] [unique key] [comment], …… [foreign key(column) references ref_tbl_name(column) [on delete cascade|set null|restrict]] ) [engine=InnoDB] [default CHARSET=utf8] | 创建数据表:默认值,无符号,非空,自增,主键,唯一约束,备注/外键约束(并设置父表删除时的相应选项) |
show tables [from db_name] [like ‘pattern’|where expr] | 查看数据表 |
show columns from tbl_name | 查看数据表结构 |
alter table tbl_name add|modify col_name [column_definition] [first|after col_name] | 修改数据表(添加单列|修改列定义) |
alter table tbl_name change old_name new_name [column_definition] [first|after col_name] | 修改列名称 |
alter table tbl_name rename [to|as] new_tbl_name | 数据表更名 |
alter table tbl_name add primary key(id ); | 添加主键 |
create table tbl_name .. select .. | 创建数据表的同时将查询结果写入到数据表 |
TODO |
avg | 取平均数 |
count | 个数 |
sum | 求和 |
max/min | 最大/最小 |
concat(a,b,c) | 连接字符串 |
concat_ws(‘|’,b,c) | 指定分隔符连接字符串 |
format(num,保留小数位) | 数字格式化 |
upper/lower | 大小写转化 |
left(string,num) | 返回string的左num个字符 |
right() | 返回右边字符 |
length() | 字符串长度 |
ltrim()/rtrim()/trim() | 去除前/后/前后空格 |
trim(leading/trailing/both ‘?’ from ‘??lalala??’ ) | 去除字符串前/后/前后指定字符 |
substring(,,) | 字符串截取(MySQL中索引从1开始!此处可以为负数,表明从后面开始数) |
replace(‘??lala??lala??’,’?’,’!’) | 字符串替换(示例将所有’?’转化为’!’) |
ceil()/floor()/round(num[,保留位数]) | 向上/向下/四舍五入取整 |
mod | 取余 |
power(3,3) | 幂运算(例为3^3得27) |
truncate | 数字截取(正数代表截取小数,负数代表截取整数部分,如truncate(23.12,-1)=20) |
now()=curdate()+curtime() | 当前日期和时间 |
data_add(date,interval 1 day/week/year) | 返回增加过后的日期(为负值则减少) |
datediff() | 日期差值 |
date_format | 日期格式化(%Y%m%d %H%i%s:年月日 时分秒) |
md5() | 信息摘要算法 |
查
语句 | 作用 | 例子 |
---|---|---|
group by {col_name | position} [asc | desc] [having condition] | 查询结果分组(将指定重复项合并,并返回组名),having语句筛选分组 | SELECT type,count(type) FROM `article_info` GROUP BY type; 查询type的种类及相应个数 |
ANY/SOME/ALL | 任意/任意/所有(子查询关键字,在子查询返回数量大于1时必须使用,其中ANY=SOME) | select count(*) from class1 where age>ANY(select age from class2 ) //查询class中age大于class2中最小age的数量 |
inner join/left join/right join/full join db_name on {condition} | (交集/左表全部/右表全部/并集)以一定条件关联两张或多张表(两张以上只需要再加一个join语句),可用于select,update,delete语句中 | update command_content c,message m set c.CONTENT=m.COMMAND where c.ID=m.ID |
select column from table
select distinct column from table //distinct关键字去除重复行
select column from table where column in(value1,value2) //in确定一个集合,也可用于in(子查询)
关联两个表,left join返回COMMAND全部,on在临时表生成前生效,对COMMAND不进行筛选,
where在临时表之后生效,对COMMAND也会进行筛选。其中对两张表起了别名:a,b,
对a.ID起了别名C_ID(mybatis)
select a.ID C_ID,a.Name,a.DESCRIPTION,b.ID,b.CONTENT,b.COMMAND_ID
from COMMAND a left join COMMAND_CONTENT b on a.ID=b.COMMAND_ID
union/union all :合并查询结果,前者忽略重复项
改
update cus_info set status= case when status=’1’ then ‘2’ else ‘1’ end where id=#{id} //status为1改为2,status为2改为1
未完待续。。。。。。
增
insert into table(column) values(value);
insert into table set column={value};
insert into A(col_A) SELECT col_B from B //从B表中查询数据插入到A表中
insert ignore //使得主键冲突时不报错,这样可以定义自己的异常,而不是产生sql的异常。
删
delete a from message as a left join (select * from message group by COMMAND having count(COMMAND)>=2) as b on a.COMMAND=b.COMMAND where a.ID>b.ID;
//删除表中重复的COMMAND
jdbc相关
java.sql.Statement.getGeneratedKeys():获取自增主键值