sql数据库常用功能(SQL是功能强大的数据库语言)
时间:2023-09-10 11:10:12 整理: • 4人看过
SQL(结构化查询语言)是一种功能强大的数据库语言。SQL通常用于数据库通信。ANSI(美国国家标准协会)宣称SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库操作任务,如更新数据库中的数据或从数据库中检索数据。常用的使用SQL的关系数据库管理系统有:Oracle、Sybase、Microsoft SQL Server、Access、Ingres等。尽管大多数数据库系统使用SQL,但它们也有自己的系统专有扩展函数。然而,诸如“选择”、“插入”、“更新”、“删除”、“创建”和“删除”之类的标准SQL命令通常用于完成大多数数据库操作。
但是,与C、Pascal等其他语言不同,SQL没有循环结构(如if-then-else、do-while)和函数定义等函数。而且SQL只有一个固定的数据类型设置,换句话说,在使用其他编程语言时,你无法创建自己的数据类型。
SQL功能强大,但简而言之,它可以分为以下几组:
DML(数据操作语言):用于检索或修改数据;
DDL(数据定义语言):用于定义数据的结构,如创建、修改或删除数据库对象;
DCL(数据控制语言):用于定义数据库用户的权限。
这是原始表(教师表),包含教师编号等信息。在这个表中,工作时间,政治面貌等等都是我们不需要知道的信息,所以我们要有选择性的选择。
这是在SQL视图中输入的代码(这里不列出如何打开SQL视图)。
代码的含义是:选择“教师编号、姓名、性别、联系电话”四列,列的来源是“教师”的表。
这是最终结果。我们可以看到只有“教师编号、姓名、性别、联系电话”这一栏和我们想要的政治面貌不在其中。
扩展1:
SELECT DISTINCT语句
Role:在一个表中,可能包含重复的值。这不是问题,但有时您可能希望只列出不同的值。关键字DISTINCT功能是返回一个唯一的值。
语法:
从表名中选择不同的列名
示例:
老师名单里有两个人名字叫蒋晓阳,这里只选蒋晓阳示范。
在原表格中,我们可以看到“教师编号”为09和16的两个人的名字都是蒋晓阳。
这是SQL代码。代码分析是:在名为“姓名”的列中选择唯一值,列的来源是表“教师”。
这就是结果。可见他只选择了一个蒋晓阳。没有第二个蒋晓阳。
扩展2:
SELECT表达式(列名)语句
功能:我们在选择信息时,往往希望直接获得一些间接信息。比如我想知道班级的平均分。
语法:
SELECT表达式(列名)FORM表名
例:这是一个“选课成绩”表,有一个“分数”栏,希望直接得到平均分。
这是原表。
SQL代码图,名词解释:AVG:对每组中的指定字段进行平均。(附录中列出了更多的函数和逻辑运算符。)
AS:为指定的列或表指定别名。(因为AS没有太多内容,一个扩展就不单独列出来了。)
代码分析:选择“等级”这一列,计算该字段的平均值,将该字段重命名为“等级平均值”。本栏目来源表为“选修成绩”表。
这是结果图。通过计算,我们可以知道分数栏的平均值是72.46。
[/h 2.2 WHERE子句
Role:WHERE子句用于指定选择标准。WHERE后跟一个条件表达式。如果希望有条件地从表中选择数据,可以在SELECT语句中添加WHERE子句。
语法:
从条件表达式所在的表名中选择列名
例:比如我想知道一个叫“洪志伟”的学生的信息。
这是原始表,包含了很多条学生信息。我们可以看到,第一个是“洪志伟”的信息,我们的目的是选取他的信息。
代码图,代码分析:选择所有字段名称,字段的源表是“学生”表,选择条件是“姓名”等于“洪志伟”记录。
结果图显示,虽然源表中有n条记录,但只选择了一条记录。他叫洪志伟。
扩展:和&;OR运算符
Role:AND和OR运算符用于根据多个条件筛选记录。AND和OR运算符AND和OR可以在WHERE子语句中组合两个或多个条件。如果第一个条件和第二个条件都为真,AND运算符将显示一条记录。如果第一个条件和第二个条件中只有一个成立,则OR运算符显示一个。
语法:从表名中选择列名,WHERE条件和/或条件。
注:和&;或者可以嵌套!
例:我想选择“山东省所有男生”或“北京所有女生”。
这是原始表,数据很多,很乱。刷选择查找记录很麻烦,所以选择SQL查询。
代码图,代码分析:选择所有字段,字段的来源是“学生”表。选择标准为“性别为男,简历为山东省学生”或“性别为女,简历为北京市学生”(本想先做个简单的AND/OR陈述,再做几个扩展介绍嵌套的使用,但觉得太浪费,嵌套也不难理解。请注意,嵌套需要用括号()括起来!)
2.3 GROUP BY子句
函数:GROUP BY语句与total函数结合使用,根据一个或多个列对结果集进行分组。
语法:选择一个或多个列名,可以用函数连接。
FROM表名
WHERE条件表达式
按列名分组
例:要求在“选课成绩”表中列出“课程号”从“110-120”的平均课程成绩。
在原表中,原表中的每门课程都有n个学生的选择,其分数也有n项。为了直观显示,我们来求用整数表示的平均值。
SQL代码图,名词解释:INT:取数值为整数,如果72.2显示为72,四舍五入。
WHERE子句中使用了[/h BETWEEN AND: BETWEEN运算符,并且BETWEEN...并选择两个值之间的数据范围。这些值可以是数值、文本或日期。
代码分析:选择课程号和年级两个字段,计算年级字段的整数平均值,重命名为年级平均值。该字段的源表是“选课成绩”表。选择记录的条件是“课程号在110–120范围内的记录”,然后按照课程号分组。
成绩图中,课程号只显示110-120条记录,平均分也是整数。!
扩展:HAVING子句
函数:在SQL中添加HAVING子句的原因是WHERE关键字不能与total函数一起使用。同时,HAVING后面是GROUP BY语句,它提供了一个组的条件表达式。
语法:选择一个或多个列名,可以用函数连接。
FROM表名
WHERE条件表达式
按列名分组
具有组条件表达式
例:上例进一步精确选取数据,只选取平均分在75分以上的记录。
因为是上一个例子的延续,原图不再列出。
SQL代码图,代码解析:在原代码基础上增加HAVING子句。为了让数据更准确,为了让大家更清楚的知道WHERE和HAVING的区别,这里给大家一张图。
可以看看上面写的什么。在WHERE子句中不能使用聚合函数!如果我们想得到一个平均值大于某个数字的记录。我们不能使用WHERE子句,所以这个时候必须使用HAVING,而且需要注意的是,HAVING用在GROUP BY语句之后。
在成绩图中可以看到,110-120区间只有两门课的平均分在75以上。
[/h 2.4 oRDER BY子句
Role:ORDER BY语句用于根据指定的列对结果集进行排序。默认情况下,ORDER BY语句按升序对记录进行排序。如果你想按降序排列记录,你可以使用desc关键字。
语法:
选择一个或多个列名,可以用函数连接。
FROM表名
按列名排序
例:让教师表中的记录按男女排列。
原表,按老师号排列。
SQL代码图,代码分析:选择所有字段,字段的源表是“教师”表,表的排序基于表中的“性别”字段。
在结果图中,我们可以看到表格是按照性别排序的,男性排在前面,因为男性的拼音是“nan”,女性的拼音是“nv”,access中的汉字是按照汉语拼音的字母顺序排序的。
扩展:综合应用
选择一个或多个列名,可以用函数连接。
FROM表名
WHERE条件表达式
按列名分组
具有组条件表达式
ORDER BY列名DESC
因为ORDER BY子句是对结果的重新排序,所以这里没有和多个语句结合使用,只是告诉大家可以和之前学过的结合使用!
示例:按降序对上一个示例的结果进行排序。
原图未按原样提供。
SQL代码图,代码分析:同上例,只是降序排列。
结果图,我们可以看到前面结果图的顺序正好相反,这次是女方先来。
[/h 2.5插入到语句中
函数:INSERT INTO语句用于向表中插入一条新记录。
!!注意,在添加记录之前,必须先检查添加的记录表的字段设置属性,查看字段是否设置为not be 空或字段的最大值等。
语法:
插入到表名值(值1,值2,...)
注意:因为插入了表的所有列值,所以可以忽略列名。
我们还可以指定要插入数据的列:
插入到表名(第1列,第2列,...)值(值1,值2,...)
说明:如果插入的知识表的某些列有值,则必须列出相应的列名。未列出的列名采用空的值。
示例:向Students表中添加记录。
原图中,表中第一条记录是“洪志伟”。
SQL代码图,代码分析:在“学生”表中的“学号、姓名、年龄、简历”字段添加一条新记录,记录内容为“学号1991,姓名黄,年龄18,简历广东省”
注意:由于添加的记录是不可恢复的,access会弹出一个警告框,询问您是否确定要这样做。
结果图表显示记录已成功添加,未选中的字段为空值。
扩展:高级应用程序
功能:向一个表中添加一条由多个表组成的新记录。
语法
将添加的记录的名称插入到表中(第1列,第2列...)
选择表1。第1栏,表1。第2栏,表2。第1栏,表3。第一栏。
来自表1、表2和表3
WHERE条件表达式;
例:做一个补考清单。
原表图,是一个空表。向表中添加记录时,必须确认该表的存在以及字段的属性。这是我刚刚创建的一个新表。字段属性都是文本,没有任何限制。我使用SQL在这里构建了这个表。可以使用CREATE TABLE语句关于创建新表的SQL代码,因为本教程只介绍基本的SQL内容,所以这里不列出。如果有必要,我会再写一篇相对高级的教程。
SQL代码图,代码解析:在“补考人员列表”中的“学号、姓名、课程名称、成绩”字段添加记录。添加的新记录来自学生表中的学生编号、学生表中的姓名、课程表中的课程名称以及课程选择分数中的年级。选择条件是选课成绩中的分数小于60,并且这些表中的学生表中的学号等于选课成绩中的学号,课程表中的课程号等于选课成绩中的课程号。同样,因为这个操作是不可恢复的,所以会弹出一个警告框!在这里,您还可以使用INNER JOIN语句来连接这三个表的相同字段。出于同样的原因,这里没有列出。
结果图显示所有分数低于60的记录都被选中。显示结果也很直观,三个表的数据是链接的。
[/h 2.6更新语句
函数:Update语句用于更新和修改表中的数据。
语法:
更新表名
SET column name =要更改的新值。
WHERE条件表达式
注意:WHERE子句用于确认要修改数据的目标列。
示例:修改错误数据。
这是上一个示例中由INSERT INTO语句插入的记录。这里与前一个例子不同的是,“黄”在这里是团员,没有填写入团日期。我们使用UPDATE来填充它。
SQL代码图,代码分析:
更新“学生”表,更新后的设置为:将入学日期更新为“2009年4月22日”,学号改为“000000”,团员改为“非团员”。更新的列是名称等于“黄”的列。
注:对“团员=假”有疑问,因为我通过其他语言打了个比方,在王老师的指导下,错了。当然,使用SQL完全没有问题,在这里只是给大家一个参考。
结果图,数据在我们进入时已经完全更新修改!
扩展:ALTER TABLE语句
函数:ALTER TABLE语句用于添加、修改或删除现有表中的列。
语法:
若要向表中添加列,请使用以下语法:
更改表表名
添加列名字段属性(文本、时间和日期等。。)
若要删除表中的列,请使用以下语法。
更改表表名
删除列列名
注意:有些数据库系统不允许这种删除数据库表中列的方法(DROP COLUMN name)。
若要更改表中某列的数据类型,请使用以下语法:
更改表表名
更改列名字段属性
例:在选课评分中增加一个字段“评价”,将90分及以上学生的评价更新为优秀。
这是原表,里面没有“评估”字段。因为不能同时使用ALTER TABLE语句和UPDATE语句。所以我们必须分别得到两个SQL代码。。
SQL代码图,代码分析:在“选课得分”表中增加一个长度为255的文本字段。应该注意的是,在运行这个SQL代码时,必须确保添加了列的表没有打开。
结果图显示评估字段已成功添加。
代码图,代码分析:更新“选课结果”表中的数据,设置评价为“优秀”,以“结果”大于等于“90”为条件更新字段。
在结果图表中,“得分”字段大于或等于“90”的记录的“评估”已更改为“优秀”!
[/h 2.7删除语句
函数:DELETE语句用于删除表中的记录。
语法:
从表名中删除条件表达式
注意:如果没有WHERE子句,则意味着删除表中的所有记录。如果是,删除满足WHERE条件的记录。
示例:删除student表中从1990年到1992年的所有学生记录。
原图中,入院日期为7月9日。
SQL代码图,代码解析:删除记录,该记录来自“学生”表,删除条件是“开学日期”为1990年初至1992年初。
在成绩图中,我们可以看到入学日期从1992年7月9日开始,之前1990年到1992年的记录已经被删除。
你学过什么SQL知识吗?欢迎分享和转发您的关注。谢谢大家!
,