SQL语句简单语法
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
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
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子句进行分组筛选

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

硬碟序號是硬碟的一個重要標識,通常用於唯一標識硬碟以及進行硬體識別。在某些情況下,我們可能需要查詢硬碟序號,例如在安裝作業系統、尋找正確裝置驅動程式或進行硬碟維修等情況下。本文將介紹一些簡單的方法,幫助大家查詢硬碟序號。方法一:使用Windows命令提示字元開啟命令提示字元。在Windows系統中,按下Win+R鍵,輸入"cmd"並按下回車鍵即可開啟命

如何透過PHP編寫一個簡單的線上預約系統隨著網路的普及和使用者對便利性的追求,線上預約系統越來越受到歡迎。無論是餐廳、醫院、美容院或其他服務業,都可以透過簡單的線上預約系統來提高效率並為使用者提供更好的服務體驗。本文將介紹如何使用PHP編寫一個簡單的線上預約系統,並提供具體的程式碼範例。建立資料庫和表格首先,我們需要建立一個資料庫來儲存預約資訊。在MyS

如何使用Java來寫一個簡單的學生成績報表產生器?學生成績報表產生器是可以幫助老師或教育者快速產生學生成績報告的工具。本文將介紹如何使用Java來撰寫簡單的學生成績報表產生器。首先,我們要定義學生對象和學生成績對象。學生對象包含學生的姓名、學號等基本訊息,而學生成績對象則包含學生的科目成績和平均成績等資訊。以下是一個簡單的學生物件的定義:public

如何透過C++寫一個簡單的掃雷遊戲?掃雷遊戲是一款經典的益智類遊戲,它要求玩家根據已知的雷區佈局,在沒有踩到地雷的情況下,揭示所有的方塊。在這篇文章中,我們將介紹如何使用C++來寫一個簡單的掃雷遊戲。首先,我們需要定義一個二維陣列來表示掃雷遊戲的地圖。數組中的每個元素可以是一個結構體,用於儲存方塊的狀態,例如是否揭示、是否有雷等資訊。另外,我們還需要定義

如何使用PHP開發簡單的文件管理功能簡介:文件管理功能在許多Web應用中都是不可或缺的一部分。它允許用戶上傳、下載、刪除和展示文件,為用戶提供了便捷的文件管理方式。本文將介紹如何使用PHP開發一個簡單的檔案管理功能,並提供具體的程式碼範例。一、創建專案首先,我們需要建立一個基本的PHP專案。在專案目錄下建立以下檔案:index.php:主頁面,用於顯示上傳表

如何透過C++寫一個簡單的音樂推薦系統?引言:音樂推薦系統是現代資訊科技的研究熱點,它可以根據使用者的音樂偏好和行為習慣,向使用者推薦符合其口味的歌曲。本文將介紹如何使用C++來寫一個簡單的音樂推薦系統。一、收集用戶資料首先,我們需要收集用戶的音樂偏好資料。可以透過線上調查、問卷調查等方式來獲得使用者對不同類型音樂的喜好程度。將資料保存在一個文字檔案或資料庫

快速入門:使用Go語言函數實現簡單的圖書管理系統引言:隨著電腦科學領域的不斷發展,軟體應用的需求也越來越多樣化。圖書管理系統作為常見的管理工具,也成為許多圖書館、學校和企業必備的系統之一。在本文中,我們將使用Go語言函數來實作一個簡單的圖書管理系統。透過這個例子,讀者可以學習到Go語言中函數的基本用法以及如何建立一個實用的程式。一、設計思路:我們首先來

Lambda表達式是無名稱的匿名函數,其語法為:(parameter_list)->expression。它們具有匿名性、多樣性、柯里化和閉包等特徵。在實際應用中,Lambda表達式可用於簡潔地定義函數,如求和函數sum_lambda=lambdax,y:x+y,並透過map()函數應用於列表來進行求和操作。
