当前位置:文档之家› sql语句基础教程

sql语句基础教程

SQL 教程1)SQL 简介SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。

SQL通常使用于数据库的通讯。

ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。

SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。

使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Mi crosoft SQL Server、 Access、 Ingres等等。

虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。

但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"常常被用于完成绝大多数数据库的操作。

但是,不像其它的语言,如C、Pascal等,SQL没有循环结构(比如if-then-else、d o-while)以及函数定义等等的功能。

而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用其它编程语言的时候创建你自己的数据类型。

SQL功能强大,但是概括起来,它可以分成以下几组:DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;DDL(Data Definition Language,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。

2)SQL 常用语句2.1 ??SELECT 语句作用:SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

语法:SELECT 目标表的一个或多个列名称,列名前可加表达式,如:avg(年龄) FROM 目标表的名称;以及:SELECT * FROM 表名称;注释:*代表选取全部。

示例:下面是示范在一个表中选取自己想要的信息,例如我只想要老师们的联系电话。

这是原表(教师表),里面包含了教师编号等等信息,在这个表中工作时间、政治面目等等都是我们不需要知道的信息所以我们要有选择的选取。

这个是在SQL视图中输入的代码(如何打开SQL视图不在这里列举)。

代码的含义是:选取“教师编号,姓名,性别,联系电话“这四个列,列的来源是“教师“这个表这个是最终的结果,可以看到只有我们要的“教师编号,姓名,性别,联系电话“列,政治面目等并没有在里面。

拓展1:SELECT DISTINCT 语句作用:在一个表中,可能会包含重复值。

这并不成问题,不过,有时你也许希望仅仅列出不同(distinct)的值。

关键词 DISTINCT 作用就是用于返回唯一不同的值。

语法:SELECT DISTINCT 列名称 FROM 表名称示例:在教师表中有两个人的名字是江小洋,这里示范只选取江小洋。

在原表中可以看到“教师编号“为09,16的两个人的名字都是江小洋。

这是SQL代码。

代码解析是:选取列名为“姓名“中的唯一值,列的来源是”教师“这个表。

这是结果,可以看到他只选取了一个江小洋。

并没有显示两个江小洋。

拓展2:SELECT 表达式(列名)语句作用:往往我们在选取信息的时候希望能够直接得到一些间接信息。

如,我想要知道班级的平均分。

语法:SELECT 表达式(列名) FORM 表名示例:这是一个“选课成绩“表里面有一个”成绩“列,我希望直接得到成绩的平均值。

这是原表。

SQL代码图,名词解释:AVG:为每一组中的指定字段求平均值。

(更多的函数和逻辑运算符会在附录中列出)AS:为指定的列或表指定一个别名。

(因为AS内容并不多就不再单独列出一个拓展了)代码解析:选取“成绩”列,并计算这个字段的平均值,同时为这个字段重新命名为:成绩平均值,这个列的来源表是“选课成绩”表。

这是结果图,通过计算可以得知成绩列的平均值是72.46.课堂作业:为每个学生计算平均成绩和为每门课程计算平均成绩,并把结果字段更名为“平均值”。

2.2?? WHERE 子句作用:WHERE 子句用于规定选择的标准。

WHERE后面接的是条件表达式,如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句语法:SELECT 列名称 FROM 表名称 WHERE 条件表达式示例:例如我想知道一个名字叫“洪智伟”的学生的信息。

这是原表,里面拥有多条学生信息,我们可以看到第一个就是“洪智伟”同学的信息,我们的目的就是选取他的信息。

代码图,代码解析:选取所有字段名,字段的来源表是“学生”表,选取的条件是“姓名”等于“洪智伟”的记录。

结果图,可以看到虽然来源表中有N条记录当选取到的记录只有一条。

其姓名叫洪智伟。

拓展:AND & OR 运算符作用:AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。

AND和OR 运算符AN D 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条语法:SELECT 列名称 FROM 表名称 WHERE 条件 AND/OR 条件注释:AND&OR可以嵌套使用!示例:我想选取“所有山东省的男生”或“所有北京市的女生”这是原表,数据非常多而且杂乱,用刷选来查找记录的话非常麻烦,所以选用SQL来查询。

代码图,代码解析:选取所有字段,字段的来源是“学生”表。

选取的条件是“性别是男的并且简历是山东省的学生”或者“性别是女的并且简历是北京市的学生”(本来想先做一个简单AND/OR语句再做多个拓展来介绍嵌套的使用,不过觉得太浪费篇幅,并且嵌套不难理解,注意一下嵌套需要用括号()括住就可以了!)课堂作业:选取是团员的男生和简历是山东省的女生。

2.3?? GROUP BY 子句作用:GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

语法:SELECT 一个或多个列名,可接函数FROM 表名WHERE 条件表达式GROUP BY 列名示例:要求列出“选课成绩”表中的“课程编号”从“110-120”的课程成绩平均值。

(呵呵,好像和之前的作业蛮像得=。

=!)原表图,原表中每个课程都有N个学生选,其成绩也有N项,为了直观的显示我们来求以整数来表达的平均值。

SQL代码图,名词解释:INT:将数值取整数,如把72.2显示为72,四舍五入。

BETWEEN?AND : BETWEEN 操作符在 WHERE 子句中使用, BETWEEN ... AND 会选取介于两个值之间的数据范围。

这些值可以是数值、文本或者日期。

代码解析:选取课程编号和成绩两个字段,并且计算成绩字段的整数平均值和更名为成绩平均值,字段的来源表是“选课成绩”表。

选取记录的条件是”课程编号在 110 – 120 这个区间内的记录”,然后根据课程编号来分组。

结果图,课程编号中只显示了110-120的记录,其成绩的平均值也为整数。

!拓展:HAVING 子句作用:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

同时HAVING都是紧跟着GROUP BY 语句出现的,提供一个组的条件表达式。

语法:SELECT 一个或多个列名,可接函数FROM 表名WHERE 条件表达式GROUP BY 列名HAVING 组条件表达式示例:在上一个示例当中更加进一步的精确选取数据,只选取平均分超过75分的记录。

因为是延续上个示例,所以原图一样就不再列出。

SQL代码图,代码解析:在原有的代码基础上添加了HAVING子句。

使得数据更具有精确性,为了让大家更加明确了解WHERE和HAVING的区别在这里在给大家看一个图。

可以看到如作用:哪里所说的。

WHERE子句当中是不能使用聚合函数的!如果我们希望得到一个平均值大于某个数的记录的话。

我们使用WHERE子句的话是做不到的,这个时候就必须使用HAVING了而需要注意的是HAVING是在GROUP BY语句后使用的。

结果图,可以看到110-120区间内只有两门课程的成绩平均值在75分以上。

2.4?oRDER BY 子句作用:ORDER BY 语句用于根据指定的列对结果集进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

语法:SELECT 一个或多个列名,可接函数FROM 表名DRDER BY 列名示例:让教师表里面的记录按照男女排列。

原表图,原表中是根据教师编号来排列的。

SQL代码图,代码解析:选取全部字段,字段来源表是“教师”表,表的排序是根据表中的“性别”字段来排序。

结果图,可以看到表是根据性别来来排序的,先男后女,因为男的拼音是“nan”而女的拼音是“nv”,access中的汉字排序是根据汉字拼音的字母顺序来排序的。

拓展:综合应用SELECT 一个或多个列名,可接函数FROM 表名WHERE 条件表达式GROUP BY 列名HAVING 组条件表达式ORDER BY 列名 DESC因为ORDER BY子句是对结果的重新排序,所以在此就不结合多个语句使用了,只是告诉大家能结合之前所学内容使用而已!示例:对上个示例的结果进行降序排列。

原图一样就不提供了。

SQL代码图,代码解析:和之前的示例一样,只是按照降序排列而已。

结果图,可以看到和之前的那个结果图的排序刚刚相反,这次是女的排在前。

课堂作业:让“教师”表按照性别降序排序,并且“学历”升序排序。

2.5?INSERT INTO 语句作用:INSERT INTO 语句用于向表格中插入新的记录!!注意在添加记录之前一定要先查看被添加记录表的字段设置属性,看看字段有没有设置为不能为空或者字段最大值等等之类的。

语法:INSERT INTO 表名称 VALUES (值1, 值2,....)注释:因为插入的是一个表的全部列值所以列名可以忽略不写。

我们也可以指定所要插入数据的列:INSERT INTO 表名 (列1, 列2,...) VALUES (值1, 值2,....)注释:如果插入的知识表的部分列值的话,则必须列出相应的列名。

没有的列出的列名则取空值。

示例:向“学生”表添加一个记录原表图,表中的记录排第一的是“洪智伟”。

SQL代码图,代码解析:向“学生”表中的“学生编号,姓名,年龄,简历”字段添加一个新的记录,记录的内容是“学生编号为1991,姓名是黄学宇,年龄为18,简历为广东省”注释:因为添加记录具有不可恢复性所以access会弹出个警告框来询问你是不是确定要进行这步操作。

相关主题