--建表
CREATE TABLE IF NOT EXISTS `boke_tbl`(
`boke_id` INT UNSIGNED AUTO_INCREMENT,
`boke_title` VARCHAR(100) NOT NULL,
`boke_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `boke_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--插入数据
INSERT INTO boke_tbl (boke_title, boke_author, submission_date) VALUES ("学习 PHP", "菜鸟教程", NOW());
 
INSERT INTO boke_tbl (boke_title, boke_author, submission_date) VALUES ("学习 MySQL", "菜鸟教程", NOW());
 
INSERT INTO boke_tbl (boke_title, boke_author, submission_date) VALUES ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
 
INSERT INTO boke_tbl (boke_title, boke_author, submission_date) VALUES ("学习 Python", "RUNOOB.COM", '2016-05-06');
--查询全部
select * from boke_tbl
--条件查询where
select * from boke_tbl where php_author = "php教程"
--多重条件查询
select * from boke_tbl where php_author= "php教程" AND boke_id = 1
--更新数据库字段
UPDATE boke_tbl SET boke_title="学习 C++" WHERE boke_id = 3
--更新数据库表部分字段
UPDATE boke_tbl SET boke_title=REPLACE(boke_title,'C++','Python') WHERE boke_id = 3
 
--删除数据 delete from 表名称 where 删除条件;
DELETE FROM boke_tbl WHERE boke_id = 3
 
--MySQL LIKE 子句
SELECT* FROM boke_tbl WHERE boke_author LIKE('%COM')
 
like 匹配/模糊匹配,会与 % 和 _ 结合使用。
 
'%a'     //以a结尾的数据
'a%'     //以a开头的数据
'%a%'    //含有a的数据
'_a_'    //三位且中间字母是a的
'_a'     //两位且结尾字母是a的
'a_'     //两位且开头字母是a的
 
查询以 java 字段开头的信息。
 
SELECT * FROM position WHERE name LIKE 'java%';
查询包含 java 字段的信息。
 
SELECT * FROM position WHERE name LIKE '%java%';
查询以 java 字段结尾的信息。
 
SELECT * FROM position WHERE name LIKE '%java';
在 where like 的条件查询中,SQL 提供了四种匹配方式。
 
%:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
[]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。
 
--MySQL 排序
 
--在命令提示符中使用 ORDER BY 子句
select * from boke_tbl ORDER BY submission_date ASC
 
 select * from boke_tbl ORDER BY submission_date DESC
 
--MySQL GROUP BY 语句
 
--创建新表
DROP TABLE IF EXISTS `employee_tbl`;
CREATE TABLE `employee_tbl` (
`id` int(11) NOT NULL,
`name` char(10) NOT NULL DEFAULT '',
`date` datetime NOT NULL,
`singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--插入数据
INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), 
('2', '小王', '2016-04-20 15:25:47', '3'), 
('3', '小丽', '2016-04-19 15:26:02', '2'), 
('4', '小王', '2016-04-07 15:26:14', '4'), 
('5', '小明', '2016-04-11 15:26:40', '4'), 
('6', '小明', '2016-04-04 15:26:54', '2');
--GROUP BY 语法
--接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
select name, count(*) from employee_tbl GROUP BY name
--使用 WITH ROLLUP
--WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;