数据库SQL运用(1)
来源:互联网 发布:重新发现社会知乎 编辑:程序博客网 时间:2024/05/21 06:01
--数据库关键字:Top Like In Between As Join InnerJoin LeftJoin RightJoin FullJoin Union
--------------------------------------------------------
--Top
--Top 子句用来截取要返回的数目,如果查询出的数据有成千上百条,那么Top就很有用了,
--可以只取读取结果的前几条,
--select top number|percent 列名 from 表名
use TSqlDemo
select top 3 * from Student --这样取出来的数据是查询结果集的前3行
select top 50 percent * from Student --这样取出来的数据时结果集的50%,如果总共有5条,那么取3条
---------------------------------------------------------
--Like
--Like操作符用用于查询时条件的模式。
select * from Student where Name like '%花'--%是指缺少的字母,%花指的是最后一位是花的人
--n%n指的是第一位和第二位是n的人,%n%指的是中间有n的人
----------------------------------------------------------
--通配符
--%这种符号被称为通配符,在数据库中可以代替一个或多个字符,必须与like一起使用
--%代替一个或多个字符
--_仅代替一个字符
--[N]字符列中的任何单一字符。[a]%代表以a为第一个字母的字符串
--[!N][^N]代表不在字符列中的单一字符.[!a]%代表不以a为第一个字母的字符串
--这些通配符都与Like子句做为Like子句的条件使用
-----------------------------------------------------------
--In
--In顾名思义就是在...中的,在sql语句中用来筛选多个数据
select * from Student where Name in('小花','小荷花')
--In后面要加一个括号,在括号中我们可以指定我们要选择的对象,可以是多个,可以是1个
--对象之间用‘,‘隔开,这样我们就将Name与括号中的多个数据相比较,只要符合其中一个就可以
-----------------------------------------------------------
--between and
--between在where后使用,用于选择在二者之间的数据,可以是数字和字符
select * from Student where Age between 20 and 21--年龄在20和21之间的人,包括20和21
select * from Student where Age not between 20 and 21 --年龄不在20和21之间的人,查询结果中没有20和21
-----------------------------------------------------------
--As
--As可以为表或者列指定名称,只是将显示的名称换了,并没有将数据库中字段的名称真正的换掉
select Name as '名称' from Student
--这样查询出来的结果Name的列头被换为名称,更直观。方便程序
-----------------------------------------------------------
--Join
--Join方便我们从更多的表格中得到结果,有时一张表格满足不了我们的需求,这时候需要用到Join
--现在我们再建一个成绩表,在成绩表中有每个人的学号还有他们的成绩,在学生表中的学号这一列是主键,是不会重复的
--成绩表中的SNum和Student表中的Num是一个字段,他们将2张表联系起来,这样即使姓名相同,学号也可以区分他们
--现在我们想要知道谁考了多少分,就需要从查询成绩表,然后去学生表拿名字
select Student.Name,Score.Math from Score,Student where Student.Num=Score.SNum
--这是第一种方法,我们可用通过多表的结合查询,下面用join的方法
select Student.Name,Score.Math from Score inner join Student on Student.Num=Score.SNum
--inner join on 需要注意的是from后面的表名和inner join后面的表名不能相同
--on后面是我们关联查询的查询依据,在on的后面我们同样可以查询条件的字句,
select Student.Name,Score.Math from Score inner join Student on Student.Num=Score.SNum where Math >90 order by Score.Math desc
--where 一定要在order by 的前面
------------------------------------------------------------
--Join还有几个相似的查询,如left join InnerJoin LeftJoin RightJoin FullJoin
--上面我们所做的例子是Inner join ,下面我们看看他们的不同
--inner join: 表中有一个匹配项时,显示行
--left join: 即使右表中没有匹配,也返回左表的所有的行
--right join: 即使左表中没有匹配,也返回右表的所有的行
--full join: 只要其中一个表中存在匹配,就返回所有表的行
--下面我们做实验来测试这几种join
select Student.Name,Score.Math from Student left join Score on Student.Num=Score.SNum
--返回的结果是,他把学生表里的全部数据都返回的,如果没有score的则显示未NULL
select Student.Name,Score.Math from Student right join Score on Student.Num=Score.SNum
--返回的结果是,他把成绩表中所有的数据都返回了,如果在学生表里没有,则在Name处显示null,当然我们之前做过外键
--所以在成绩表中的人必须在学生表里存在,大家可以去掉外键之后试试
select Student.Name,Score.Math from Student full join Score on Student.Num=Score.SNum
--full顾名思义就是全部,不管你们有没有匹配我全都给你返回
-------------------------------------------------------------
--union
--union可以将查询出的2张表结合在一起,但是前提是他们的查询语句必须一样
--查询出的结果必须一样,行数必须一样,就是2张一样的表不同的就是数据,
--表的结构必须吻合,这样才可以合并在一起
select * from Student
union
select * from Score
--------------------------------------------------------------
- 数据库SQL运用(1)
- sql数据库的基础运用
- SQL Server 游标运用:批量备份数据库
- 运用PowerDesigner生成sql文件设计数据库
- 数据库-过程 PL/SQL 的运用
- Android 数据库(SharedPreferences运用)
- 数据驱动在QTP中的运用(四) - 使用SQL数据库
- 数据库多表连查SQL运用Join语句和聚合语句(Group By)
- 数据库SQL函数的基本运用(后续组函数or聚合函数)
- <学习(总)>数据挖掘原理与运用-sql server2008数据库
- 数据库运用
- 活地运用SQL Injection做数据库渗透
- C# 运用SQLDMO备份和恢复Microsoft SQL Server数据库
- sql Server 2000 分区视图的运用(分布式数据库)
- SQLite数据库的使用之运用SQL语句
- <学习笔记>数据挖掘原理与运用-sql server2008 数据库
- java程序运用JDBC连接sql sever数据库
- Node.js运用mssql模块链接SQL Server数据库
- Google向HTC提供专利 助其起诉Apple
- poj1523割点&&块
- VC下Debug和Release区别
- xp中iis访问错误:用户过多 解决方法
- SQLite 引用属性 文件属性如何设置!?
- 数据库SQL运用(1)
- 对于setComponentEnabledSetting的副作用了解
- 在ASP.NET中记录错误日志
- Ubuntu 下 配置 SSH服务全过程及问题解决
- 获得数据库自动生成的主键
- IE(微软)浏览器扩展开发初探
- Extjs 多个参数传递
- #include <> 和#include " "的区别
- linux连接mysql命令