首页 > 数据库 > 其他综合 >

sqlserver2012版学习笔记(基础版)

2016-09-21

sqlserver2012版学习笔记(基础版)。因为最近参加校招,题库中有一部分sql语句的题目,感觉不是很难吧?但因之前没学过sql这门语言,当时心里是拒绝的,所以决定发疯图强,找些资料,学了之后根据自己的理解写出来,再说以后肯定也是会用到的。

摘要

因为最近参加校招,题库中有一部分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语法

create table 表名

(列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

......

)

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

数据类型描述

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

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

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

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

date(yyyymmdd)容纳日期

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

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

创建数据库

创建好数据库之后,我在数据库中创建一张数据表,把我上面的Persons的值全插入进去,进行后面的sql操作。但是由于中文与sql默认编码不符,所以会出现全是???的乱码,所以我先解决编码问题。

解决编码问题,以sql server 2012为例,详细步骤如:右键点击刚创建好的数据库->属性-> 选项->排序规则->选择为Chinese_PRC_CI_AS

解决好上述一系列问题之后,就可以创建一个数据表了,我以上面的Persons表为例。sql语句如下:

use [MyDB] /*use 语句指定数据库*/

create table Persons

(

name varchar(255) not null,

age int not null,

sex varchar(255) not null,

location varchar(255),

city varchar(255)

);

创建好数据表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'哈尔滨');

得到如下结果集:

插入数据之后的结果集

下面使用我生成好的数据表Persons进行下面的sql操作。

(二)sql select 语句

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

select 列名 from 表名; /*columns_name为想获取的列*/

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

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

select name,city from Persons ; /*当选取多行时,中间用英文状态下的','分隔开*/

查询结果如下所示:

选择列为name和city

那么假如我希望此结果只输出性别为男性的数据,此处用where子句。如下sql语句所示:

select * from Persons where sex=N'男'; /*中文前面加"N"*/

查询结果如下所示:

使用where找出性别为男的数据

下面对where子句进行详细介绍

where 子句

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

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

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

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

操作符描述

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

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

>大于

<小于

>=大于等于

<=小于等于

between and在某个范围内

like搜索某种模式

in可以规定多个值

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

1. between and

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

sql between 语法

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

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

select * from Persons where age between 18 and 21; /*between and语句获取的值包含两端的值*/

select * from Persons where age >=18 and age<= 21; /*等同于上句的查询结果*/

查询结果如下所示:

使用between and语句查询一个范围内的数据

2. like 子句

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

sql like 操作符语法

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

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

select * from Persons where city like N&#39;%京&#39;;

like操作符

3. in 子句

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

sql in 语法:

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

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

select * from Persons where name in (N&#39;小明&#39;,N&#39;妮儿&#39;);

查询的结果如下所示:

in子句的查询结果

4. distinct 关键字

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

distinct 语法:

select distinct 列名 from 表名

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

select distinct city from Persons ;/*找出city列中的唯一值*/

查询的结果如下所示:

distinct找出列的唯一值

5. group by 语句

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

sql group by 语法:

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

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

select city,sum(age) as sum_age from Persons group by city;/*对city分组,然后计算组内年龄的总和*/

查询的结果所下所示:

group by 分组函数

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

having 子句

sql语句如下所示:

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

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

(三) update 语句

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

sql update语法:

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

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

update Persons set age=20 where name=N&#39;李四&#39;; /*中文前加N*/

查询结果如下所示:

对数据修改 update

通过修改表中的数据,如截图红框可见,李四的age已被修改。

(四)delete 语句

dalete 语句用于删除表中的行

sql delete 语法:

delete from 表名 where 列名=值; /*删除符合where条件的行*/

delete from 表名; /*可以在不删除表的情况下删除所有行,意味着表的结构,属性和索引都是完整的,直接删除表为drop 表名*/

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

delete from Persons where name=N&#39;李四&#39;; /*中文前加N*/

查询的结果如下所示:

这里写图片描述

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

相关文章
最新文章
热点推荐