SQL查询基本用法
-- 单列查询
select 编号 from employees -- 多列查询
select 编号,姓名 from employees -- 查询所有列
select * from employees -- 将查询结果创建新表
select 编号,姓名 into 新表 from employees -- 为查询结果的列创建别名
select 编号 学号 , 姓名 as 昵称 , 出生日期 = 生日 , 地址 '家庭住址', 电话 "家庭电话" from employees -- 多表查询设置别名
SELECT employees.[姓名] , [ Salary ].收入 as 工资 FROM employees , [ Salary ] where [ Salary ].[编号]=employees.[编号] -- 为计算结果设置别名
select (收入 - 支出 ) as 纯收入 from [ Salary ] -- 删除重复数据 DISTINCT 必须在最前面,表示删除输出的行完全一样的,还带升序
select distinct 支出 from [ Salary ] -- 在SQLServer中限制查询结果 只显示前5
SELECT TOP 5 * FROM employees -- 在MySQL中限制查询结果 只显示前5和编号5开始的前10条数据
SELECT * FROM employees limit 5
SELECT TOP 5 * FROM employees limit 5 ,10 -- 在Oracle中限制查询结果
SELECT * FROM employees where rownum<= 5; -- 连接列值,在Oracle会报错因为拼接字符串使用||
SELECT 姓名+地址+电话 As 个人信息 from employees -- 条件查询
SELECT * FROM [ Salary ] where 收入>3000 -- 范围查询 BETWEEN ...And ... ,包含边界,也可以查询两个日期之间的数据
SELECT * FROM [ Salary ] where 收入 BETWEEN 2400.8 and 3160 -- 获取当前日期
SELECT GETDATE();
-- 函数表达式CONVERT(date_type[(length)],expressoon,style) mysql中使用DATE_FORMAT(date,format) Oracle中使用TO_CHAR(date,format)
-- 可以将长日期转换成短日期格式数据
CONVERT( char(10),getdate(),120)
-- REPLACE(CONVERT( char(10),getdate(),120), '-', '/')可以将日期中— 变成/
-- DATEDIFF(单位, 开始, 结束)计算两个日期间隔天数
-- DAY(日期)返回那一天
-- MONTH(日期)返回那个月份
-- YEAR(日期)返回那一年
-- 逻辑运算符优先等级 not and or -- 使用in操作符过滤数据,相当用多个or
SELECT * from employees where 姓名 in ('程锋' , '李丽' ,'刘明')
SELECT * from employees where 姓名 not in ('程锋' , '李丽' ,'刘明')
SELECT * from employees where 姓名 in (SELECT TOP 2 姓名 from employees)
SELECT * from employees where '程锋' in (姓名) -- SQLsercer:CAST(数值 AS 类型)数据表类型转换
-- LTRIM(character_expression)去除左空格 -- 模糊查询like %任意0或多字符 _ 任意单字符 []表示范围 ^[]范围外
-- ESCAPE定义转义字符,使各以上通配符能做正常使用
-- 匹配xx5%
SELECT * from employees where 姓名 like '%5/%' ESCAPE '/' -- 查找指定行,则查询前n性,再查询前n-1行,使用NOT EXISTS 操作符删除重复,进而得到n
-- SQLSrever 随机一行
SELECT top 1 * from employees ORDER BY NEWID()
-- MySQL随机一行
SELECT * from employees ORDER BY RAND () limt 1 -- 查询空值
SELECT * from employees WHERE 姓名 IS NUll
SELECT * from employees WHERE 姓名 IS not NUll
-- 空值处理
SELECT 姓名,生日, ISNULL(地址, '北京') as 住址 FROM employees
-- mysql只能使用ISNULL()单个参数判断是非为空,空就为1,否则就0 -- 排序
SELECT * from employees ORDER BY 编号 ASC
SELECT * from employees ORDER BY 编号 DESC
-- 也可以使用别名排序
-- 多对列排序也就是进行多级排序
-- 优先顺序从左到右
-- 获取说有排序规则 跟在order by后面COLLATE 设置排序规则
select *from ::fn_helpcollations() -- 聚合函数
-- SUM():数字求和 AVG():数字求平均
-- MIN:数字字符日期求最小
-- MAX:数字字符日期求最大
-- COUNT:统计行数量 null不统计·也可使用DISTINCT 统计不重复
-- 多个聚合函数在SQL Server中不能嵌套
-- 在Oracle中嵌套必须设置group by -- 分组统计
SELECT 性别 ,COUNT(*) as su FROM employees GROUP BY 性别
SELECT 性别 ,min(生日) as su FROM employees GROUP BY 性别
-- 可以进行多列分组,列必须是查询表中的列,结果为总的
-- 可利用ROLLUP和CUBE和WITH关键字对 GROUP BY 进行分类汇总和总汇总
-- 可使用having子语句对分组组内过滤,和where类似,但是不能离开group by单独使用
-- GROUP BY的列不一定要在select列中出现 -- 子查询最多32层,使用(),任何使用表达式的地方都可以使用子查询,只要返回是单个值
-- 不能有order by
-- 使用in和not in实现子查询的交集和差集运算
-- EXISTS判断子查询结果是否存在数据行
-- ALL操作符比较子查询中的每一个值只有全为true,结果才为true
-- some和any是一样的
SELECT [编号], [收入] from [ Salary ] where [收入]>any(SELECT AVG(收入) FROM [ Salary ]) -- 内连接:使用比较运算符进行列和列之间的比较
SELECT [姓名],[地址],[收入]from employees,[ Salary ]where employees.[编号]=[ Salary ].[编号]
SELECT [姓名],[地址],[收入]from employees INNER join [ Salary ] ON employees.[编号]=[ Salary ].[编号] -- 外连接:将某些不满足连接条件的数据也在连接结果中输出
-- 左连接:保留第一个表中所有行,
SELECT [姓名],[地址],[收入]from employees left join [ Salary ] ON employees.[编号]=[ Salary ].[编号] -- 右连接:保留第2个表中所有行,
SELECT [姓名],[地址],[收入]from employees right join [ Salary ] ON employees.[编号]=[ Salary ].[编号] -- 全外连接:保留左右连接
SELECT [姓名],[地址],[收入]from employees full join [ Salary ] ON employees.[编号]=[ Salary ].[编号] -- 交叉连接
SELECT [姓名],[地址],[收入]from employees cross join [ Salary ] -- 组合查询:必须两个以上的select语句,语句之间用union 关键字分隔
-- 每个列中的数目、类型相同或兼容
-- union all 返回重复行
SQL查询基本用法的更多相关文章
- Mybatis传递多个参数进行SQL查询的用法
当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参数,并代入查询. 但是,如果在xxxMapper.java文件中 ...
- SQL学习:查询的用法(1)
在SQL servre的使用中,查询的用法是最多的.最重要的,也是最难学习的,因此掌握查询的用法很重要. 先将表的示例上图 员工表: 部门表: ...
- 【SQL】各取所需 | SQL JOIN连接查询各种用法总结
前面 在实际应用中,大多的查询都是需要多表连接查询的,但很多初学SQL的小伙伴总对各种JOIN有些迷糊.回想一下,初期很长一段时间,我常用的似乎也就是等值连接 WHERE 后面加等号,对各种JOIN也 ...
- SQL查询关于相对路径、矢代、绝对路径、递归、计算列的速度对比跟优化-SOD群记录
1秒查原本递归的查询. 适用于:上下级.多层查询 -- Get childs by parent id WITH Tree AS ( SELECT Id,ParentId FROM dbo.Node ...
- 【T-SQL基础】01.单表查询-几道sql查询题
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
- 用sql查询当天,一周,一个月的数据
用sql查询当天,一周,一个月的数据 数据查询,不管在网站还是在系统,都很常见,下文是介绍最常见的以日期查询的语句 select * from ShopOrder where datediff(w ...
- SQL 查询总结
参考资料: SELECT 查询语句格式与简单查询 SQL中distinct的用法 SQL 查询总结
- 15个初学者必看的基础SQL查询语句
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...
- (转)经典SQL查询语句大全
(转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...
随机推荐
- 入门大数据---Spark_Streaming基本操作
一.案例引入 这里先引入一个基本的案例来演示流的创建:获取指定端口上的数据并进行词频统计.项目依赖和代码实现如下: <dependency> <groupId>org.apac ...
- JDK8--07:并行流与串行流
JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongSt ...
- 关于WebServices的调用
1.使用soapui测试接口是否能通 具体操作步骤请查看:https://www.cnblogs.com/BINDAI/p/13201513.html Soapui请求结果集 2.获得soapu ...
- css实现左边定宽右边自适应的5种方法总汇
在网页布局中,通常需要实现左边定宽右边自适应布局,默认html的结构如下: <div class="box"> <div class="left&quo ...
- 6.22 集训--DP复习一
总结 下午的突击练习完全不在状态 A.拦截导弹简单版 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发 ...
- LeetCode 哈希表 380. 常数时间插入、删除和获取随机元素(设计数据结构 List HashMap底层 时间复杂度)
比起之前那些问计数哈希表的题目,这道题好像更接近哈希表的底层机制. java中hashmap的实现是通过List<Node>,即链表的list,如果链表过长则换为红黑树,如果容量不足(装填 ...
- Linux系统安装JDK8
一.卸载现用的JDK 1.查看Linux自带的JDK是否已安装 查看是否安装openjdk,java -version (yum安装的 一般都是 OpenJDK 命令:yum install ...
- Docker 安装并使用mysql
上一篇介绍了Docker在CentOS中的安装,本文介绍如何在Docker中安装并使用mysql 1.拉取最新的mysql镜像 [root]# docker pull mysql 2.查看已有镜像 [ ...
- Flutter 1.17 新 Material motion 规范的预构建动画
老孟导读:在 Flutter 1.17 发布大会上,Flutter 团队还发布了新的 Animations 软件包,该软件包提供了实现新的 Material motion 规范的预构建动画. 软件包 ...
- python 输出日志到文件和控制台
import logging # 第一步,创建一个logger logger = logging.getLogger() logger.setLevel(logging.INFO) # Log等级总开 ...