SQL教程(精)
SQL 语言培训
网络通讯室 王鹏飞
目录
SQL语言简介 几种常用的sql运算方法 查询条件 联合查询 分组查询 子查询 增删改
SQL语言
SQL (Structured Query Language)既结构化查询 SQL语言 语言
Structured, Query Language包含4个部 分:
几种常用的sql运算方法— As的用法
AS是给现有的字段名另指定一个别名的意思,当字 段名是英文或拼音缩写时,采用汉字替代之后可 以给阅读带来方便
几种常用的sql运算方法— AS用法
select empno as 学号,name as 姓名 from db.tbxxempno Select 学号,姓名 from (select empno as学号,name as 姓名 from db.tbxxempno) Select a.* from (select empno as学号,name as 姓名 from db.tbxxempno) a Select a.* from (select empno as 学号,name as 姓 名 from db.tbxxempno) a where a.学号='001‘ Select a.* from (select empno as 学号,name as 姓 名 from db.tbxxempno) a where a.empno='001'
//查询学生基本资料
范例:SELECT
FROM WHERE ORDER BY
compid, empno, name,sex
DB.tbxxempno sex = ‘1’ empno
看看下面的各条语句之间的区别
Select * from db.tbxxempno Select * from db.tbxxempno order by empno Select * from db.tbxxempno order by empno desc Select * from db.tbxxempno order by empno asc select * from db.tbxxempno order by sex ,empno select * from db.tbxxempno order by sex ,empno desc
查询条件where-----and,or
//and 与条件,查询即要满足and前的语句,又要满足and后的语 句的资料 select * from db.tbxxmark where subjectno = '01' and empno ='001‘ //or 或条件,查询即要满足or前的语句的资料,又要查询出满足 or后的语句的资料 select * from db.tbx39; or empno ='001‘ //先执行and再执行or select * from db.tbxxmark where empno ='001' and subjectno = '01' or empno ='002' select * from db.tbxxmark where empno =‘001’ and ( subjectno = ‘01’ or empno =‘002’ )
几种常用的sql运算方法—subtr()
select substr(compid,0,1) as str from db.tbxxmark where subjectno||empno='01001‘
select substr(compid,2) from db.tbxxmark where subjectno||empno='01001'
几种常用的sql运算方法—subtr()
SQL 中的 substring 函数是用来抓出一个栏位资料中的 其中一部分。这个函数的名称在不同的资料库中不完全一 样: MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING() 最常用到的方式如下 (在这里我们用SUBSTR()为例): SUBSTR(str,pos): 由<str>中,选出所有从第<pos> 位置开始的字元。请注意,这个语法不适用于SQL Server上。 SUBSTR(str,pos,len): 由<str>中的第<pos>位置开 始,选出接下去的<len>个字元。
查询条件where-----like,not like
Like属于模糊查询,通常与通配符“%”联合 使用。 select * from db.tbxxmark where subjectno like '%1%‘ select * from db.tbxxmark where subjectno like '%1' select * from db.tbxxmark where subjectno like '1%‘ select * from db.tbxxmark where subjectno not like '%1%'
查询条件where-----in ,not in
in ,not in 集合查询 查询课程号为‘01’‘02’的所有资料 使用字符集 select * from db.tbxxmark where subjectno in ('01','02') 使用结果集 select * from db.tbxxmark where subjectno in (select subjectno from db.tbxxmark where subjectno ='01') 查询课程号不为‘01’‘02’的所有资料 select * from db.tbxxmark where subjectno not in ('01','02') 注意:所有查询内容都是全表检索,耗时很大。 select * from db.tbxxmark where subjectno ='01' or subjectno = '02'
几种常用的sql运算方法—count()
返回集合中项目的数量(具体数目取决于集合)
//取得所有学生的人数 Select count(*) from db.tbxxempno //取得所有女生的人数 Select count(*) from db.tbxxempno where sex=‘1’
几种常用的sql运算方法—“+,-”
“+,-”可以直接在SQL语句实现的过程中进行计算,但“+,-”所进 行运算的必须为有效数字。 将学号为‘001’课程为01的分数进行运算 select mark from db.tbxxmark where subjectno||empno='01001‘ 加10分 select mark+10 as marknew from db.tbxxmark where subjectno||empno='01001‘ 减10分 select mark-10 as marknew from db.tbxxmark where subjectno||empno='01001‘ 将两个栏位的值进行相加 select mark+subjectno as marknew from db.tbxxmark where subjectno||empno='01001'
几种常用的sql运算方法—distinct()
distinct 这个关键字来过滤掉多余的重复记录只 保留一条,distinct必须放在开头。 //筛选查询一共有几门学科 select distinct subjectno from db.tbxxmark //筛选查询各个学科下面存在的不同的分数 select distinct subjectno,mark from db.tbxxmark
几种常用的sql运算方法—连接运算符“||” //将课程号与学号联接起来 select subjectno || empno as 联接 from db.tbxxmark //查询学号为‘001’课程为01的分数 select mark from db.tbxxmark where subjectno='01' and empno='001‘ select mark from db.tbxxmark where subjectno||empno='01001'
几种常用的sql运算方法—sum()
SUM ()函数返回在给定的选择中一个列的总数, 即求和,注 意sum所计算的列值必须为有效的数字
//计算总分数 select sum(mark) as 总分 from db.tbxxmark //计算学号==‘002’的总分数 select sum(mark) as 总分 from db.tbxxmark where empno ='002‘ //计算学号==‘002’的各课的分数 select sum(mark) as 总分 from db.tbxxmark where empno ='002' group by subjectno //计算各课的分数 select sum(mark) as 总分 from db.tbxxmark group by subjectno
几种常用的sql运算方法—avg()
avg()计算所查询字段的平均值,所计算的列值 必须为有效的数字 //所有科目平均分 select avg(mark) as 总平均分 from db.tbxxmark //数学平均分 select avg(mark) as 数学平均分 from db.tbxxmark where subjectno ='01‘ //学号为‘004’的平均分 select avg(mark) from db.tbxxmark where empno='004'