SQL Server课本总结

一、增删改查。

1.

语法:INSERT INTO

基本语法: INSERT INTO table_name(colume_names) VALUES (data_values)

例子:

INSERT INTO Category (Category ID , Category)VALUES (1,‘Thriller’)

CategoryId

Category

1

Thriller

2.

语法:DELETE(WHERE子句指定要删除的记录)

基本语法:DELETE FROM MemberDetails

例子:

DELETE FROM MemberDetails WHERE MemberId=3

(在Memberdatails中删除所由MemberId=3的记录)

3.

语法:UPDATE(WHERE 子句指明要更改哪些记录)

基本语法:UPDATE table_name SET column_name=value WHERE condition

例子:

UPDATE MenberDetails

SET

Street=’45 Upper Road’,

City=’New Town’,

State=’New State’

ZipCode=’99112’

WHERE MemberId=4

MemberId

First name

Last

Name

Dateof

Birth

Street

City

State

ZipCode

Email

 

Dateof

Joining

4

Steve

Gee

Oct15,1967

45

Upper road

New

Town

New

State

99112

Steve@

gee.

com

Feb 22

2004

4.

语句:SELECT

(1)基本语法:SELECT column1, column2,……column FROM table_name

例子:SELECT MemberID,FirstName FROM MemberDetails;

(选择所有记录的MemberId和Firstname列)

(2)返回不同的行(DISTINCT 关键字)

SELECT DISTINCT column FROM table_name

(3)使用别名

SELECT Last Name AS Surname FROM MemberDetails(Surname取代Lastname)

(4)查询空行

SELECT Name FROM a where Email is null

(查询A表中Email为空的所有行,并显示Name列;SQL 语句中is null或者is not null来判断是否为空行)

(5)查询排序(ORDER BY(默认升序) ,ASC(升序) ,DESC(降序))

基本语法:SELDECT YearReleased    FROM Films ORDER BY YearReleased;(按时间从早期到后期)

LIKE通配符查询:

①基本语句:(NOT LIKE )

SELECT LastName FROM Memberdetails

WhERE LastName (NOT) LIKE ‘J%’(匹配所有(不)以“J”为开头的名字)

(%  匹配一个或多个字符。MS Access使用的是(*)通配符,取代(%)通配符)

(_  匹配一个字符,MS Access 使用(?)通配符,取代下划线通配符)

使用IN运算符

 ①基本语句:

SELECT FileName ,YearReleased,Rating

FROM Films

WHERE

YearReleased IN(1967)

AND

Rating IN (4,5)[在Film数据库中,看那些电影的发行时间为1967,并且级别为4或5]

使用BETWEEN运算符

①基本语句:

SELECT FilitiName ,Rating

FROM Films

WHERE Rating BETWEEN 3 AND 5

(选择级别位于3至5之间的电影)

子查询(确保结果被正确过滤):分为内部子查询和外部子查询

(1)再论IN运算符(子查询中)

·基本语句:SELECT FirstName,LastNamw.YEAR(DateOfBirth)

              FROM  MemberDertails

                 WHERE YEAR (DateOfBirth) IN  (SELECT YearReleased FROM Films);

子查询(SELECT YearReleased FROM Films)返回Films表中关于发行年份的一个列表,如果一个成员的出生年份匹配该列表中的某一项,则WHERE子句为真,且包含在最终结果。

或者运行语句:

     SELECT FirstName,LastNamw.YEAR(DateOfBirth)

              FROM MemberDertails  JOIN Films ON YEAR(DateOfBirth)=YearReleased

                GROUP BY FirstName,LastName,Year(DateIfBirth)

(2)使用ANY、SOME(前两者一致)和ALL运算符

①为了使ANY返回True,则所比较的值需要匹配子查询所返回的值。

SELECT FirstName,LastName,YEAT(DateOfBirth)

FROM MemberDetails

WHERE YEAR(DateOfBirth)=ANY(SELECT YearReleased FROM Films)

注:WHERE子句指定YEAR(DateOfBirth)=子查询(SELECT YearReleased FROM Films)所返回的某一个值。

②ALL运算符:

(3)HAVING子句中使用子查询

当使用了GROUP BY子句时,HAVING子句用于过滤显示在结果集中的分组。

例如:

SELECT City

FROM MemberDetails

GROUP BY City

HAVING AVG(YEAR(DateOfBirth))>1990

(为了获得城市中的成员的平均出生年份打于1990年所有城市的列表)

(4)EXISTS运算符(检查记录行,但不比较列)

可以使用NOT运算符来颠倒EXISTS的逻辑,已查看子查询是否不返回结果。

(5)在INSERT,DELETE FROM 和UPDATE中使用子查询

(用于被改变或者被删除的内容,或者用于提供被插入或者被改变的数据)

二、联合

1.内部联合:由INNER JOIN 关键字组成,指定了两个需要联合的表。在INNER JOIN之后指定了一个ON子句,该子句指明了一些条件,每个表的记录行必须满足这些条件。

例如:SELECT MeetingDate,FirstName, LastName

         FROM Attendance INNER JOIN MemberDetails

         ON Attendance . MemberID=MemberDetails.MemberId;

(INNER JOIN连接了Attendance 和 MemberDetails表)

(1)等值联合和不等值联合

前者ON子句条件包含一个(=)运算符号

后者联合的子句中包含不相等的计算

(2)多个联合(两个及以上INNER JOIN语句连接)和多个条件(多个ON子句)

(3)交叉联合(不存在联合表的ON子句,是最基本的联合)

基本语句:SELECT Category,street

             FROM Category CROSS JOIN Location

                ORSER BY Street;

(Category和Location表被交叉联合)

(4)自联合

2.外部联合

(1)左外部联合:无论是否成功匹配ON子句,都返回联合右边表中存在的一个匹配记录

SELECT Location.Street,MemberDetails.Street

FROM Location LEFT OUTER JOIN MemberSetails

ON Location.Street=MemberDetails.Street

Location.Street

MemberDatails.Street

Main.Street

NULL

Winding.Road

Winding Road

Tiny.Terrace

NULL

(2)右外部联合(不管是否成功匹配ON子句,都返回联合左边表中的所有记录)

(3)完全外部联合(少用)(FULL OUTER JOIN)(左右联合的组合)

SELECT Location.Street,MemberDetails,Street

FROM Location FULL OUTER JOIN Membertails

ON Location.Street=MemberDetails.Street/

(4)利用UNION运算符组合结果集【通过UNION运算符将两个或多个SELECT查询的结果联合到一个结果集中】

{两个基本规则:一是每个查询必须产生相同数目的列。二是列的数据类型必须相同,或者至少数据库系统必须能够将他们转换为相同的数据类型}

三、高级查询

技巧:

1.当使用AND时,将很可能不为真的条件放在前面

2.但是用OR运算符时,将最可能为真的条件放在前面

3.DISTINCT比GROUP BY更快

4.限制联合的结果

5.对子查询使用IN运算符

6.避免使用SELECT*FROM

7.对整数类型列进行搜索

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/86250095
今日推荐