--建表CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT UNSIGNED AUTO_INCREMENT, `runoob_title` VARCHAR(100) NOT NULL, `runoob_author` VARCHAR(40 ...
--建表
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
--插入數據
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("學習 PHP", "菜鳥教程", NOW());
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("學習 MySQL", "菜鳥教程", NOW());
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
INSERT INTO runoob_tbl (runoob_title, runoob_author, submission_date) VALUES ("學習 Python", "RUNOOB.COM", '2016-05-06');
--查詢全部
select * from runoob_tbl
--條件查詢where
select * from runoob_tbl where runoob_author = "菜鳥教程"
--多重條件查詢
select * from runoob_tbl where runoob_author = "菜鳥教程" AND runoob_id = 1
--更新資料庫欄位
UPDATE runoob_tbl SET runoob_title="學習 C++" WHERE runoob_id = 3
--更新資料庫表部分欄位
UPDATE runoob_tbl SET runoob_title=REPLACE(runoob_title,'C++','Python') WHERE runoob_id = 3
--刪除數據 delete from 表名稱 where 刪除條件;
DELETE FROM runoob_tbl WHERE runoob_id = 3
--MySQL LIKE 子句
SELECT* FROM runoob_tbl WHERE runoob_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 runoob_tbl ORDER BY submission_date ASC
select * from runoob_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;