插 入 | 单行 | Insert into <表名> (列名) Value <值列表> | Insert into student(sname,saddress,sgrade,semail,ssex) Values (‘张青栽’,‘上海松江’,6,‘ZQC@sohu.com’,0) | |
多行 | Insert into <表名> (列名) Select <列名> from <源表名> | Insert into Tongxuelu(’姓名’,’地址’,’电子邮件’) Select SName.SAddress.SEmail From Student | ||
Select <表名.列名> Into <表名> From <源表名> | Select Student.SName.Students.SAddress.Studens.SEmail Into tongxuelu From Students | |||
注
|
插入新的标识列 | Select identity(数据类型,标识种子,标识增长量)AS 列名
Into 新表 from 原始表 | ||
Insert into<列名> (表名) Select <列名>union Select <列名>union | Insert students(sname,sGrade,SSex) Select ‘测试女生1’,7,0 union Select ‘测试女生2’,7,0 union | |||
。。。。。。。 | Select ‘测试女生3’,7,0 union | |||
更新 | UPDATE<表名> SET<列名 = 更新值> [WHERE<更新条件>] | UPDATE Scores SET Scores=Scores+5 WHERE Scores<=95 | ||||
删除 | 多 行 | DELETE<表名> [WHERE<删除条件>] | DELETE FROM Students WHERE SName=’张青裁’ | |||
整 表 | TRUNCATE TABLE<表名> | TRUNCATE TABLE Students | ||||
SELECT<列名>FROM<表名>[WHERE<查询条件表达式>][ORDER BY<排序的列名>[ASC或DESC]] | ||||||
查询全部的行和列 | SELECT * FROM Students | |||||
查询部分行 | SELECT SCode,SName,SAddress FROM Students | |||||
WHERE SAddress=’河南新乡’ | ||||||
使用AS来命名列 | SELECT FirstName+’.’+LastName AS’姓名’ FROM Employees | |||||
使用=来命名列 | SELEC’姓名’=FirstName+’.’+LestName FROM Employees | |||||
查询空行 | SELECT SName FROM Students WHERE SEmail IS NULL SELECT SName FROM Students WHERE SEmail IS NOT NULL | |||||
使用常量列 | SELECT 姓名=SName,地址=SAddress,’河北新龙’AS 学校名称 FROM Students | |||||
限制行数 | 前5行 | SELECT TOP 5 SName,SAddress FROM Students WHERE SSex=0 | ||||
前20%行 | SELECT TOP 20 PERCENT SName,SAddress FROM Students WHERE SSex=0 | |||||
升序降序排列 | ASC(默认)/DESC | |||||
聚合函数 | SUM | SELECT SUM(ytd_sales)FROM titles WHERE type=’business’ | ||||
AVG | SELECT AVG(SCore)AS 平均成绩 From Score WHERE Score>=60 | |||||
MAX、 COUNT | SELECT AVG(SCore)AS平均成绩,MAX(Score)AS 最高分,MIN(Score)AS最底分 From Score WHERE Score>=60 | |||||
COUNT | SELECT COUNT(*)AS及格人数FromScore WHERE Score>=60 | |||||
分组查询 | GROUP/ BY | SELECT StudentIDAS 学员编号,CourseID AS 内部测试,AVG(Score)AS 内部测试平均成绩 FROM Score GROUP BY StudentID,CourseID HAVING COUNT(Score)>1 | ||||
HAVING | ||||||
多表连接查询
内联接 (INNER JOIN) |
在WHERE子语句中 指定连接条件 | SELECT Students.SName,Score.CourseID,Score.Score FROM Students,Score WHERE Students.SCode=Score.StudentID | ||
在FROM子句中 使用JOIN…ON | SELECT S.SName,C.CourseID,C.Score FROM Score AS C INNER JOIN Students AS C ON C.StudentID=S.SCode | |||
外联接 (OUTER JOIN) |
左外连接 (LEFT JOIN) | SELECT S.SName,C.CourseID,C.Score FROM Students AS S LEFT OUTER JOIN Score AS C ON C.StudentID = S.SCode | ||
右外连接 (RIGHT JOIN) | SELECT Titles.Titles_id,Title,Publishers.Pub_name FROM titles RIGHT OUTER JOIN Publishers ON Titles.Pub_id = Publishers.Pub_id | |||
完整外连接 (FULL JOIN) |
| |||
交叉联结(CROSS JOIN) |
| |||
字符串函数 | ||||
CHARINDEX | 用来寻找一个指定的字符串在另一个字符串中的起始位置 | SELECT CHARINDEX(‘ACCP,’’My Accp Course’,1) 返回4 | ||
LEN | 返回传递给它的字符串长度 | SELECT LEN(‘SQL Server课程’) 返回 12 | ||
LOW | 把传递给它的字符串转换为小写 | SELECT LOWER(‘SQL Server课程’) 返回 sql server课程 | ||
UPPER | 把传递给它的字符串转换为大写 | SELECT UPPER(‘SQL Server课程’) 返回 sql server课程 | ||
LTRIM | 清除字符左边的空格 | SELECT LTRIM(‘周智宇’) 返回 周智宇 (后面的空格保留) | ||
RTRIM | 清楚字符右边的空格 | SELECT RTRIM(‘周智宇’) 返回 周智宇(前面的空格保留) | ||
RIGHT | 从字符串右边返回指定数目的字符 | SELECT RIGHT(‘买卖提.吐尔松’,3) 返回 吐尔松 | ||
LEFT | 从字符串左边返回指定数目的字符 | SELECT LEFT(‘买卖提.吐尔松’,3) 返回 买卖提 | ||
REPLACE | 替换一个字符串中的字符 | SELECT REPLACE(‘莫可可切.杨可’,’可’,’兰’) 返回 莫乐兰切.杨兰 | ||
STUFF | 在一个字符串中,删除指定长度的字符;并在该位置插入一个新的字符串 | SELECT STUFF(‘ABCDEFG’,2,3,’我的音乐我的世界’) 返回 A我的音乐我的世界EFG | ||
日期函数
Year(yy,yyyy) quarter(qq,q) Month(mm,m) day of year(dy,y) Day(dd,d) Week(wk,ww) weekday(dw) Hour(hh) minute(mi,n) second(ss,s) millisecond(ms) | ||
getdate | 取得当前的系统日期 | Select getdate() 返回:今天的日期 |
dateadd | 将指定的数值添加到指定的日期部分后的日期 | Select dateadd(mm,4,’01/01/99’) 返回:以当前的日期格式返回05/01/99 |
datediff | 两个日期之间的指定日期部分的区别 | Select datediff(mm,’01/01/99’,’05/01/99’) 返回:4 |
datename | 日期中指定日期部分的字符串形式 | Select datename(dw,’01/01/2000’) 返回:Saturday |
datepart | <span style="font-family: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'; mso-bidi-font-size: 10.5pt% |