[聚合文章] sql server 2012版 学习笔记(转引用)

SQL Server 2017-03-14 16 阅读

 因为最近参加校招,题库中有一部分sql语句的题目,感觉不是很难吧?但因之前没学过sql这门语言,当时心里是拒绝的,所以决定发疯图强,找些资料,学了之后根据自己的理解写出来,再说以后肯定也是会用到的,所以学了肯定是有百利而无一害,所以,大家共勉~

鸡汤一则:

“人生不是百米赛跑,而是马拉松~”

本文目录

一sql 简介

sql是用于访问和处理数据库的标准的计算机语言

什么是sql

二安装与配置

sql server 2012版

三sql DML DDL 基础认识

数据库表

重要事项

sql DML 和 DDL

SQL 中最重要的 DDL 语句

四sql 基本语句简单介绍

一 sql create table 语句

insert into 子句

二sql select 语句

where 子句

between and

like 子句

in 子句

distinct 关键字

group by 语句

having 子句

三 update 语句

四delete 语句

一、sql 简介

sql是用于访问和处理数据库的标准的计算机语言。

结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。 

什么是sql?

sql指结构化查询语句

sql让我们有能力访问数据库

上面只是大致的介绍了sql的定义和作用,想详细了解,百度一下,我就不在这里赘述了。

二、安装与配置

sql server 2012版

这里我提供了安装链接,大家根据自己的电脑版本自行选择。2012简体中文版官方下载页面:http://www.microsoft.com/zh-cn/download/details.aspx?id=29066

操作系统: 

至少等于或者高于win7操作系统版本.

内存空间: 

最少1GB,推荐使用4GB的内存,最好不要安装在C盘。

安装步骤: 

具体的安装步骤网上有很多教程,我自己是根据慕课网的教学视频安装的。说的很详细,谢谢慕课网的老师们!这里的学习安装视频地址:http://www.imooc.com/video/8469

  那当你安装配置好sql server 2012之后,我们开始学习sql语言。

三、sql DML DDL 基础认识

数据库表

一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。 

下面的例子是一个名为”Persons”的表:

nameagessexaddresscity

张三23男北京路南京

李四22男上海路北京

小明19男遵义路北京

妮儿18女广州路重庆

翠花21女天津路哈尔滨


上面的表包含四条记录(每一条对应一个人)和五个列(姓名、年龄、性别、地址、城市)

重要事项

sql对大小写不敏感

sql DML 和 DDL

sql DML(数据操作语言) 

可以把SQL分为两个部分:数据操作语言(DML)和数据定义语言(DDL)。 

sql(结构化查询语言)是用于执行查询的语法。sql语言也包括更新、插入和删除记录的语法。 

查询和更新指令构成了sql的DML部分:

select -从数据库表中获取数据

update -跟新数据库表中的数据

delete -从数据库表中删除数据

insert into -向数据库表中插入数据

sql DDL(数据定义语言) 

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。

SQL 中最重要的 DDL 语句:

create database  - 创建新数据库

alter database     - 修改数据库

create table         - 创建新表

alter table            - 变更(改变)数据库表

drop table           - 删除表

create index         - 创建索引(搜索键)

drop index           - 删除索引

四、sql 基本语句简单介绍

下面我先在数据库中创建一个数据表,然后在对数据表进行一系列的操作。 

那么先了解在数据库中怎么创建一张数据表?

(一) sql create table 语句

create table语句 用于创建数据库中的表。

sql create table语法

createtable表名(列名称1数据类型, 列名称2数据类型, 列名称3数据类型, ......)

1

2

3

4

5

6

数据类型规定了列可容纳何种数据类型。下面的表格包含了sql中最常用的数据类型。

数据类型描述

integer/int/smallint/tinyint(size)仅容纳整数。在括号内规定数字的最大位数

decimal/numeric(size,d)容纳带有小数的数字。”size”规定数字的最大位数。”d”规定小数点右侧的最大位数

char(size)容纳固定长度的字符串(可容纳字母,数字以及特殊字符)。在括号中规定字符串的长度

varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。

date(yyyymmdd)容纳日期


那么我们使用create table创建上述的表Persons。

在创建数据Persons表之前,先得先创建一个数据库,可以理解为库是一个容器,创建库的方法很简单,如下图所示就可以创建一个新的数据库,或者使用“create database 数据库名” 语句也可以成功创建一个新的数据库。 

![创建数据库](http://img.blog.csdn.net/20160918155200353 )     创建好数据库之后,我在数据库中创建一张数据表,把我上面的Persons的值全插入进去,进行后面的sql操作。但是由于中文与sql默认**编码不符**,所以会出现全是**???**的乱码,所以我先解决编码问题。   解决编码问题,以sql server 2012为例,详细步骤如:**右键点击刚创建好的数据库->属性-> 选项->排序规则->选择为Chinese_PRC_CI_AS**   解决好上述一系列问题之后,就可以创建一个数据表了,我以上面的Persons表为例。sql语句如下:

use [MyDB]/*use 语句指定数据库*/createtablePersons    (        namevarchar(255)notnull,        ageintnotnull,        sexvarchar(255)notnull,        locationvarchar(255),        cityvarchar(255)    );

1

2

3

4

5

6

7

8

9

创建好数据表Persons之后,使用insert into 插入数据。insert into 分为行插数据跟列插数据。

insert into 子句

行插:insert into 表名称 values(值1,值2,……)

列插:insert into 表名称 (列1,列2,……) values(值1,值2,……)

我使用行插方法对表Persons插入数据。

insert into Persons values(N'张三',23,N'男',N'北京路',N'南京');insert into Persons values(N'李四',22,N'男',N'上海路',N'北京');insert into Persons values(N'小明',19,N'男',N'遵义路',N'北京');insert into Persons values(N'妮儿',18,N'女',N'广州路',N'重庆');insert into Persons values(N'翠花',21,N'女',N'天津路',N'哈尔滨');

1

2

3

4

5

得到如下结果集:

![插入数据之后的结果集](http://img.blog.csdn.net/20160918173018303)    下面使用我生成好的数据表Persons进行下面的sql操作。 —

(二)sql select 语句

select 语句用于从表中选取数据,结果被存储在一个结果表中。

select列名from表名;/*columns_name为想获取的列*/select*from表名;/*如果想获取全部列信息,可用*替代columns_name */

1

2

那么假如我想获取上面”Persons”表的name和city列,使用如下sql代码即可得到:

selectname,cityfromPersons ;/*当选取多行时,中间用英文状态下的','分隔开*/

1

查询结果如下所示:

![选择列为name和city](http://img.blog.csdn.net/20160918173836167)   那么假如我希望此结果只输出性别为男性的数据,此处用where子句。如下sql语句所示:

select*fromPersonswheresex=N'男';/*中文前面加"N"*/

1

查询结果如下所示:

![使用where找出性别为男的数据](http://img.blog.csdn.net/20160918174619373) 下面对where子句进行详细介绍

where 子句

作用:where子句用于规定选择的标准。

如需有条件地从表中选取数据,可将where子句添加select语句

select列名from表名where列名 运算符 值

1

下表的运算符可在where子句中使用:

操作符描述

=等于(切记sql中等于为一个”=”号,某些语言中等于为”==”号)

<>不等于(某些版本的sql可以写为”!=”)

>大于

<小于

>=大于等于

<=小于等于

between and在某个范围内

like搜索某种模式

in可以规定多个值


对上述表中的等于、不等于、小于、不小于、大于、不大于的使用跟其他语言的使用方法一样,在这里不赘述,详细来介绍下between and、like、in的使用方法。

1. between and

between 操作符在where子句中使用,作用是选取介于两个值之间的数据范围。 

sql between 语法

select列名from表名where列名 between 值1and值2;/*语句中的列名可相同可不同,值1与值2的数据类型必须相同*/

1

使用between and 语句获取表Persons中age在18-22岁的人,sql between语句如下:

select*fromPersonswhereage between18and21;/*between and语句获取的值包含两端的值*/select*fromPersonswhereage >=18andage<=21;/*等同于上句的查询结果*/

1

2

3

查询结果如下所示:

![使用between and语句查询一个范围内的数据](http://img.blog.csdn.net/20160918175057891)  

2. like 子句

like 操作符用于在where子句中搜索列中的指定模式。

sql like 操作符语法

select列名from表名where列名likepattern;/* "%" 可用于定义通配符(模式中缺少的字母,还有其他通配符,如"_"等*/

1

想获取city中以”京”结尾的人,sql语句如下所示:

select*fromPersonswherecitylikeN'%京';

1

![like操作符](http://img.blog.csdn.net/20160918182423374)  

3. in 子句

in操作符允许在where子句中规定多个值。

sql in 语法:

select列名from表名where列名in(值1,值2)

1

in操作符实例:想选取出小明和妮儿的数据。

select*fromPersonswherenamein(N'小明',N'妮儿');

1

查询的结果如下所示:

![in子句的查询结果](http://img.blog.csdn.net/20160918180952897)

4. distinct 关键字

distinc关键字用于返回唯一不同的值(有点去重的意思)

distinct 语法:

selectdistinct列名from表名

1

对Persons数据表的city列进行distinct操作,sql语句如下:

selectdistinctcityfromPersons ;/*找出city列中的唯一值*/

1

查询的结果如下所示:

![distinct找出列的唯一值](http://img.blog.csdn.net/20160920092024222)

5. group by 语句

group by:合计函数,根据一个或多个列对表分组

sql group by 语法:

select列名,合计函数(列名)as新列名from表名groupby列名;/*合计函数一般有sum等,as表示为合计函数计算的结果新命名*/

1

对city列分组,计算其组的平均年龄,sql语句如下:

selectcity,sum(age)assum_agefromPersonsgroupbycity;/*对city分组,然后计算组内年龄的总和*/

1

查询的结果所下所示:

![group by 分组函数](http://img.blog.csdn.net/20160920093835902)   那么假如我想找出年龄和小于30的city,怎么做呢?首先我会想到用where语句来锁定范围,但是呢?sql中where 关键字无法与合计函数一起使用,***不信你自己试试呗***!这也正是**having子句** 出现的原因,那么下面我使用having子句来查询我想要的结果。

having 子句

  sql语句如下所示:

selectcity,sum(age)assum_agefromPersonsgroupbycityhavingsum(age)<30;/*这里需要注意的是having必须使用合计函数来查询结果,之前试过用sum_age<30,报错*/

1

  上面讲完了创建数据表(create table 表名)、插入数据(insert into),那么下面简单介绍下修改(update)和删除(delete)表中数据。

(三) update 语句

update 语句用于修改表中的数据。

sql update语法:

update表名set列名=新值where列名=某值;/*列名通常不同*/

1

假如我将李四的age填错了,想做出修改,那么sql 语句如下:

updatePersonssetage=20wherename=N'李四';/*中文前加N*/

1

查询结果如下所示:

![对数据修改 update](http://img.blog.csdn.net/20160920101943498) 通过修改表中的数据,如截图红框可见,李四的age已被修改。

(四)delete 语句

dalete 语句用于删除表中的行

sql delete 语法:

deletefrom表名where列名=值;/*删除符合where条件的行*/deletefrom表名;/*可以在不删除表的情况下删除所有行,意味着表的结构,属性和索引都是完整的,直接删除表为drop 表名*/

1

2

假如删除李四的信息,sql语句如下所示:

deletefromPersonswherename=N'李四';/*中文前加N*/

1

查询的结果如下所示:

可以看到Persons表中,李四的信息已经被删除。

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。