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 ...
随机推荐
- Python3-socketserver模块-网络服务器框架
Python3中的socketserver模块简化了编写网络服务器的任务 在实际的开发中,特别是多并发的情况下,socket模块显然对我们的用处不大,因为如果你要通过socket模块来实现并发的soc ...
- 一文说通MongoDB via Python操作
Python并不仅仅是一个做Machine Learning的语言. 说到Python,一般都会感觉它关联着ML,如果不是做ML开发,就会觉得离自己很远.而实际上,作为一门语言,Python在应用 ...
- CSDN首页
打开CSDN首页,大部分的内容都是——AI,大数据,Python,很少谈及C#,谈到了也是拿C#做反面对比.博客园的首页没有这种恶意诋毁的言论,什么都有,.net的文章也很多,你发你的大数据和AI,我 ...
- bitbucket的简单使用
1.如果你已经把项目建好的话,那么提交上去这样:没有构建本地仓库的话,那先打包本地,到你的项目路径上去后git initgit remote add origin https://linjiayu@b ...
- 《The Design of a Practical System for Fault-Tolerant Virtual Machines》论文总结
VM-FT 论文总结 说明:本文为论文 <The Design of a Practical System for Fault-Tolerant Virtual Machines> 的个人 ...
- 集训之各种dp
1.线性 「BZOJ1609」麻烦的聚餐 分别求一遍连续非下降/上升子序列长度,用总长减去,取最小值即可,主要\(O(n^2)\)优化 Code #include <cstdio> #in ...
- Mysql 查找表中的多组前n大元素
博客已搬家,更多内容查看https://liangyongrui.github.io/ Mysql 查找表中的多组前n大元素 如果时单组很简单,只需要排序后去前n个就行了,但是多组排序似乎就不是那么好 ...
- The Shortest Statement,题解
题目链接 分析: 还是很明白的题意,直接分析问题,首先,这一题真的是给spfa用武之地,m比n大不超过20,但是这并不能使暴力不t,我们考虑一下如何改进一下,我们这样想,这个图只比它的生成树多最多21 ...
- Shein一面(视频面)07.07
应聘职位:Java工程师 时长:30min 面经: Spring讲一下 SpringAOP用到什么设计模式 JVM包括什么 运行时数据区包括什么 什么时候入栈,出栈 Sychronized和可重入锁区 ...
- 1.Unity3d的新建场景和保存场景
Unit3d开发游戏需要使用场景.一个游戏可以有多个场景,每个场景负责一个地图或者一片区域.游戏界面的显示,因此场景非常重要. 1.File->New Scene(Ctrl+N)新建场景 2.F ...