SQL Base

2022-05-07 00:00:00 查询 数据 数据库 操作 删除

SQL Base Part

一、 SQL数据库基础

1、 使用数据库的必要性

当今时代,对数据的有效存储、高效访问、方便共享以及安全性控制要求越来越高,所以使用数据库是势在必行;而数据库经历了文件系统、代数据库(IBM的IMS)、第二代数据库(SQL关系数据库萌芽)、第三代数据库(关系型数据库);

2、 数据库的基本概念:

1) 实体

在数据库概念中,实体是用来描述客观存在的、可以被描述的事物;

2) 记录

在数据库系统中,数据存放在表中,而表中的数据按照行来存放,一行记录就被称作是一条记录,同时,也被称为是一个实体;

3) 数据库

它是一个数据库系统,用来存储记录和记录之间的关系,并提供各种不同的访问权限,确切来讲,它是一个互相关联的数据集合和一组可以访问这些数据程序的集合;

4) 数据库表

数据库中的数据都是按照不同的功能设计存放在不同的表中,表是记录的集合;

5) 数据库系统和数据库管理系统

数据库系统是用来存放数据的一个系统工具;而数据库管理系统,是用来操作、管理、维护数据库的一个系统软件;

6) 数据冗余和数据完整性

数据在数据库的表中出现重复的现象,也就是出现副本的现象,就被称作数据冗余;解决办法是:采用分类存储的方式;
数据完整性其实就是指数据在数据库存储中的准确性,包括数据类型、数据引用的完整性、数据一致性;这些都是由于设计引起的;

3、 SQL server组件

1) 服务管理器:用来控制sql server的服务的开启和停止;

2) 企业管理器:用来提供可视化创建数据库、表、账户等;

3) 查询分析器:提供SQL窗口编写、调试、执行SQL语句、批处理、脚本等;

4) 联机丛书:提供SQL帮助

4、 企业管理器的使用

1) 建立组:为了便于SQLServer的管理,对数据库进行分组;

2) 建立注册:可以提供远程访问和登录;

3) 建立登陆和赋予权限:为了提高SQL的安全性;

5、 系统数据库和用户数据库

1)系统数据库


Master:记录系统级别的信息;

Model:用作在系统上创建数据库的模板;

Msdb:供sql server代理程序调度警报、作业以及记录操作;

Tempdb:保存所有的临时表和临时存储过程;

2)用户数据库:


6、 创建和管理数据库

1) 创建数据库

其实就是创建数据库的数据库文件、日志文件、文件组;

2) 收缩数据库:因为在数据库中,使用一段时间后,因删除而造成数据库中空闲太多,这样要减少分配给数据库文件和事务日志文件的空间;

3) 移动数据库

根据需要,想要移动数据库的物理文件拷贝到其他机器上运行时,必须先对其进行分离,然后再移动;

4) 配置数据库的选项

一般会配置它的主数据库文件、日志文件、文件组等存储位置、大小等其他属性;

5) 删除数据库

当数据库不再被使用时,可以选择删除数据库,以释放内存空间,将其物理文件删除;

二、 SQL数据库表的管理

1、 与表相关的概念

1) 数据完整性

约束完整性(符合主键、性约束、标识列)、域的完整性(指定输入的列值的有效性,符合当时定义表时的数据类型)、引用完整性(表与表之间的主外键关系是否符合要求)、自定义约束完整性(比如对Email的check约束);

2) 主键、外键

主键是用来标示表中的行的,为了防止重复,设置主键可以确保行是的,一个表只能有一个主键,当然也可以在表中不设主键,为了便于查询等操作,建议为每一张表都设一个主键;并且主键应该是不容易变动和更新的;

外键是引用了主表中的主键的值,可以使两表之间建立起了连接,便于两表之间的操作;

2、 建立数据库表

1) 企业管理器中建表


2) 企业管理器中设置表的属性


3、 建立表间关系

表与表之间的关系:主表与子表之间的关系称为主外键关系;子表中的外键引用至主表中的主键的值,切记的一点:子表中的相关数据,在主表中必须存在,在删除子表前,不能够删除主表;

4、 建立约束检查

check约束,用来检查数据的合法性,比如邮箱地址:check(email like ‘%@%.%’)类型;

5、 导入和导出数据

具体操作步骤为:

选中数据库à右键所有任务à选择导入/导出数据à进入向导进行操作;

6、 删除表

当表不再被使用时,可以选中该表,点击右键,删除,以释放硬盘存储空间;

7、 标识列

标识类必须是整型,包括标示种子和标示增量,定义了标识列后,向该表插入数据时,无需显示指定该列的值;

8、 默认值

当对某项数据输入时,这类数据的值都是重复的一个值,但是又不能没有,这个时候可以考虑使用默认值,可以对这列不填,默认的添加为该默认值,也可以重新指定新值;

三、 SQL数据管理

1、 SQL以及T-SQL简介

当我们在对大量数据进行操作时,就不能采用手动输入输出操作了,一是太耗费工时,二是大量数据手动操作往往会出错,这个时候,需要一门来辅助进行操作的语言,那这门语言应运而生---SQL,它是为数据库提供一系列操作指令,可以执行一系列的对数据库的操作,它只能被数据库所识别;

而T-SQL是标准SQL的加强版,为SQL提供了补充,将在SQL Senior Part汇总T-SQL;

2、 T-SQL中的表达式和逻辑运算符

1) 条件表达式

它可以包含一个或多个参数:常量(常用‘’或者“”来表示)、列名(必须和数据库中的表的字段表示一致)、一元运算符(仅有一个操作数)、二元运算符(操作数有两个)

2) 逻辑表达式

AND、OR、NOT

IN表示范围;

3、 使用T-SQL插入数据

1) 一次插入一行

Insert [into] <表名> [列名] values (值列表)

2) 一次插入多行

一次插入多行有三种方式可以实现:

方式(1)union关键字

Insert [into ] <表名> [列名]

Select <值列表> union

Select <值列表> union

……

Select [值列表]

方式(2)select into 语法

Select [列名] into <表名,这里的表不应该预先存在>

From <原始表>

方式(3)insert select语句

Insert [into] <表名,这里的表必须预先存在> [列名]

Select [列名] from <原始表>

4、 使用T-SQL进行更新数据

Update <表名> set <列名> = <值> where [条件]

5、 使用T-SQL删除数据

1) 删除表中部分数据

Delete from <表名> where <列名> = <值>

2) 删除表中所有数据

Truncate <表名>

四、 数据查询

1、 企业管理器中对数据的查询

Select [列名] from <表名> where <列名> = <值>

2、 T-SQL查询基础

1) 查询和记录集的概念

查询就是将所想要得到的数据取出来;

一般将数据取出后会放在记录集中,类似于表的结构,展示给用户,记录集的结构实际上和表的结构相同,都是由对应的行和列组成;

2) 查询语法

Select [列名或*] from <表名> where <列名> = <值>

3、 查询排序

Select [列名或*] from <表名> where <列名> = <值> order by <列名> [desc或 ase]

4、 在查询中使用函数

1) 字符串函数

Len(获取字符串长度) charIndex(获取个串在第二个串中的位置) lower(转化为小写) upper(转化为大写) ltrim(去掉左面的空格) rtrim(去掉右面的空格) right(截取字符串,从右边返回指定数目的串)

Replace(替换) stuff(删除指定长度并插入一个新的字符串)


2) 日期函数

Getdate dateadd datepart dataname datediff


3) 数学函数

Abs ceiling floor power qurt sign round


4) 系统函数

Convert current_user datalength system_user host_name

User_name


5、 模糊查询

1) 使用like关键字


2) Between范围查询

Select <列名或*> from <表名> where <列名>

Between A and B

3) In列举值查询

Select <列名或*> from <表名> where <列名>

in (A, B……)

6、 聚合函数的使用

Avg(列名)

Sum(列名)

Max(列名)

Min(列名)

Count(列名)

7、 分组查询

1) Group by语句的使用

Select <列名 或 * > from <表名> where <列名> = <值>

Group by <列名>

注:在select语句中,仅允许使用一下几项:

被分组的列;

为每个分组返回一个值的表达式,例如用一个列名作为参数的聚合函数;

2) Having子句的筛选

Select <列名 或 * > from <表名> where <列名> = <值>

Group by <列名> having <列名> =<值>

8、 多表链接查询

1) 多表链接查询分类

内联接:返回的是完全匹配的列的情况;

外联接:

左外联接:以左表为基准进行查找,将左表中所有的数据都列出来,而左表中有,在右表中没有对应的数据的则用null来填充,而右表中有,左表中没有的行则不显示;

右外联接:同左外联接;

完整外联接:返回左右两表中的所有的行,没有的将补充为空;

交叉联接—---几乎很少用到;

2) 内链接查询


3) 外链接查询

左外联接


右外联接


完整联接
————————————————
版权声明:本文为CSDN博主「wlsugerFly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wlsugerfly/article/details/6254319

相关文章