SQL常用命令汇总
SQL是结果化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据定义、数据操纵和数据控制四个部分。SQL简洁、功能齐全,已成为目前应用最广的关系数据库语言。
一、SQL的发展及标准化
1.SQL的发展
SQL是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段;
(1)1974年,由Chamberlin和Boyce提出,当时称为SEQUEL(Structured English Query Language);
(2)1976年,IBM公司对SEQUEL进行了修改,并将其用于本公司的SYSTEM R关系数据库系统中;
(3)1981年,推出了商用关系数据库SQL/DS,并将其名字改为SQL,由于SQL功能强大,
简洁易用,因此得到了广泛的应用;
(4)今天,SQL广泛应用于各种大型数据库,如Sybase,INFORMIX,SQL Server,Oracle,DB2,INGRES等,也用于各种小型数据库,如FoxPro,Access等。
2.SQL标准化
随着关系数据库系统和日益广泛,SQL的标准化工作也在紧张地进行着,二十多年来已制订了多个SQL标准:SQL-86,SQL-89,SQLL2和SQL-99。
二、SQL的基本概念
1.基本表——一个关系对应一个表。基本表是独立存在的表,不是由其他的表导出的表。
2.视图——是一个或几个基本表导出的表,是一个虚拟的表。它本身不独立存在于数据中,数据库中只存放视图对应的数据,这些数据仍存放在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。
三、SQL的主要特点
SQL有如下几个特点。
(1)SQL是类似于英语的自然语言,简洁易用。
(2)SQL是一种非过程语言。
(3)SQL是一种面向集合的语言。
(4)SQL既是自含式语言,又是嵌入式语言;可独立使用,也可以嵌入到宿主语言中。
(5)SQL是数据库查询(Query)、数据定义(Definition)、数据操纵(Manipulation)和数据控制(Control)四种功能。
创建数据表
语法格式:CREATE TABLE<表名>(<列定义>[{,<列定义>|<表约束>}])
xingm | xueh | chengj | |
张三 | 001 | 78 | |
张竟 | 009 | 100 | |
例:create table s(xingm c(8),xueh c(8),chengj c(3))
xingm | xueh | chengj | |
结果:
数据查询
数据查询是数据库中最常用的操作。SQL提供SELECT语句,通过查询操作可得到所需要的信息。SELECT语句的一般格式为:
SELECT[ALL|DISTINCT][TOP N [PERCENT][WITH TISE]]<列名>[AS 别名 1][{,<列名>[AS 别名 2]}][TNTO 新表名]FROM<表名 1 或视图名 1>[[AS] 表 1 别名][{,<表名 2 或视图 2>[[AS] 表 2 别名]}][WHERE<搜索条件>][GROUP BY<列名 1>[HAVING<条件表达式>]][ORDER BY<列名 2>[ASC|DESC]]
1.查询全般同学的名字:
Select xingm from s
xingm | |||
张三 | |||
李五 | |||
结果:
2.查询学生的全部信息:
Select * from s
xingm | xueh | chengj | |
张三 | 001 | 78 | |
李五 | 002 | 89 | |
结果:
3.查询学号是’001’的成绩:
Select chengj from s where xueh=’001’
结果:
Chengj | ||
78 | ||
4.查询成绩及格且姓李同学的所以信息:
Select xueh from s where chengji>=60 and xingm like ’张%’
xingm | xueh | ||
欧阳 | 034 | ||
侗剧 | 021 | ||
结果:
5.查询选课不是’c1’或’c3’同学的所有信息:
Select xingm,xueh from s where xuank<>’c1’ and xuank<>’c3’
Xingm | ||
马蔺 | ||
臼海 | ||
结果:
等价于:Select xingm,xueh from s where xuank not in (‘c1’,’c3’)
6.查询没选课同学的名字:
Select xingm from s where xuank is null
结果:
pingj | ||
80 | ||
Expr1 | ||
6758 | ||
7.查询全班的平均成绩:
Select avg(*) as pingj from s
结果:
xingm | Axpel | |
张竟 | 100 | |
8.查询全班数学的总成绩:
Select sum(chengj) from s where kec=shux
结果:
Expr1 | ||
82 | ||
9.查询最高分同学的姓名:
Select xingm,max(chengj) from s
结果:
10.查询成绩高于80的最低分:
Select min(chengj) from s where chengj>=80
结果:
11.统计选修是’c1’的同学人数:
Select count(*) as c1shu from s where xuank=’c1’
C1shu | ||
34 | ||
结果:
12.统计成绩在70~80选修’c2’是的人数:
Select count(*) from s where chengj>=70 and chengj<=80 and xuank=’c2’
Expr1 | ||
12 | ||
结果:
13.查询选修三课以上的同学学号:
Select xueh,count(*) as zong from s group by xuank having(count(*)>=3)
xueh | Zong | |
023 | 3 | |
008 | 3 | |
结果:
14.查询学校有多少选修课可选择:
Select count(distinct xuank) from s
Expr1 | ||
67 | ||
结果:
15.给选课是’c1’的同学升序排名:
Select xingm,xueh from s where xuank=’c1’ order by chengj
xingm | sql语句实现的四种功能 Xueh | ||
柳举 | 007 | ||
戈缶 | 039 | ||
胡枯 | 067 | ||
张三 | 001 | ||
结果:
16.按总分降序排名:
Select xingm from s order by zongf
xingm | |||
浮虎 | |||
书噶 | |||
啊宰 | |||
结果:
17.给选修两课、总分高于500且课程成绩不低于90的同学降序排名:
18.select xueh,count(*) from s group by xuank having(count(*)=2 where zongf>=500 and chengj>=90
xueh | Expr1 | ||
009 | 2 | ||
056 | 2 | ||
045 | 2 | ||
结果:
19.给成绩在70~80之间并且有选课的同学按总分降序排名:
Select xingm,chengj from s where xuank is not null and chengj>=70 and chang<=80 order by zongfen
xingm | Chengj | ||
呀户 | 70 | ||
杜盐 | 78 | ||
煞湖 | 73 | ||
结果:
20.给总分在600~610分之间的学生按总分降序排名,总分一样的按课程的成绩sh升序排名:
Select xingm,xueh,zongf from s where zongf in(600,610) order by zongf desc,chengj asc
xingm | xueh | Zongf | |
王二 | 029 | 605 | |
赵大 | 045 | 609 | |
刘小 | 017 | 601 | |
结果:
数据表连接及连接查询
用户可能对数据库中的多个表进行操作,即为连接查询,它的结果集或结果表即为表之间的连接。
1.查询两个表连接后的所有信息:
Select * from s,t
结果:
Xingm | xueh | xuank | xming | kcheng |
杨能 | 001 | jiy | 勒乐 | jiy |
杨能 | 001 | Jiy | 斐在 | shengh |
郭好 | 002 | Shengh | 勒乐 | jiy |
郭好 | 002 | Shengh | 斐在 | shengh |
谢客 | 003 | Jiy | 勒乐 | jiy |
谢客 | 003 | Jiy | 斐在 | shengh |
2.查询教学号’002’为的学生的选修老师的姓名:
Sing from s,t where s.xuank=t.kcheng and s.xueh=’002’
xming | ||
斐在 | ||
结果:
3.三个表连接到教’002’学生的老师姓名及编号:
Select xming,bhao from ss,tt,kk where ss.xueh=’002’ and ss.xuank=kk.xke and kk.keh=tt.khao
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论