数据库原理及应用--sql server

菜鸟学习数据库

  1. 目录

    菜鸟学习数据库

    一、目录

    第一章-数据库概述

    学习目标:明白什么是数据库,数据库管理系统的作用,以及功能

    内容:

    三级模式二级映像

    在学习以下几章节的操作,建议自行安装数据库sql server

    第二章  数据库、表和数据操作

    数据库的常用操作

    约束

    修改表

    表的 查询

    like语句的语法格式是

    sql常用函数

    常用的字符函数以及功能

    常用的日期函数

    常用的数据表操作有:建立表,修改表和删除表

    数据查询及用法

    简单查询

    连接查询1

    连接查询2

    子查询

    联合查询

     数据更新

    数据插入1

    插入成批查询结果2

    用select into 插入数据3

    数据修改

     视图

    视图的概念

    视图的作用

    视图的创建

    视图的重命名

    视图的修改

    删除视图

    视图查询与表查询相一致

    视图规则

    索引

    索引的基础知识 

    索引的分类

    创建索引

    查看索引

    重建索引

    删除索引


第一章-数据库概述

学习目标:明白什么是数据库,数据库管理系统的作用,以及功能

  1. 熟悉数据,数据处理和数据库的概念
  2. 数据库的特点,内容以及应用
  3. 了解概念模型与数据模型
  4. 了解什么是数据库,什么是DBMS

内容:

  • 数据:是事物的一种集合,如数字,图片,文字等(数值型数据和非数值型数据)
  • 数据处理:是对数据进行采集、存储、检索、加工、变换、和传输的过程
  • 数据处理分为四种类型:(1)以处理设备的结构方式区分,有联机处理方式和脱机处理方式;(2)以数据处理时间方式区分,有批处理方式,实时处理方式和分时处理方式;(3)以空间的分布方式区分,有集中式处理和分布处理方式;(4)以中央处理器的工作方式区分,有单道作业处理方式和多道作业处理方式和交互式处理方式
  • 什么是数据库:是长期存储的,有组织的,可以共享的数据仓库,有着结构化,独立性,永久性,共享性,低兀余度的,易扩展和海量性的特点
  • 数据库管理系统(DBMS)是一种系统软件,是数据库的核心
  • 数据库系统(DBS)包括数据库,数据库管理系统,应用系统和数据管理员(DBA)和用户
  • DBMS的地位:

    数据库原理及应用--sql server_第1张图片


    DBMS的主要功能:

  •           数据定义功能
  •           数据存取功能
  •           运行管理功能
  •           数据组织、管理和存储
  •           数据库的建立和维护功能
  • 数据库的基本语法(下列语法仅为了解,后续章节再深入学习)(增删改查)

数据操作:

  • select:从数据库中检索数据
  • insert:把新的数据记录插入数据库中
  • update:更新数据记录
  • merge:有条件的插入/跟新/删除记录
  • delete:从数据库中删除记录

数据定义

  • create table:创建新表
  • drop table:删除新表
  • alter table:更改表内结构
  • create view:创建视图
  • drop  view:删除视图
  • create index:创建索引
  • drop index:删除索引
  • create schema:创建模式
  • drop schema:删除模式
  • create domain:创建新的数据值式
  • alter domain:更改域定义
  • drop domain:删除域

访问控制

  • grant:授权用户访问 权限
  • revoke:撤销用户访问权限
  • create role:创建角色
  • grant role:授权角色包含用户访问权限
  • drop role:删除角色

事务控制

  • commit:结束事务(成功提交)
  • rollback:放弃事务(回滚事务,撤销事务执行)
  • set transaction:定义当前事务的数据访问特权
  • start transaction:显式的开始小心事务
  • savepoint:为事务设置一个保存点
  • 程序化sql(t-sql(transaction-sql))
  • declare:为查询定义一个游标
  • explain:描述查询的数据访问计划
  • open:打开游标
  • close:关闭游标
  • fetch:检索一条查询结果的记录
  • prepare:为动态执行做准备sql语句
  • execute:动态执行sql语句
  • describe:描述已准备的查询

  • 数据模型三大要素:数据结构、数据操作、完整性约束
  • 数据结构:网状模型、层次模型、关系模型(后续学习关系模型)
  • 数据模型的类型:概念数据模型(E-R图)、逻辑数据模型(层次、网状、关系)、物理数据模型

概念数据模型(实体-联系模型E-R模型)(实体,联系,属性,键,域)

数据库原理及应用--sql server_第2张图片

菱形代表联系,矩形代表实体,椭圆形代表属性,连接线代表实体、联系和属性之间的关系或实体与联系之间的相连关系(关系对应有:1-1,1-n,n-m这几种)


数据库系统管理的主要特点:

  • 采用数据模型组织和管理数据
  • 具有较高的数据独立性
  • 数据共享程度更高,兀余度比较小
  • 由DBMS软件提供了对数据统一控制的功能
  • 由DBMS提供了方便用户使用的接口

关系数据库系统(RDBMS)

三级模式二级映像

  • 数据库原理及应用--sql server_第3张图片

 

  1. 三级模式
  • 模式:也称逻辑模式,是数据库中所有数据的逻辑结构和特征的描述
  • 子模式:也称外模式和用户模式,是局部数据的逻辑结构和特征的描述
  • 内模式:也称存储模式,是数据物理结构和存储方式的描述
  • 数据库可以有多个外模式,但是只有一个模式和内模式
  1. 三级模式的优点有三种:
  • 有利于数据的安全性
  • 有利于数据共享,减少数据兀余
  • 简化接口,方便用户

      2.二级映像

  1. 外模式/模式映像

         外模式改变时,模式保持不变,保证了逻辑独立性

     2.模式/内模式

        当存储结构(内模式)发生改变时,模式保持不变,保证了数据的物理独立性

在学习以下几章节的操作,建议自行安装数据库sql server

第二章  数据库、表和数据操作

数据库的常用操作

创建数据库:create database 数据库名

代码式:

create database 数据库
on primary --主数据文件
(name = 逻辑名,
filename = 'd:\sql\xx.mdf',--地址
size = x, --文件大小
maxsize = 最大容量,
filegrouth = 增长方式

),
filegroup stugroup -- 次数据文件
(name = 逻辑名,
filename = 'd:\sql\xx.mdf',--地址
size = x, --文件大小
maxsize = 最大容量,
filegrouth = 增长方式
),
log on --日志文件
(name = 逻辑名,
filename = 'd:\sql\xx.mdf',--地址
size = x, --文件大小
maxsize = 最大容量,
filegrouth = 增长方式)

使用数据库:use 数据库名

删除数据库:drop database 数据库名【cascade(全清式)|restrict(约束式)】

修改数据库文件:

alter database 数据库名
modify name|file 新数据库名

and
--1.更改数据库名
alter database 数据库名
modify name = 新数据库名
--2.更改数据库文件
alter database 数据库名
modify file
(name =‘逻辑名’,
filename = 'd:\sql\xx.mdf',--地址
size =修改后大小
maxsize = 修改后最大容量,
filegrouth = 修改后增长方式)

移除文件:remove file ‘文件’

系统表

  • 不允许使用sql语言直接修改内容
  • 不允许编写程序直接访问系统表中信息
  • 如果需要系统表的信息,可以通过系统的存储过程和系统提供的函数进行访问

创建表:create table 表名

删除表:drop table 表名

约束

  • 主键约束:constraint 约束名 primary key(不可以有null值,而unique只能有一个null)
  • 空值约束:null/not null
  • 唯一性约束:unique constraint(可以有多个列组合,一个表只可以有一个primary key约束,儿可以有多个unique约束)
  • default约束:
  • check约束:检查约束

修改表

alter table 表名

[add 新列名 数据类型 列完整性约束]         --增加表

[drop column 列名]   --删除列

[modify 列名 数据类型 ]  --修改列属性

alter column 列名 列数据类型

表的 查询

select * from 表名     --查询全表

where <查询条件>

group by  列名 having 分组条件

order by 列名(desc降序)(升序默认)

where 条件

  • 比较:>、<、>=、<=、!=、!>、!<
  • 确定范围:between...and,not  between...and
  • 字符匹配:Like,not like
  • 空值:is null,is not null
  • 多重:and、or

在sql结构化查询语言中,like语句有着至关重要的作用。

like语句的语法格式是

:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。

A:% 包含零个或多个字符的任意字符串:

1、like'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。

2、like'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。

3、like'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。

B:_(下划线) 任何单个字符:

like'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

C:[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符: 

1,like'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。

2、like'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

D:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:

like'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

E:* 它同于DOS命令中的通配符,代表多个字符:

上面取自博客https://blog.csdn.net/yangshengwei230612/article/details/103779008?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162296630416780269877641%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162296630416780269877641&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-103779008.pc_search_result_cache&utm_term=sql%E4%B8%ADlike%E7%9A%84%E7%94%A8%E6%B3%95&spm=1018.2226.3001.4187

sql常用函数

count (*) 计算记录的个数,如人数
count(列名) 对某一列计数
sum(列名) 求某一列总和
avg   (列名) 求平均值
max(列名) 最大值
min(列名) 最小值
  • 注:在使用函数的时候,要记得与group by同用,否则可能会出错

常用的字符函数以及功能

ascll

返回字符表达式中最左侧的字符的ascll码

char 获取ascll码对应字符
left

用于截取从最左侧第一个字符开始,指定长度的字符串

eg:select left('qwerrttyyu',3)==>qwe

right 用于截取从最右侧第一个字符开始,指定长度的字符串
len

获取字符串长度

eg:select len('sdgfhgtdjh')==>10(10个字符)

lower 将大写转为小写
ltrim 删除前导空格字符串,返回删除了前导空格之后的字符串
ririm 清空右边连续的空格
reeplace(e1,e2,e3)

用e3表达式替换e1表达式中出现的e2表达式,并返回替换后的字符串

space 生成空格
str 数字向字符转换函数
substring

取子字符串

eg:select substring('hello',1,2)==>he

upper 将小写转换为大写

常用的日期函数

dateadd 更新的日期
DateDiff 返回跨两个指定日期的日期边界和时间边界
datepart 日期的字符串
day 返回一个整数,当天的datepart部分
getdate 系统时间
getutcdate 返回UTC时间
month 返回月
year 返回年

常用的数据表操作有:建立表,修改表和删除表

1,、创建表:

create table 表(列名 列数据类型 列完整性约束)

完整性约束有五种:主键约束、外键约束、唯一约束、空值约束、默认约束、检查约束

2.修改表:

alter table 表

add 列 数据类型 完整性约束      ---增加新的列

drop column 列                           ---删除列
alter column 列                           ---修改列

3.删除表

drop table 表

数据查询及用法

简单查询

select *(所查询的内容) from 表

where 条件表达式

group by 列 (having 列条件表达式)     --分组

order by 列                                               -- 排列

连接查询1

select 列

from 表1   join  表2  on 表1.列1=表2.列2

where 条件表达式

连接查询2

select 列

from 表1   , 表2 

where 表1.列1=表2.列2(条件表达式)

子查询

select 列

from 表1

where 列1  in

子查询select 列2 from 表2

where 条件表达式)

联合查询

select 列 1

from 表1

where 条件表达式

union 【all】

select 列2

from 表2

where 条件表达式

注:用union关键字联合两张表或多张表,各个select语句中列的个数、顺序、数据类型必须一致,列的名字或别名有第一个select的列名表决定,order by语句必须放在最后一个select语句中,在默认情况下,union将去除重复的行,而使用union all则会保留重复的行

连接查询是两张表的横向连接查询,而联合查询是两张表的纵向连接查询

 数据更新

数据插入1

insert into 表1(列1,列2....)

values (列值1,列值2....)

(列值1,列值2....)...

用于向表格中插入新的行

插入成批查询结果2

insert into 表1(列1,列2...)

子查询

用select into 插入数据3

select into 语句从一个表中选取数据,然后把数据插入表2中,差用与创建表的备份复件或者用于记录进行存储

将表2中数据备份到表1中:

select * into 表1【in externaldate】

from 表2

在表2中的数据(某一列的数据)插入表1中:

select 表2.列 into 表1【in externaldate】

from 表2

数据修改

update 表

set 列 1= 表达式,(列 2= 表达式...)

where 条件表达式

 视图

视图的概念

  • 视图是有其他表或视图上查询定义的一种特殊表,是一个虚表
  • 视图是查看数据库中数据的一种机制
  • 数据库中只存放视图的定义,不存放视图包含的数据(在基本表中),视图不占用物理空间
  • 视图中引用的表称为视图的基本表
  • 定义视图后,可以查询和更新,但对视图的查询与更新最终转换为基本表的查询与更新

视图的作用

  • 方便用户使用数据
  • 提供安全的保护机制
  • 增加操作灵活性
  • 提供一定的逻辑独立性(外模式)

视图的创建

create view 视图名(列1,列2..)

as (子查询)

with check option

视图的重命名

sp_rename 视图名,新视图名

视图的修改

alter  view 视图名

as (子查询)

删除视图

drop view 视图名

视图查询与表查询相一致

视图规则

  • 行列子集视图可以更新
  • 若视图有两个基本表导出,则此视图不能更新
  • 被修改的列必须直接引用表列中的基础数据,不能用聚合函数计算得到
  • 被修改的列不受group by和order by或distinct子句影响

视图可当做表一样操作,但规则要遵守,而且注意视图只是个虚表,不占物理空间

索引

索引的基础知识 

索引是关系中一列或几列值的列表及相应的指向关系中标识这些值的数据项的逻辑指针

索引能提高查询效率

通过创建唯一索引,可以保证数据库行的唯一性

外键上建立索引,可以加速连接,有益于实现数据的参照完整性

(简而言之就是省时以及提高性能)

索引和视图不同,创建聚簇索引会占用内存(物理空间)

索引的分类

聚簇索引:有且只能有一个

非聚簇索引:数据与 索引的存储位置相互独立,索引顺序与数据的物理排列顺序无关,可以建立等多个非聚集索引(与物理存储顺序无关)

唯一索引(其他索引):唯一的索引值对应表中唯一的数据

索引类型
聚簇索引 空间
非聚簇索引 XML
唯一索引 计算列上的索引
分区索引 带有包含列的索引
筛选 列存储
全文 等等

创建索引

create (unique)(clustered  |  nonclustered)index 索引名 on 表(列)(次序1),(列)(次序2)....

查看索引

exec sp_helpindex 表名

重建索引

dbcc dberindex(‘表’,索引,填充因子)

删除索引

drop index 索引 on 表或视图

注:索引在MySQL为重点掌握部分,在此文章为次重点掌握,在校考试则为了解部分

建议用书:数据库系统(封面为红色)(主学)、数据库系统原理及应用 (封面白色,手感略粗糙起点)(参考符练习本)以及数据库系统原理与应用技术(封面红白色)(参考)

练手的话去牛客网连选择题

由于小编的能力有限,欢迎各位大佬中的大佬前来评论指点出小编的错误

更ing.....

你可能感兴趣的:(SQL,sqlserver)