热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQL语句简单语法

SQL语句基本的四大元素(增,删,改,查)插入数据语法:INSERTINTO表名(字段1,字段2,...)VALUES(值1,值2,...)其中,INTO可选.例如:将姓名张三学号s2t14年龄22插入到stuInfo表中的stuName,stuNo,stuAge这三个字段中。INSERTINTOstuInfo(stuName,stuNo,st

SQL语句基本的四大元素(增,删,改,查) 插入数据 语法:INSERT INTO 表名(字段1,字段2,...)VALUES(值1,值2,...) 其中,INTO可选. 例如:将姓名张三学号s2t14年龄22插入到stuInfo表中的stuName,stuNo,stuAge这三个字段中。 INSERT INTO stuInfo (stuName,stuNo,st

  SQL语句基本的四大元素(增,删,改,查) 插入数据

  语法:INSERT INTO 表名(字段1,字段2,...)VALUES(值1,值2,...)

  其中,INTO可选.

  例如:将姓名‘张三’学号‘s2t14’年龄22插入到stuInfo表中的stuName,stuNo,stuAge这三个字段中。

  INSERT INTO stuInfo (stuName,stuNo,stuAge) VALUES ('张三','s2t14',22)

  插入多行数据

  1.通过INSERT SELECT语句将现有表中的数据添加到新表

  语法:INSERT INTO 新表名(字段1,字段2,...)SELECT 字段1,字段2,... FROM 原表名

  例如:INSERT INTO TongXunLu(‘Name’,‘Address’,‘Email’)SELECT SName,SAddress,SEmail FROM Students

  2.通过SELECT INTO语句将现有表中的数据添加到新表

  语法:SELECT 表名.字段1,表名.字段2,... INTO 新表名 FROM 原表名

  例如:SELECT Students.SName,Students.SAddress,Students.SMail INTO TongXunLu FROM Students

  因为标识列的数据是不允许指定的,因此我们可以创建一个新的标识列

  语法:SELECT IDENTITY (数据类型,标识种子,标识增长量) AS 列名 INTO 新表名 FROM 原表名

  例如:SELECT Students.SName,Students.SAddress,Students.SMail,IDENTITY(int,1,1)AS StudentsID INTO TongXunLu FROM Students

  3.通过UNION关键字合并数据进行插入

  UNION语句用于将两个不同数据或查询结果组合的一个新的结果集,当然,不同的数据或查询结果,也要求数据个数、顺序、数据类型都一致,因此,当向表中重复插入多次数据的时候,可以使用SELECCT...UNION来简化操作。

  例如:INSERT Students(SName,SGrade,SSex)

  SELECT '女生1',7,0 UNION

  SELECT '女生2',7,0 UNION

  SELECT '女生3',7,0 UNION

  SELECT '女生4',7,0 UNION

  SELECT '女生5',7,0 UNION

  SELECT '男生1',7,1 UNION

  SELECT '男生2',7,1 UNION

  SELECT '男生3',7,1 UNION

  SELECT '男生4',7,1 删除数据

  语法:DELETE FROM 表名 WHERE (条件)

  例如:删除stuInfo表中年龄小于20岁的学生。

  DELETE FROM stuInfo WHERE stuAge <20

  TRUNCATE TABLE用来删除表中所有行的命令,功能上它类似于没有WHERE子句的DELETE语句。

  例如:要删除学员信息表中的所有记录行,可以使用。

  TRUNCATE TABLE Students

  提示:TRUNCATE TABLE 删除表中的所有行,但是表的结构、列、约束、索引等不会被改动。TRUNCATE TABLE不能用于有外键约束引用的表,这种情况下,需要使用DELETE语句。 修改数据

  语法:UPDATE 表名 SET 字段1=值1,字段2=值2,... WHERE (条件)

  例如:将stuInfo表中姓名是张三的学生年龄修改为25岁。

  UPDATE stuInfo SEF stuAge = 25 WHERE stuName = '张三'

  还可以通过表达式来更新数据。

  例如:需要在成绩表中更新成绩,所有低于85分的都在原来的基础上加5分,更新的SQL语句如下。

  UPDATE Scores SET Scores =Scores + 5 WHERE Scores <= 85 查询数据

  1.查询所有的数据行和列

  把表中所有数据行和列到列举出来需要使用“*”通配符来表示所有的列。

  例如:查询Students表中的所有数据。

  SELECT * FROM Students

  2.条件查询

  语法:SELECT 字段1,字段2,...FROM 表名

  例如:查询stuInfo表中所有学生的姓名(stuName)和年龄(stuAge)两个字段。

  SELECT stuName,stuAge FROM stuInfo

  3.在查询中使用列名

  AS子句可以用来改变结果集列的名称,还有一种情况是要让标题列的信息更易懂。

  例如:把SCode列名查询后显示为“学员编号”

  SELECT SCode AS 学员编号,SName AS 学员姓名 FROM Students

  还有一种情况是使用计算、合并得到新列的命名。

  例如:在查询Employees表中的数据时,需要把FirstName和LastName字段合并成一个叫“姓名”的字段。

  SELECT FirstName+'.'+LastName AS '姓名'FROM Employees 或者

  SELECT '姓名'= FirstName+'.'+LastName FROM Employees

  4.查询空行

  在SQL语句中采用“IS NULL”或者“IS NOT NULL”来判断是否为空行。

  例如:要查询学员信息表中没有填写Email信息的学员,可以使用以下查询语句。

  SELECT SName FROM Students WHERE SEmail IS NULL

  5.在查询中使用常量列

  有的时候,一些常量的缺省信息需要添加到查询输出中,以方便统计或计算。

  例如:查询学员信息的时候,学校名称统一都是“河北新龙”,查询输出的语句为。

  SELECT 姓名=SName,地址=SAddress,'河北新龙' AS 学校名称 FROM Students

  6.查询返回限制的行数

  例如:在测试的时候,如果数据库中有上万条记录,而只要检查前面十行数据是否有效。

  SELECT TOP 10 SName,SAddress FROM Students WHERE SSex = 0 查询排序

  如果需要按照一定的顺序排列查询语句选中的行,需要使用ORDER BY子句,并且排序可以是升序(ASC)或者降序(DESC)。如果不指定ASC或者DESC,缺省记录集按ASC升序排序。上面讲述的SQL语句都可以在其后面加上ORDER BY来进行排序。

  例如:查询学员成绩的时候,如果把所有成绩都降低10%后加5分,再按照及格成绩的高低来进行排列。

  SELECT StudentID AS 学员编号,(Score*0.9+5)AS 综合成绩 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score

  还可以按照多个字段进行排序。

  例如:要在学员成绩的基础上,再按照课程ID进行排序的语句如下。

  SELECT StudentID AS 学员编号,Score AS 成绩 FROM Score WHERE Score>60 ORDER BY Score,CourseID

  特殊排序

  在数据库表中有以下字符数据,如:

  13-1、13-10、13-100、13-108、14-3、14-1、13-18

  现在希望通过SQL语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排序,输出要排成这样:13-1、13-10、13-18、13-100、13-108、14-1、14-3

  数据库表名:SellRecord;字段名:ListNumber

  分析:

  这是查询语句,需要使用SELECT语句,,需要用到ORDER BY进行排序,并重新计算出排序的数字来。

  前半部分的数字,可以从先找到“-”符号的位置,然后取其左半部分,最后再使用Convert函数将其转换为数字。

  Convert(int,Left(ListNumber,CharIndex('-',ListNumber)-1))

  后半部分的数字,可以先找到“-”符号的位置,然后把从第一个位置到该位置的全部字符替换为空格,最后再使用Convert函数将其转换为数字。

  Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))

  完整的T-SQL语句是:

  SELECT ListNumber

  FROM SellRecord

  ORDER BY Convert(int,Left(ListNumber,CharIndex('-',ListNumber)-1)),Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))

  使用LIKE进行模糊查询

  LIKE运算符用于匹配字符串或字符串的一部分(称为子串),由于该运算符只用于字符串,所以仅与Char或Varchar数据类型联合使用。

  在数据更新、删除或者查询的时候,依然可以使用LIKE关键字来进行匹配查找,例如:

  SELECT * FROM Students WHERE SName LIKE '张%'

  使用BETWEEN在某个范围内进行查询

  使用关键字BETWEEN可以查找那些介于两个已知值之间的一组未知值。要实现这种查找必须知道开始查找的初值和终值,这个最大值和最小值用单词AND分开,例如:

  SELECT * FROM SCore WHERE Score BETWEEN 60 AND 80

  此外,BETWEEN查询日期范围的时候使用得比较多,例如:查询不在1992年8月1号到1993年8月1号之间订购的读书列表。

  SELECT * FROM Sales WHERE ord_date NOT BETWEEN '1992-8-1' AND '1993-8-1'

  提示:使用NOT来对限制条件“取反”操作

  使用IN在列举值内进行查询

  查询的值是指定的某些值之一,可以使用带列举值的IN关键字来进行查询。

  例如:列举值放在圆括号里,用逗号分开。

  SELECT SName AS 学员姓名 FROM Students WHERE SAddress IN ('北京','广州','上海') ORDER BY SAddress SQL Server中的聚合函数

  在查询中还会经常碰到的要求是取某些列的最大值、最小值、平均值等信息,有时候还需要计算出究竟查询到多少行数据项。这个时候就可以使用聚合函数了,聚合函数能够基于列进行计算,并返回单个值。

  SQL Server提供了以下几个聚合函数:

  1.SUM

  SUM返回表达式中所有数值的总和,它只能用于数字类型的列。

  例如:在Pubs数据库中,要得到商务付款的总数,执行以下查询语句。

  SELECT SUM(ytd_sales) FROM titles WHERE type = 'business'

  注意:这种查询只返回一个数值,因此,不能够直接与可能返回多行的列一起使用来进行查询。

  2.AVG

  AVG函数返回表达式中所有数值的平均值,也只能用于数字类型的列。

  例如:要查询及格线以上的学员的平均成绩。

  SELECT AVG(SCore) AS 平均成绩 FROM Score WHERE Score >=60

  3.MAX和MIN

  MAX返回表达式中的最大值,MIN返回表达式的最小值,它们都可以用于数字型、字符型以及日期/时间类型的列。

  例如:查询平均成绩、最高分、最低分的语句如下。

  SELECT AVG(SCore) AS 平均成绩,MAX(Score) AS 最高分,MIN(Score) AS 最低分 FROM Score WHERE Score >=60

  4.COUNT

  COUNT返回提供的表达式中非空值的计数,COUNT可以用于数字和字符类型的列。

  例如:查询及格人数的语句如下。

  SELECT COUNT(*) AS 及格人数 FROM Score WHERE Score >= 60 分组查询

  使用Group By进行分组查询

  成绩表中存储了所有课程的成绩,在这种情况下,可能就需要统计不同课程的平均成绩。也就是说,需要对不同的成绩首先按照课程来进行分组,分组以后再进行聚合计算,得到累计信息。

  采用分组查询实现的SQL语句如下:

  SELECT CourseID, AVG(Score) AS 课程平均成绩 FROM Score GROUP BY CourseID

  使用HAVING子句进行分组筛选

推荐阅读
  • 在使用PFC进行数据处理时,遇到了数据列消失的问题。具体表现为,在数据窗口dw_1中,原本点击排序按钮cb_1后,会弹出一个排序窗口并显示所有字段。然而,目前点击排序按钮时,数据列却无法正常显示。为了解决这一问题,需要检查数据源的配置和按钮事件的触发逻辑,确保数据列能够正确加载和显示。 ... [详细]
  • 实现Nginx对ThinkPHP URL重写及PATHINFO支持的详细方法解析【PHP开发】
    在PHP后端开发中,实现Nginx对ThinkPHP的URL重写及PATHINFO支持是一项常见的需求。本文详细解析了经过多次尝试和研究,最终找到的一种有效配置方法,能够确保URL_MODERewrite功能正常运行,并提供稳定的服务。此外,文章还探讨了相关配置项的具体作用及其优化建议,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • InnoDB当前仅支持一次创建一个FULLTEXT索引 ... [详细]
  • MySQL 数据备份与恢复的常见方法及其实践经验总结。物理备份涉及直接复制数据库文件,适用于大规模数据库环境,但无法在异构系统(如 Windows)中恢复。逻辑备份则侧重于导出建表语句和数据插入语句,便于跨平台迁移和部分数据恢复。此外,本文还探讨了增量备份、全量备份以及使用工具如 mysqldump 和 Percona XtraBackup 的具体应用场景和优缺点。 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • MySQL 数据变更后如何实现实时同步至 Elasticsearch
    在 MySQL 数据变更后,如何实现与 Elasticsearch 的实时同步是一个常见的需求。本文介绍了通过配置 MySQL 的 Binlog 功能,结合中间件如 Canal 或 Debezium,将数据变更事件实时捕获并同步到 Elasticsearch 中的方法。此外,还探讨了如何处理数据删除操作,确保 Elasticsearch 中的数据与 MySQL 保持一致。文章还简要对比了 VSCode 和 Dev 两种开发环境的优缺点,为开发者提供参考。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 在数据表中,我需要触发一个操作来刷新特定列的数据。例如,对于以下表格:| ID | Name | IsDeleted ||----|-------|-----------|| 1 | test | True || 2 | test2 | False |我希望在点击“更新”按钮时,能够仅刷新选定行的“IsDeleted”列。这将有助于确保数据的实时性和准确性。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 如何使用R语言高效连接并操作MySQL数据库
    如何使用R语言高效连接并操作MySQL数据库 ... [详细]
  • 本文详细探讨了MySQL并发参数的优化与调整方法,旨在帮助读者深入了解如何通过合理配置这些参数来提升数据库性能。文章不仅介绍了常见的并发参数及其作用,还提供了实际操作中的调整策略和最佳实践,适合希望提高数据库管理技能的技术人员阅读。 ... [详细]
  • 解决MySQL 5.1服务器无法正确识别中文字符的问题
    在使用MySQL 5.1服务器时,可能会遇到无法正确识别中文字符的问题。由于相关资料较少且不够全面,本文将详细阐述解决方案。首先,需要检查MySQL的配置文件,确保字符集设置正确,并通过命令行工具验证当前的字符编码配置。此外,建议更新到最新版本以避免此类问题。 ... [详细]
  • SQL Server 客户端连接远程数据库时未指定端口导致 “用户 'sa' 登录失败 (错误 18456)” 的解决方案 ... [详细]
  • 本文将深入探讨MySQL 8.0中的WITH语句,通过具体应用实例详细解析其在处理复杂SQL查询时的优势。WITH语句能够显著减少临时表的使用,提高代码的可读性和维护性,从而优化查询性能。 ... [详细]
  • 本文提供了在Windows系统上部署和启动MySQL免安装版本的详细步骤。首先,从MySQL官方网站下载社区版免安装包(https://dev.mysql.com/downloads/mysql/8.0.html),将其解压至指定目录,例如D:\tools\mysql。接着,配置系统环境变量,确保MySQL命令行工具可以在任意路径下使用。此外,还需创建并配置my.ini文件以设置MySQL的基本参数,确保数据库服务能够顺利启动和运行。 ... [详细]
author-avatar
外事一棵葱_712
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有