常用的SQL语句

来源:互联网 发布:淘宝开店怎么做代销 编辑:程序博客网 时间:2024/05/29 14:06

本文主要介绍常用的SQL语句,数据库是MySQL,Oracle可能会略有不同,请自行学习。


一、SQL关键字

对于英语能力不是太好的人来说,学习SQL语句第一步就是关键字不要写错,以下是根据自己列出相关的关键字:

primary key   主键

auto_increment   自增

engin   引擎

order by  排序

group by   分组

asc    升序

desc   降序

RegExp 正则表达式标识符

index   索引

view  视图

timestamp  时间戳

between 两个值之间

alter 修改

distinct 不重复


二、常用的SQL语句

表一:



1. 正则表达式

-- REGEXP 是正则表达式的标识符,^c 表示查找出以c字母开头的user
SELECT sys_user_id, user_name FROM sys_user WHERE user_name REGEXP '^c';


-- REGEXP 是正则表达式的标识符,7$ 表示查找出以数字7结尾的user
SELECT sys_user_id, user_name FROM sys_user WHERE user_name REGEXP '7$';


2. 排序 order by

order by 是排序语句,asc表示升序,desc表示降序

语法:order by  field asc/desc        //放在where语句后面


SELECT sys_user_id, user_name FROM sys_user WHERE user_name REGEXP '7$' ORDER BY sys_user_id DESC;


3. 分组 group by

若既有group by 和order by,一般都是先分组后再根据分组中的字段再排序。


SELECT user_name, COUNT(*) FROM sys_user GROUP BY user_name ORDER BY sys_user_id DESC;

4. having (与group by搭配)

having语句相当于是group by的where语句,表示在什么限制条件下进行分组

SELECT user_name, COUNT(*), SUM(age) AS totalAge FROM sys_user GROUP BY user_nameHAVING totalAge>5 ORDER BY sys_user_id DESC;


5. join连接的使用

在两个或多个表中查询数据,join连接中条件限制的关键字是on

表一:runoob_tbl


表二:tcount_tbl


(1)内连接:交集



SELECT a.`runoob_id`, a.runoob_title, a.runoob_author, b.`runoob_count` FROM `runoob_tbl` aINNER JOIN `tcount_tbl` bON a.`runoob_author`=b.`runoob_author`;


(2)左连接

左连接有两种情况,一种是查询出左表的全部数据,另外一种是查询出在左表但不在右表的数据。


-- 查询出左边的所有数据
SELECT a.`runoob_id`, a.runoob_title, a.runoob_author, b.`runoob_count` FROM `runoob_tbl` aLEFT JOIN `tcount_tbl` bON a.`runoob_author`=b.`runoob_author`;




-- 查询出在左边但不在右边的数据
SELECT a.`runoob_id`, a.runoob_title, a.runoob_author, b.`runoob_count` FROM `runoob_tbl` a LEFT JOIN `tcount_tbl` b ON a.`runoob_author`=b.`runoob_author`WHERE b.`runoob_author` IS NULL;

(3)右连接

右连接与左连接一样,也有两种情况,一种是查询出右表的全部数据,另外一种是查询出在右表但不在左表的数据。



-- 查询出右边的所有数据
SELECT b.runoob_author, b.`runoob_count` FROM `runoob_tbl` a RIGHT JOIN `tcount_tbl` b ON a.`runoob_author`=b.`runoob_author`;



-- 查询出在右边但不在左边的数据
SELECT b.runoob_author, b.`runoob_count` FROM `runoob_tbl` a RIGHT JOIN `tcount_tbl` b ON a.`runoob_author`=b.`runoob_author`WHERE a.`runoob_author` IS NULL;

(4) 完全连接

MySQL不支持full join,所以得另辟蹊径。












0 0
原创粉丝点击