mysql常用问题_mysql常用问题笔记

行转列,列转行

DROP TABLE IF EXISTS `TabName`;

CREATE TABLE `TabName` (

`Id` int(11) NOT NULL AUTO_INCREMENT,

`Name` varchar(20) DEFAULT NULL,

`Date` date DEFAULT NULL,

`Scount` int(11) DEFAULT NULL,

PRIMARY KEY (`Id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

INSERT INTO `TabName` VALUES ('1', '小说', '2013-09-01', '10000');

INSERT INTO `TabName` VALUES ('2', '微信', '2013-09-01', '20000');

INSERT INTO `TabName` VALUES ('3', '小说', '2013-09-02', '30000');

INSERT INTO `TabName` VALUES ('4', '微信', '2013-09-02', '35000');

INSERT INTO `TabName` VALUES ('5', '小说', '2013-09-03', '31000');

INSERT INTO `TabName` VALUES ('6', '微信', '2013-09-03', '36000');

INSERT INTO `TabName` VALUES ('7', '小说', '2013-09-04', '35000');

INSERT INTO `TabName` VALUES ('8', '微信', '2013-09-04', '38000');

SELECT Date ,

MAX(CASE NAME WHEN '小说' THEN Scount ELSE 0 END ) 小说,

MAX(CASE NAME WHEN '微信' THEN Scount ELSE 0 END ) 微信

FROM TabName

GROUP BY Date

统计分段

SELECT count(*) as '人数' ,age as '年龄段' from

(

SELECT

case s

)

a GROUP BY age

UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复

select 1 要求返回的结果是多个行,而不是具体的内容,与内容无关

not exists 比 not in 效率高,如果查询语句使用了not in 那么内外表都进行全表扫描,没用到索引,而not exists

的子查询依然能用到表上的索引,所以无论那么表大,用not exists 都比not in 要快

replace 字符串

SELECT replace('www.mysql.com’,’w’,’a’)返回 aaa.mysql.com

SELECT truncate(1.224,2) 返回1.22 后面的2是确定返回的小数点后面的有效数字

dayofweek(date)

SELECT EXTRACT(month from last_activity_date) month from account 提取月份的函数

子查询是指包含在另一个查询中的查询,子查询可以出现在select 语句中的各个部分并且被包含在圆括号中,

在from子句内,子查询的作用是根据其他子查询产生临时表

char 长度是固定的 varchar长度是变长的

truncate 删除表中的数据,但是结构没有破坏, delete是从一个表中删除某一行,执行速度 drop>truncate>delete

触发器是指一段代码,当触发某个事件时,自动执行这些代码,六种触发器:

before insert,after insert,before update ,after update ,before delete ,after delete

如何查询第n高的工资

select distinct(salary)from employee order by salary desc limit n-1,1

事务的四大特性,以及隔离级别

一数据库必须具备的四个特性

1:原子性 事务包含的所有操作要么全部成功,要么全部失败回滚,成功必须要完全应用到数据库,失败则不能对数据库产生影响

2:一致性:事务执行前和执行后必须处于一致性状态

3:隔离性:当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要互相隔离

4:持久性:一个事务一一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便在数据库系统遇到故障的情况下也不会丢失事务的操作

*field 函数

SELECT * from test ORDER BY FIELD(id,1,3,5,2,4,6);按照指定的顺序排序,个人认为比case when 好用

SELECT `ID` FROM wp_posts WHERE `ID` in (1,2,3,4,5) ORDER BY FIND_IN_SET(`post_title`,'A,B,C,D,E')

*用case when 按照指定顺序排序

select * from test order by(

case

when id=1 then 1

when id=2 then 2

when id=3 then 3

when id=4 then 4

when id=5 then 5

else 6

end

)

终端进入数据库

/usr/local/MYSQL/bin/mysql -u root -p

password root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值