国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 数据库 > 数据库应用 > sql server 2012版 学习笔记(基础版)

sql server 2012版 学习笔记(基础版)

来源:程序员人生   发布时间:2016-09-26 08:18:07 阅读次数:2732次
                                                   摘要

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


鸡汤1则:

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


本文目录

      • 1sql 简介
        • sql是用于访问和处理数据库的标准的计算机语言
        • 甚么是sql
      • 2安装与配置
        • sql server 2012版
      • 3sql DML DDL 基础认识
        • 数据库
        • 重要事项
        • sql DML 和 DDL
        • SQL 中最重要的 DDL 语句
      • 4sql 基本语句简单介绍
      • 1 sql create table 语句
        • insert into 子句
      • 2sql select 语句
        • where 子句
          • between and
          • like 子句
          • in 子句
          • distinct 关键字
          • group by 语句
          • having 子句
      • 3 update 语句
    •   
      • 4delete 语句


1、sql 简介

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

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

甚么是sql?

  • sql指结构化查询语句

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

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


2、安装与配置

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语言。


3、sql DML DDL 基础认识

数据库

  1个数据库通常包括1个或多个表。每一个表由1个名字标识(例如“客户”或“定单”)。表包括带有数据的记录(行)。
  下面的例子是1个名为”Persons”的表:

name ages sex address city
张3 23 北京路 南京
李4 22 上海路 北京
小明 19 遵义路 北京
妮儿 18 广州路 重庆
翠花 21 天津路 哈尔滨

 
  上面的表包括4条记录(每条对应1个人)和5个列(姓名、年龄、性别、地址、城市) 


重要事项

sql对大小写不敏感


sql DML 和 DDL

  1. sql DML(数据操作语言)
      可以把SQL分为两个部份:数据操作语言(DML)和数据定义语言(DDL)。
    sql(结构化查询语言)是用于履行查询的语法。sql语言也包括更新、插入和删除记录的语法。
    查询和更新指令构成了sql的DML部份:

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

SQL 中最重要的 DDL 语句:

  • create database  - 创建新数据库
  • alter database     - 修改数据库
  • create table         - 创建新表
  • alter table            - 变更(改变)数据库
  • drop table           - 删除表
  • create index         - 创建索引(搜索键)
  • drop index           - 删除索引

4、sql 基本语句简单介绍

下面我先在数据库中创建1个数据表,然后在对数据表进行1系列的操作。
那末先了解在数据库中怎样创建1张数据表?

(1) 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表之前,先得先创建1个数据库,可以理解为库是1个容器,创建库的方法很简单,以下图所示就能够创建1个新的数据库,或使用“create database 数据库名” 语句也能够成功创建1个新的数据库
  


创建数据库
 

  创建好数据库以后,我在数据库中创建1张数据表,把我上面的Persons的值全插入进去,进行后面的sql操作。但是由于中文与sql默许编码不符,所以会出现全是???的乱码,所以我先解决编码问题。
  解决编码问题,以sql server 2012为例,详细步骤如:右键点击刚创建好的数据库->属性-> 选项->排序规则->选择为Chinese_PRC_CI_AS
  解决好上述1系列问题以后,就能够创建1个数据表了,我以上面的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'张3',23,N'男',N'北京路',N'南京'); insert into Persons values(N'李4',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操作。


(2)sql select 语句

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

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中等于为1个”=”号,某些语言中等于为”==”号)
<> 不等于(某些版本的sql可以写为”!=”)
> 大于
< 小于
>= 大于等于
<= 小于等于
between and 在某个范围内
like 搜索某种模式
in 可以规定多个值

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

1. between and

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

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

使用between and 语句获得表Persons中age在18⑵2岁的人,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'%京';


like操作符
 

3. in 子句

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

sql in 语法:

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

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

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

查询的结果以下所示:


in子句的查询结果

4. distinct 关键字

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

distinct 语法:

select distinct 列名 from 表名

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

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

查询的结果以下所示:


distinct找出列的唯一值

5. group by 语句

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

sql group by 语法:

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

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

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

查询的结果所下所示:


group by 分组函数

  那末假设我想找出年龄和小于30的city,怎样做呢?首先我会想到用where语句来锁定范围,但是呢?sql中where 关键字没法与合计函数1起使用,不信你自己试试呗!这也正是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)表中数据。

(3) update 语句

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

sql update语法:

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

假设我将李4的age填错了,想做出修改,那末sql 语句以下:

update Persons set age=20 where name=N'李4'; /*中文前加N*/

查询结果以下所示:


对数据修改 update

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

  

(4)delete 语句

dalete 语句用于删除表中的行

sql delete 语法:

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

假设删除李4的信息,sql语句以下所示:

delete from Persons where name=N'李4'; /*中文前加N*/

查询的结果以下所示:


这里写图片描述

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


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生