sql常用查询命令
本篇文章主要针对的是SQL server相关的基础命令,也会记一下其他数据库的命令如MySQL。
SQL Server常用查询命令:
查看当前时间
SQL server:select getdate()
MySQL:now()、current_date()
查询所有数据库名
SQL server:
select name from master.. sysdatabases order by name;
MySQL:
show database; (显示数据表也是相似: use 数据库名; show tables;)
查询当前使用的数据库名
--@@spid是当前用户进程的会话 ID
--用此会话ID在Master..SysProcesses中查得当前用户进程使用的数据库ID
--再用此数据库ID在查得Master..SysDataBases中查到对应的数据库名称
Select Name From Master..SysDataBases Where DbId=( Select Dbid From Master..SysProcesses Where Spid = @@spid)
MySQL:
select database();
查询前几条数据
SQL server:
/*查询前10条数据 */
select top 10 * from table (表名);
Oracle:
select * from table where rownum =10;
MySQL:
select * from table limit 0,10; /*limit参数必须是整型,参数可以是一个也可以是两个。第一个参数指定第一个返回记录行的偏移量,第二个指定返回记录行的最大数目。 该语句意思返回表的前10条记录。
去重查询
select distinct (字段) from table(表名);
字段换名
/**
*AS可以省略
*/
SELECT 字段1,字段2 AS '新名字' FROM TABLE(表名);
--------------------------------------------
select 字段1,字段2=(xxxx) from table; /*as 只换名,不计算;‘=’侧重计算*/
查询不等于
SELECT * FROM TABLE WHERE 字段 !=值;
SELECT * FROM TABLE WHERE 字段 <>值;
/*其他的>,<,=,=<等等就不说了*/
查询在两个值之间数据
SELECT * FROM TABLE(表名) WHERE 字段>=值1 AND 字段<=值2;
select * FROM TABLE(表名) WHERE 字段 BETWEEN 值1 AND 值2;
查询条件或
SELECT * FROM TABLE(表名) WHERE 字段=值1 OR 字段=值2;
SELECT * FROM TABLE(表名) WHERE 字段 IN(值1,值2);
模糊匹配查询
SELECT * FROM TABLE WHERE 字段 LIKE '%值%';//包含 /* %代表容易长度的字符,可以为0*/
SELECT * FROM TABLE WHERE 字段 LIKE '值%';//以某个字符开始匹配
SELECT * FROM TABLE WHERE 字段 LIKE '_值%';//以第二个字符为开始匹配 /*‘_’下划线代表任意单个字符*/
查询为空
SELECT * FROM TABLE WHERE 字段 IS NULL;//为空
SELECT * FROM TABLE WHERE 字段 IS NOT NULL;//不为空
注:这里的“is”不能用等于“=”代替
排序条件查询
SELECT * FROM TABLE ORDER BY 字段 ASC(默认);//升序
SELECT * FROM TABLE ORDER BY 字段 DESC;//降序
SELECT * FROM TABLE ORDER BY 字段1 DESC,字段2 DESC;//多字段排序
聚合查询
SELECT COUNT(*) FROM TABLE;//总行数
SELECT COUNT(字段) FROM TABLE;//字段不为NULL的行数
SELECT SUM(价格字段) FROM TABLE;//字段值总和
SELECT AVG(价格字段) FROM TABLE;//字段值平均值
SELECT MAX(价格字段) AS '最大价格' FROM TABLE;//字段最大值
SELECT MIN (价格字段) AS '最小价格' FROM TABLE;//字段最小值
注:
1.当聚集函数遇到空值时,除了count(*)外,都跳过空值而只处理非空值。
2.聚集函数只能用于
select子句和group by中的having子句。
分组查询
SELECT 字段1,COUNT(0) FROM TABLE WHERE 字段2>值(条件) GROUP BY 字段1;
SELECT 字段1,字段2... FROM TABLE GROUP BY 字段1,字段2... HAVING COUNT(字段)条件;
连接查询
内连接
等值连接,非等值连接,自然连接,因为技术上并无差别,所以无需赘述
inner join或者join
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
或:
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
注释:INNER JOIN 与 JOIN 是相同的。
内连接只会返回符合条件的行,对于无法匹配的行则不返回;

外连接(外连接包括三种,下面分项目详解)
外连接至少会返回一张表的全部内容
1.左外连接
left outer join
从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
注释:在某些数据库中,LEFT OUTER JOIN 称为 LEFT JOIN。

2.右外连接(大致同上)
right outer join
从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。

3.完全连接
full outer join
FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

集合查询
集合操作主要包括:并操作Union、交操作intersect、差操作except
并操作Union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
注:
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
交操作intersect
例子:查询计算机系的学生与年龄不大于19岁的学生的交集
SELECT * from student where sdept='CS'
intersect
SELECT * FROM student where Sage<=19;
注:实际上就是查询计算机系中年龄不大于19岁的学生
select * from Student where Sdept='CS' and Sage<=19;
差操作except
例子:查询计算机系学生与年龄不大于19岁学生的差集
select * from Student where Sdept='CS'
except
select * from Student where Sage<=19;
注:也就是查询计算机系中年龄大于19岁的学生
select * from Student where Sdept='CS' and Sage>19;
sql常用查询命令的更多相关文章
- Eucalyptus常用查询命令
前言: Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) ...
- mysql常用查询命令
转引自:https://www.cnblogs.com/widows/p/7137184.html 常用mysql命令 show variables like 'character_set_clien ...
- SQL 常用的命令 (转)
地址:http://www.cnblogs.com/longly/p/6030609.html 设置SQL语句所用的字符编码:set names UTF8; 判断指定的数据库是否存在:DROP DAT ...
- MySQL常用查询命令(连接查询&子查询)
多张表联合起来查询即为连接查询,可分为: 内连接:等值连接.非等值连接.自连接 外连接:右外连接.左外连接 也就是先把多张表通过某种指定条件用join...on...语法连接起来,然后再进行where ...
- MySQL常用查询命令(单表查询)
查询语法如下: select... from... where... group by... (having)... order by...; 顺序是from (从指定表中) where (具体条件) ...
- SQL常用查询语句及函数
1.日期匹配_获取时间差 select datediff(dd,getdate(),'12/25/2006') --计算从今天到12/25/2006还有多少个月 2.不能通过IP连接数据库 在数据库 ...
- Oracle 学习笔记 常用查询命令篇
1.查询某个用户下有多少张表 有时候很有用 select count(*) from dba_tables t where t.owner='SCOTT';
- Oracle常用查询命令
Oracle查询完整格式如下: Select * from XX where XX group by YY having XX order by YY Select count(*), XX fr ...
- [SQL] 常用查询脚本
查询哪些存储过程使用了某个表 select b.name from syscomments a,sysobjects b where a.id=b.id and a.text LIKE '%ftblo ...
随机推荐
- Linux[Manjaro] 小新15笔记本AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题
Linux[Manjaro] 小新15AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题解决办法 年初尝试将manjaro安装在我的笔记本上就存在这个问题,也一度将我劝退.系统安装在 ...
- Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)
Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 运行src/main/java/org/wfw/chart/Main.java 即可查看 ...
- 内置函数 字符串比较 strcmp 登录密码
1 //内置函数 字符串比较 strcmp 2 // 原理:将两个字符串从首字母开始,按照ASCII码的顺序逐个比较 3 //字符串1 == 字符串2 返回0 4 //字符串1 < 字符串2, ...
- 随着日益增多的新技术,Android开发接下来的路该怎么走?
很多小伙伴们经常问我android移动开发者的走向,一部分人都想多快好省,间歇性踌躇满志.持续性混吃等死 ,只想用CV的开发模式们快速完成工作,然后回家王者农药.其实这种现象很普遍,我想告诉你的是 , ...
- 十分钟带你了解CANN应用开发全流程
摘要:CANN作为昇腾AI处理器的发动机,支持业界多种主流的AI框架,包括MindSpore.TensorFlow.Pytorch.Caffe等,并提供1200多个基础算子. 2021年7月8日,第四 ...
- Java横向技术 网络【笔记】
Java横向技术 网络[笔记] 计算机网络 服务器返回给客户端 http 响应包的状态码有哪几大类?302.304 分别是什么意思? 状态码分为五大类: (1)信息性状态码(Informatio ...
- CVE-2021-21972 vSphere Client RCE复现,附POC & EXP
漏洞简介 vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi.vCenter Server 等一系列的软件.其中 vCenter Server 为 ESXi 的控制中心,可从单一控 ...
- Sqli-Labs less8-10
less-8 前置基础知识: 前几关我们用到了布尔盲注的办法,还有一种盲注就是时间盲注,不仅可以用于有回显的盲注,还能用于没有回显的盲注 函数:sleep(1):等待1秒之后再返回页面做出反应 IF( ...
- LuoguP3167通配符匹配
题意 本题的意思就是给出一段带有 $ ? $ 与 \(*\) 的字符串 (在下面称为\(s\)), $ ? $ 必须占据一个字符位置, \(*\) 可以占据任意位置, 求下面给出几段(在下面称为\(s ...
- redis和memecache有什么区别?
1.memcache所有值均是简单地字符串,redis有复杂的数据类型. 2.memcache不支持数据持久化,redis支持数据持久化. 3.redis速度比memcache快,redis构建了自己 ...