SQL Server 2012数据库应用与开发教程速成笔记

作者:山东某校大一学生,文学专业。

介于诸多高校计算机公共课程跟不上时代教育。

特此写出本文速成 SQL Server

前言:目前是2022年,市场上绝大多数公司使用的数据库大致为ORACLE和Mysql这两种之间,中小型公司使用micro sql(micro sql 指sql server)。

虽然大学教育志在培养个人素质能力,但SQL Server较于繁琐,对于初学者很不友好,目前市场我们随手可见编程学习,什么python学习就业兼职月薪2w,工作效率提升几倍等。我负责任的说:这是一种欺诈手段,经常可以看到打着python的广告,封面确是其他语言。python在我看来是一种极其简单的语言:一种解释型,最初被看作为傻瓜式的语言,python的难点在于对诸多库的使用,能否利用好每个库,用好每个方法是个难点。至于什么爬虫,爬数据用bs4,正则都能很好解决。这里多说一点爬虫简单的说就这两点

request,response。向服务器请求,服务器做回复。

基于最大的问题,我们学好SQL Server这么语言有什么用呢?

作答:首先我认为先保证学好SQL Server,要了解sql底层逻辑,数据结构等等,而学好这门语言不在于考试分数,考试可近似作为应试考试,没有具体价值,若仅是为考试学习SQL Server,是不可能学好这门语言的,但这样也会简单很多,本文出发点仅为考试学习SQL Server。

声明:本人从未学习过SQL Server,我的学习是Java +Mysql+.....,但MySQL和SQL Server在SQL语句有着诸多相识之处,若对本文质量担心,读者大可离开。

一,抽象和实体的关系。

理解抽象和实体是本次学习的出发点,也是面向对象学习的基础。

关键词类(Class)对象(Object)

那么什么是抽象,什么又是实体呢?我在此举出些许例子。

类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。

对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。万物皆可为对象。

对象是类的实体化,而类是对象的抽象化,如某财经大学21级某班39人,某班作为一个类,其中的甲某是具体的对象(该班只有一个甲某),那么甲某这个对象是该班的实例化,该班是甲某的抽象化。

类–(实例化)–>对象

对象–(抽象)–>类

一对多,多对多,一对一详解:

1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。

2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。

3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。

4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。

二,SQL Server数据类型详解

首先理解下什么是字节(Byte)?

1Byte=8bit,而在计算机单位里,最基本的单位是bit。在bit位里存放的都是计算机能够识别的二进制数0和1。

1 byte = 8 bit ,通俗理解就是上图中的8个小框就是1个字节的大小。

1. 整数类型
bigint:占8个字节,-2的63次方 到2的63次方-1。
int:占4个字节,相当于只能记一个数字 ,4个字节长度在内存里的表示是
11111111 11111111 11111111 11111111也就是取值范围是 -32728~32767之间 ,超过范围会报错。

smallint:占2个字节,-2的15次方 到2的15次方-1。
tinyint:占1个字节,相当于C#中的byte
2. 精确数字类型
decimal:固定精确度 -1038–1038-1
numeric:功能等同于decimal
写法:decimal(整数,小数),numeric(整数,小数)
默认:整数18位,小数0位
3. 近似数字(浮点)类型(不重要)
float[(n)]:表示范围:1.79乘以10的308次幂
n:表示精度,有效值1-53之间
real:知道即可
4. 文本类型,在SQL中文本类型赋值必须使用单引号中文使用nchar或者nvarchar,纯英文和数字使用char和varchar。(重要)

一般来说,如果含有中文字符,用nchar/nvarchar(防止同时存储中英字符造成混乱),如果纯英文和数字,用char/varchar(不必担心混乱)
char:固定长度的非unicode字符数据,最大长度是8000个字符。char(n)共长n个字节可以存放n个英文或者标点符号,或者n/2个中文。
varchar(n):n属于1-8000,可变长度的非unicode字符数据,最大长度是8000个字符。
nvarchar(4)共长8个字节,可以输四个汉字,也可以输4个字母,但最多四个。
nvarchar(n):n属于1-4000,可变长度的unicode字符数据,最大长度是4000个字符 。
text:存储长文本信息,最大长度为2^32-1个字符
nchar(n):表示存储固定长度为n字符长度的字符,固定长度的unicode字符数据,最大长度是4000个字符,nchar(4)共长8个字节,可以输四个汉字,也可以输4个字母,但最多四个。
ntext:存储可变的长文本信息,最大长度为2^30-1个字符
固定:当声明数据类型设置了固定长度,那么这个数据类型赋值的字符长度绝对不能超过这个规定,如果赋值的数据长度不足规定的长度,使用空格字符填充
可变:如果赋值数据长度不足,则自动缩短为实际赋值数据长度,内存空间按照指定大小,如果超过指定长度则依然按照实际赋值数据长度,内存空间跟着改变
类型长度最终影响的是内存空间
5. 日期时间类型(不重要)
datetime:允许范围1753-1-1至9999-1-1
smalldatetime:允许范围1900-1-1至2079-1-1
时间精度不同:datetime精确到3/100秒;smalldatetime精确到1分钟
赋值格式:以字符串格式填写
分隔符数字方式:2020-02-18或2020/02/18或02/18/2020
纯数字格式:02182020 月日年
英文数字方式:Feb 18,2020
不管哪种方式给日期时间类型赋值必须用单引号(’ ')
一月 Jan.。二月 Feb.。三月 Mar.。四月 Apr.。五月 May.。六月 Jun.。七月 Jul.。八月 Aug.。九月 Sept.。十月 Oct.。十一月 Nov.。十二月 Dec.。
6. 货币类型(很少用)
money:货币数-263-263-1之间,精确到货币单位的千分之一
smallmoney:货币数介于-214748.3648 – 214748.3648之间,精确到货币单位的百分之一
7 二进制类型(几乎不用)
binary:固定长度的二进制数据,最大长度为8000个字节
vbinary:可变长度的二进制数据,最大长度为8000个字节
image:可变长度的二进制数据,最大长度2^31个字节,应用场合:可用来存储图片类型

三,SQL 语句

SQL语句的四大分类分别是DQL、DML、DDL、TCL。其中DQL语句为重中之重,其余语句可自行跳过。首先我们需要明白为什么需要DQL语句,我们在excel里面的ctrl+f不是也能查找?还要什么select?这点需要明白算力问题,如果数据量只有几千条,excel完全胜任,但现在信息爆炸时代,企业间的数据往往以亿为单位,上百亿条数据,查询是个非常消耗能源的事情,怎么样能耗费最低的能量得到企业想要的数据呢?DQL就是重点了。

1、数据库查询语言(DQL)(最重要)

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块,简称DQL,Data Query Language。代表关键字为select。

select查询,from 从哪些表,where筛选条件,group by 分组按照什么关键字分组可以是列名等,having 过滤分组,order by 按照关键词升序,limit 限制结果展示 limt 0,3从第一条开始,共展示三条数据等同limit 3。

切记:where 后不能跟聚合函数,聚合函数如max,min,average,count等等。having后可跟聚合函数。

select本意查询,在sql server中代表着展示,如声明变量declare @a  int,@b int

select @a=10,@b=20  #注意:=为赋值,==为判断。

#a,b为变量名,可理解变量为一种会变的元素。

print @a,@b 就会出现a,b的值,我由衷的表示,用sql-declare语句需要变量是一种十分不合理的方式,或许是考虑C#的原因,但像declare-select这种语句几乎没有人使用,开发者创造这种语句只是为了完善sql server,而对于初学者来说,这是一种极具打击性,落后的学习方式。

重点:@声明局部变量,@@声明全局变量,什么是局部,什么是全局?可简单理解:局部a,b,

a的东西b不能轻易使用,同样b的东西a不能轻易使用;而全局变量c,a和b可以轻松使用c的东西,但c不能轻易使用a和b的东西,这就是局部和全局简单的概括。

如图:从score表中筛选数据:

 

 

select * from score as sc 
select * from score sc
# as 可省略,系统默认。

inner join 内链接,系统默认对齐两张表按照表名左右先后顺序,若两张表列明重复,展示结果自动命名,
left join , right join,(左链接,右链接)其后必须写入条件使多张表之间对齐,否则报错。
#注意若两张表之间的行数不同,则按照链接原则自动重复,如图。

 

如图limit 0,3 等同于 limit 3;注:在计算机里0代表第一行,起始的位置。

2、数据库操作语言(DML)(没必要细讲)

用户通过它可以实现对数据库的基本操作。简称DML,Data Manipulation Language。代表关键字为insert、delete 、update。

3、数据库定义语言(DDL)(用不到)

数据定义语言DDL用来创建数据库中的各种对象,创建、删除、修改表的结构,比如表、视图、索引、同义词、聚簇等,简称DDL,Data Denifition Language。代表关键字为create、drop、alter。和DML相比,DML是修改数据库表中的数据,而 DDL 是修改数据中表的结构。

4、数据控制语言(DCL)(基本不用)

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。简称:DCL,Data Control Language。代表关键字为grant、revoke。

四,SQL -循环,IF语句

循环语句大体共有while和for两种,(没啥好讲的)

其中while语句开始和结束分别需要begin和end。

if语句表示判断,如:int a =3; if a >1{

System.out.print"hhhhh"}

else{

System.out.print"6666"}

那么输出结果是hhhhh,简单易懂。

五,SQL -主外键

首先说明主外键定义:PRIMARY KEY,主键不可以重复,不可以有null值,null不等于没有,null是空值的意思。

外键作为主键,但外键却可以重复。如:a,b,c三张表,a,b,c同时有三列相同的数据,列名为id,都定义为主键,那么a的id对于a是主键,对于b,c是外键,外键只是相对产生的,那么在这三张表之间,a,b,c每张表都有两个外键,故外键可以重复,也可以为null值。(无聊的名词),那么怎么让主外键关联起来呢,例如删除a表的员工信息,同时使b和c表关于该员工的信息删除,建立主外键约束。(几乎都会避免使用这个,搞不好容易dang机)

六,SQL -索引

什么是索引?

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。简单来说索引的出现就是为了提高数据的查询效率,就像书的目录一样。在书籍中,用户不必翻阅完整个书就能根据目录迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。上述是官方定义,简单的来说是采取一种方式,提高数据库查询效率,例如一张表里有300w个员工信息,需要查找所有叫张三的员工信息,传统的查找,需要遍历(读取)完所有的元素,这是非常浪费算力,资源的事情,为了避免这种事情的发生,有了索引,采取对应的索引方式,能快速的遍历数据,得到结果。如果想要学好索引,需要了解数据结构了解B树,B+树,平衡二叉树,红黑树等数据结构。这是个麻烦的事情,毕竟你要理解stack,node等,太麻烦了,索性不讲。
好了仔细一想确实没啥好讲的,若有问题评论区回复即可。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CBIhalsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值