一、SQL数据查询的相像格式

数码查询是数据库的基本操作。SQL提供了SELECT语句实行多少查询,其肖似格式为:

SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]···
FROM<表名或视图名>[,<表名或视图名>···] | (SELECT语句>)[AS]<别名>
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC | DESC]];

方方面面SELECT语句的含义是,听他们讲WHERE子句的法则表达式从FROM子句内定的基本表、视图或派生表中搜索满意条件的元组,再按SELECT子句中的目的列表达式选出元组中的属性值变成结果表

若果有GROUP
BY子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为二个组。平日会在每组中功效聚焦函数。假若GROUP
BY子句带HAVING短语,则唯有满足内定条件的组才予以输出。

假定有OLacrosseDE智跑 BY子句,则结果还要按<列名2>的值的升序或降序排序。

SELECT语句不只能够达成轻便的单表查询,也得以完结复杂的总是查询和嵌套查询。

 

目录:

设置进程中,SQL Server 数据库引擎设置为 Windows 身份验证方式或 SQL
Server 和 Windows 身份验证形式。本文介绍怎么着在设置后更动安全形式。

二、SQL单表查询(仅提到二个表的询问卡塔 尔(英语:State of Qatar)

  • 前言
  • SQL
    Server根基希图

    • 1.新建数据库
    • 2.在数量中加多表
    • 3.向表中添扩大少
  • SQL
    Server与C#根底计划
  • 实例解析
    • 1.C#接连几天来数据库
    • 2.查询特定列数据
    • 3.利用列小名
    • 4.在列上参与总计
    • 5.运用相比较设置规范
  • 总结

风姿洒脱经在装置进程中筛选“Windows 身份验证情势”,则 sa
登陆宿将被剥夺。要是稍后将身份验证形式改动为“SQL Server 和 Windows
身份验证形式”,则 sa 登录名仍居于禁止使用状态。若要启用 sa 登陆帐户,请使用
ALTER LOGIN 语句。

1.抉择表中的若干列

(1卡塔 尔(英语:State of Qatar)查询钦赐列

查询全部学子的学号与姓名

SELECT Sno,Sname
FROM Student;

 

查询全部学子的人名、学号、所在系

SELECT Sname,Sno,Sdept
FROM Student;

 

(2卡塔 尔(英语:State of Qatar)查询任何列

询问全部学子的亲力亲为笔录

    SELECT *
    FROM Students;
等价于
    SELECT Sno,Sname,Ssex,Sage,Sdept
    FROM Student;

 

澳门微尼斯人手机版,(3卡塔 尔(英语:State of Qatar)查询经过测算的值

查询全部学子的姓名及其出生年份

SELECT Sname,2014-Sage  //查询结果的第2列是一个 算术表达式
FROM Student;

只顾:用当下的年份(要是为二零一五年卡塔 尔(阿拉伯语:قطر‎减去学子的年纪,那样所得的就是学生的诞生年份。

 

询问全部学生的全名、出生年份和所在的院系,要求用小写字母表示系名

SELECT Sname,'Year of Birth:',2014-Sage,LOWER(Sdept)
FROM Student;

 

 

安全申明: sa 帐户是贰个名牌的 SQL Server
帐户,並且时有时成为恶意顾客的抨击对象。除非你的应用程序要求接受 sa
帐户,不然请不要启用它。为 sa 登陆名使用一个强密码十一分主要。

2.选用表中的若干组

(1卡塔 尔(阿拉伯语:قطر‎解除取值重复的行

查询选修了课程的学习者学号

SELECT DISTINCT Sno
FROM SC;

 

(2卡塔 尔(英语:State of Qatar)查询满意条件的元组

查询满意钦赐条件的元组能够通过WHERE子句实现。WHERE子句常用的询问条件如下表所示

查询条件

谓词

比较

=,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比较运算符

确定范围

BETWEEN AND,NOT BETWEEN AND

确定集合

IN,NOT IN

字符匹配

LIKE,NOT LIKE

空值

IS NULL,IS NOT NULL

多重条件(逻辑运算)

AND,OR,NOT

 

查询Computer科学系全部学生的花名册

SELECT Sname
FROM Student
WHERE Sdept='CS'

 

查询全体年龄在20岁以下的学习者姓名及其年龄

SELECT Sname,Sage
FROM Student
WHERE Sage<20;

 

查询考试成绩可是关的学童的学号

SELECT DISTINCT Sno
FROM SC
WHERE Grade<60;

 

查询年龄在20~24岁时期的学习者的人名、系别和年龄

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23

 

查询年龄在20~二十四虚岁以内的学员的全名、系别和年龄

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23

 

查询Computer科学系(CS卡塔 尔(英语:State of Qatar)、数学系(MA卡塔尔和新闻系(IS卡塔 尔(阿拉伯语:قطر‎学子的全名、系别和年龄

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS');

 

查询学号为二零一二15121的学子的详情

    SELECT *
    FROM Student
    WHERE Sno LIKE '201215121'
等价于
    SELECT *
    FROM Student
    WHERE Sno='201215121'

那边介绍下字符相称

谓词LIKE能够用来拓宽字符串的合作。其相同语法格式如下:

[NOT] LIKE'<匹配串>' [ESCAPE '<换码字符>']

 

其意义是追寻钦定的习性列值与<相称串>相相称的元组。<相配串>能够是三个总体的字符串,也能够包罗通配符
% 和 _
。其中:

  • %(百分号卡塔尔代表专断长度(长度可感到0卡塔 尔(阿拉伯语:قطر‎的字符串。举例:a%b
    表示以a开端,以b结尾的随便长度的字符串。如acb、addgb、ab等。
  • _(下划线卡塔尔代表专断单个字符。举个例子:a_b表示以a带头,以b结尾的尺寸为3的任性字符串。如acb、agb等。

 

询问全数姓刘的学习者的人名、学号和性别

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE '刘%';

 

查询姓“欧阳”且全名称为多少个汉字的学习者的人名

SELECT Sname
FROM Student
WHERE Sname LIKE '欧阳_'

专心:数据库字集为ASCII时三个汉字需求五个_;当字符集为GBK时只须求四个。

 

查询名字中第一个字为“阳”的学员的全名和学号

SELECT Sname,Sno,
FROM Student
WHERE Sname LIKE '_阳%';

 

询问全部不姓刘的学子的姓名、学号和性别

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname NOT LIKE '刘%';

 要是客商要询问的字符串自个儿就带有通配符%或_,那时候将要选取 ESCAPE
‘<换码字符>’ 短语对通配符实行转义了。

 

查询DB_Design 课程的课程号和学分

SELECT Cno,Ccredit
FROM Course
WHERE Cname LIKE 'DB \ _Design' ESCAPE '\';

 ESCAPE ‘\’ 表示 “\” 为换码字符。那样匹配串中紧跟在 “\”
前边的字符“_”不再具有通配符的意思,转义为平日的“_”字符。

 

查询以“DB_”最早,且尾数第四个字符为i的科目标详细景况

SELECT *
FROM Course
WHERE Cname LIKE 'DB \_%i__'ESCAPE '\';

 

或多或少学子选修课程后不曾插手考试,所以有选课记录,但未曾考试成绩。查询贫乏战绩的上学的小孩子的学号和相应的教程号

SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL;  /*分数Grade是空值*/

 注意:这里的“IS”不能用等号(=卡塔尔代替。

 

查全数有实绩的上学的小孩子学号和课程号

SELECT Sno,Cno
FROM SC
WHERE Grade IS NOT NULL;

 

查询Computer科学系年龄在20岁以下的学员姓名

SELECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20;

 

正文:

sa 登陆名只能选用 SQL Server 身份验证连接到服务器。

3.ORDER BY 子句

客商能够用OLANDDER
BY子句对查询结果依照一个或七个属性列的升序(ASC卡塔尔国或降序(DESC卡塔尔排列,私下认可值为升序。

询问选修了3号课程的学员的学号及其战表,查询结果按分数的降序排列

SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;

 

询问全部学子意况,查询结果按所在系的系号升序排列,同生龙活虎系中的学子按年龄降序排列

SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;

 

  1. 会师函数

为了尤其便利客户,加强行检查索成效,SQL提供了重重会合函数,主要有:

COUNT(*)

统计元组个数

COUNT([DISTINCT|ALL]<列名>)

统计一列中值的个数

SUM([DISTINCT|ALL]<列名>)

计算一列值的总和(此列必须是数值型)

AVG([DISTINCT|ALL]<列名>)

计算一列值的平均值(此列必须是数值型)

MAX([DISTINCT|ALL]<列名>)

求一列值中的最大值

MIN([DISTINCT|ALL]<列名>)

求一列值中的最小值

假诺钦赐 DISTINCT 短语,则象征在总计时要吊销钦定列中的重复值。

譬喻不钦赐 DISTINCT 短语或内定 ALL
短语(ALL为暗中同意值卡塔尔国,则象征不注销重复值。

 

询问学子总人数

SELECT COUNT(*)
FROM Student;

 

询问选修了课程的学子人数

SELECT COUNT(DISTINCT Sno)
FROM SC;

 

测算选修1号课程的上学的小孩子平均成绩

SELECT AVG(Grade)
FROM SC
WHERE Cno='1';

 

询问选修1号课程的学员最高分数

SELECT MAX(Grade)
FROM SC
WHERE Cno='1';

 

询问学子二零一三15012选修课程的总学分数

SELECT SUM(Ccredit)
FROM SC,Course
WHERE Sno='201215012' AND SC.Cno=Course.Cno;

 注意:WHERE
子句中是不能够用集中函数作为标准表明式的。聚焦函数只能用于SELECT子句和GROUP
BY中的HAVING子句。

 

回去最上部

改造安全身份验证形式

5.GROUP BY子句

将查询结果按某一列或多列的值分组,值至极的为意气风发组。

 

求种种学科号及相应的选课人数

SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;

 

询问选修了三门上述课程的学习者学号

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;

 

查询平均成绩超乎等于90分的学习者学号和平均成绩

    SELECT Sno,AVG(Grade)
    FROM SC
    WHERE AVG(Grade)>=90 (错误!)
    GROUP BY Sno;
因为WHERE子句中是不能用聚集函数作为条件表达式的,正确的查询语句应该是:
    SELECT Sno,AVG(Grade)
    FROM SC
    GROUP BY Sno;    
    HAVING AVG(Grade)>=90;

 

前言:

  对于SQL
Server的相干文化作者都是在校的时候领会的,毕业到今天能够讲完全未有再碰了,所谓十17日不练手生,所以有关数据库这一块的学识小编能够说完完全全还给老师了(emmmm,对不起作者的学习开支呀卡塔尔,何况最难堪的是数据库的知识能够说是软件开采一块很注重的东西了,不说非常了然,不过自个儿这种完全还给老师的“人才”也许也是没什么人了,所以!为了笔者曾经的学习话费,又再次捡起来学一下呢,方今自己供职于C#,所以文中全体的代码联系均为C#言语,另:文中的点都以根底知识复习(就自身那水平也前段时间别期望从那边看看很深邃的能力了o(╯□╰)o卡塔 尔(英语:State of Qatar)。

回去最上部

1)在 SQL Server Management Studio
的对象能源微电脑中,右键单击服务器,再单击“属性”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注