全国服务热线:

15861139266

SQL Sever数据库用法--苏州机器视觉培训苏州上位机培训
发布时间:2022-11-01 12:59:10 点击次数:575



作为应用程序产生的数据,起到存储,运算等功能,所以要学好上位机,必须要具备一定的数据库基础,数据库有很多种,主流的有SQL Sever,Oracle,DB2等,这里以SQL Sever为例进行讲解,因为SQL Sever,简单易懂,使用场合较多,学好了SQL Sever也有利于我们自学其他数据库!


 一般情况下,我们会对数据库数据进行基础数据设置,如制表,添加基础数据等等,做好后,我们可以根据我们需要通过C#编写程序的UI界面,对数据库数据进行增删该查,这样就形成了界面与后台数据的互动!

   因此作为上位机工程师,必须要掌握一些数据库处理的必备的操作功能!


数据,是对实际存在的事物特征及性能的表述,就是我们c#中所述的实体对象

我们要对不同的实体对象,以及同种实体对象的特征参数,性能参数等这些数据进行分类和有规律的存储,操作,就产生了数据库


数据库的优点:

1)大量存储数据,数据搜索非常方便

2)保持数据信息的同一性,数据完整性,能够实现数据共享及数据安全

3)可以进行分析操作,提取感兴趣的信息,分析得到新的信息

       数据表:实体事物信息存储的基本元素,同类事物存放在同一个表内

               数据表分行 和列 

       数据库:不同的实体对象可能有不同的性能,比如一个班级的学生,有学生个人信息表,学生每个学期的成绩表等,有时候一个数据表不能说明所有问题,所以就需要大量的数据表来存储,而这些数据表又是相互关联的,通过这个关联性,我们可以对其进行有效操作,这样的数据集合叫数据库

       数据库管理系统:是一个由用户使用的操作数据库的管理软件,目的是让用户通过软件操作,对数据进行增删改查等处理。

数据库管理系统功能:

1)创建数据库:提供数据定义的语言,或是具体软件操作,可以方便建立数据库

2)操作数据库:通过数据库操作语言实现对数据的存取及增删改查

数据库服务器:SQLSever (MSSQLSever)安装数据库服务的

1)运行在服务器端的运行程序,提高数据存储,处理等

2)在运行使用客户机SQL Sever Configurtion Mange之前必须首先打开该服务

      打开与关闭的方式:1)可以通过SQL Sever Configurtion Manger启动停止

3)同时按下windows图标+R键,进入运行,输入“services.msc”找到对应服务,打开即可


image.png

  数据库客户端:运行数据库管理系统软件,是应用程序    

          客户端和服务器程序是可以分开安装的,一个服务器可以被若干个客户端连接       


1.数据库基本操作

1)打开安装好的sql sever2014(Microsoft SQL Sever Management Studio)

image.png

准备连接服务器,图中的服务器名称格式:服务器名称(对应计算机名)\数据库实例名称(适合本地网络)


image.png

image.png


按照上图的路径找到服务器计算机名称和要连接的数据库实例名

填入,然后点击连接,登录进去

注意:(1)这里的服务器名称可以是服务器IP地址加上端口号(适合所有),我们一般输入“.”也能登陆进去(适合本机)条件是按照时候必须选择的是默认实例

      (2)更改完端口号后需要重新启动才有效 

      (3)第一次安装SQL Sever时候注意默认实例和命名实例的不同这个是设置你服务器数据库实例名称有关。



2)

点击左上方“新建查询”弹出如下数据查询分析器对话框

image.png

 在函数操作区就可以输入数据库操作函数对数据库进行操作了

           至于数据库操作函数,对于我们初学者,只要会查表使用就可以了,网上下载常用的sql sever数据库操作函数,对应去使用,不需要死记硬背

          例如 我需要查询某个数据库,假设新建好了的一个名为Scada的数据库,库里有个数据表名为data,我只需要在上面的函数操作区域,输入:

            use Scada

            go 

            select *from data

          点击执行

          函数操作区下放栏目就会弹出详细数据

         

         如果用上面的通过sql语句表去开发数据库,对于我们上位机应用来说是没有必要的,也是不太现实的,我们只需要掌握常用的操作函数即可,我们还可以通过简单的方式进逐步提高

        


2) SQLsever 验证登陆问题

登陆后右键左侧上方服务器名称,选择“属性”弹出如下栏目

image.png

将上面的验证方式修改为下面的混合登陆方式:

然后在左侧“安全性”找到“sa”,右击选择属性,在“常规”选项中设置或修改密码,在“状态”,将“登陆”启用,最后通过右键服务器名称,选择“重新启动”,这样就可以完成登录名的设置了

image.png


3)数据库的创建

image.png


 数据库创建的文件组成:主数据文件(.mdf),次要文件(.ndf)+日志文件(.ldf)

          一个数据库必须并且只能包含一个mdf,但是可以由多个ndf和ldf

           ndf 可以没有但是ldf 至少有一个

          当初始设置的主文件容量不够存储时,可以添加次要文件

       数据库创建过程如下

image.png

填写设置完成后点确认即可(我们可以创建一个数据库名称为 Teams数据库)


          用户数据库的分离与附加

          右键选择“任务”----“分离”

image.png

image.png

4)数据表的创建


  SQL Sever 数据类型

 字符数据类也是Sql Server中最常用的数据类型之一,用来存储各种字符,数字符号和特殊符号。在使用字符数据类型时,需要在其前后加上英文单引号或者双引号。 

(1)char(n) 

 当用char数据类型存储数据时,每个字符和符号占用一个字节存储空间,n表示所有字符所占的存储空间,n的取值为1~8000。如不指定n的值,系统默认n的值为1。若输入数据的字符串长度小于n,则系统自动在其后添加空格来填满设定好的空间;若输入的数据过长,则会截掉其超出部分。 

(2). varhcar(n|max) 

 n为存储字符的最大长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表示最大存储大小是2的31次方-1个字节。存储大小是输入数据的实际长度加2个字节。所输入数据的长度可以为0个字符。如varchcar(20),则对应的变量最多只能存储20个字符,不够20个字符的按实际存储。 

(3).nchar(n) 

  n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。此数据类型采用Unicode字符集,因此每一个存储单位占两个字节,可将全世界文字囊括在内(当然除了部分生僻字)。 

(4)nvarchar(n|max) 

 与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度为1。max指最大存储大小为2的31次方-1字节。存储大小是输入字符个数的两倍+2个字节。所输入的数据长度可以为0个字符

文本和图形数据类型

(1).text 

 用于存储文本数据,服务器代码页中长度可变的非Unicode数据,最大长度为2的31次方-1(2147 483 647)个字符。当服务器代码页使用双字节字符时,存储仍是2147 483 647字节。 

(2)ntext 

 与text类型作用相同,为长度可变的非Unicode数据,最大长度为2的30次方-1(1073 741 283)个字符。存储大小是所输入字符个数的两倍(以字节为单位). 

(3).image 

 长度可变的二进制数据,范围为:0~2的31次方-1个字节。用于存储照片、目录图片或者图画,容量也是2147 483 647个字节,由系统根据数据的长度自动分配空间,存储该字段的数据一般不能使用insert语句直接输入。

浮点数据类型

浮点数据类型存储十进制小数,用于表示浮点数值数据的大致数值数据类型。浮点数据为近似值;浮点数值的数据则Sql Server中采用了只入不舍的方式进行存储,即当且仅当要舍入的数是一个非零数时,对其保留数字部分的最低有效位上加1,并进行必要的近位。 

(1).real 

  可以存储正的或者负的十进制数值,它的存储范围从-3.40E+38~-1.18E-38、0以及1.18E-38~3.40E+38.每个real类型的数据占用4个字节的存储空间。 

(2)float[(n)] 

  其中为用于存储float数值尾数的位数(以科学计数法表示),因此可以确定精度和存储大小。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53. 

  其范围从-1.79E+308~-2.23E-308、0以及2.23E+308~1.79E-308。如果不指定数据类型float的长度,它占用8个字节的存储空间。float数据类型可以写成float(n)的形式,n为指定float数据的精度,n为1~53之间的整数值。当n取1~24时,实际上定义了一个real类型的数据,系统用4个自己存储它。当n取25~53时,系统认为其是float类型,用8个字节存储它。 

(3).decimal[(p[,s])]和numeric[(p[,s]) 

  带固定精度和小数位数的数值数据类型。使用最大精度时,有效值从-10^38+1~10^38-1。numeric在功能上等价于decimal。 

  p(精度)指定了最多可以存储十进制数字的总位数,包括小数点左边和右边的位数,该精度必须是从1到最大精度38之间的值,默认精度为18. 

  s(小数位数)指定小数点右边可以存储的十进制数字的最大位数,小数位数必须是从0到p之间的值,仅在指定精度后才可以指定小数的位数。默认小数位数是0;因此,0<=s<=p。最大存储大小基于精度而变化。例如:decimal(10,5)表示共有10位数,其中整数5位,小数5位。 

整数数据类型

   整数数据类型是常用的数据类型之一,主要用于存储数值,可以直接进行数据运算而不必使用函数转换. 

(1).bigint 

  每个bigint存储在8个字节中,其中一个二进制位表示符号位,其它63个二进制位表示长度和大小,可以表示-2的63次方~2的63次方-1范围内的所有整数。 

(2).int 

 int或者integer,每个int存储在4个字节中,其中一个二进制位表示符号位,其它31个二进制位表示长度和大小,,可以表示-2的31次方~2的31次方-1范围内的所有整数。 

(3).smallint 

 每个smallint类型的数据占用了两个字节的存储空间,其中一个二进制位表示整数值的正负号,其它15个二进制位表示长度和大小,,可以表示-2的15次方~2的15次方-1范围内的所有整数。 

(4).tinyint 

  每个tinyint类型的数据占用了一个字节的存储空间,可以表示0~255范围内的所有整数. 

日期和时间数据类型

(1).date 

  存储用字符串表示的日期数据,可以表示0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日)间的任意日期值。数据格式为“YYYY-MM-DD”: 

YYYY:表示年份的四位数字,范围为0001~9999; 

MM:表示指定年份中月份的两位数字,范围为01~12; 

DD:表示指定月份中某一天的两位数字,范围为01~31(最高值取决于具体月份) 

 该数据类型占用3个字节的空间。 

(2).time 

  以字符串形式记录一天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式为“hh:mm:ss[.nnnnnnn]”: 

hh:表示小时的两位数字,范围为0~23。 

mm:表示分钟的两位数字,范围为0~59。 

ss:表示秒的两位数字,范围为0~59。 

n*是0~7为数字,范围为0~9999999,它表示秒的小部分. 

time值在存储时占用5个字节的空间。 

(3).datetime 

  用于存储时间和日期数据,从1753年1月1日到9999年12月31日,默认值为1900-01-01 00:00:00,当插入数据或在其它地方使用时,需用单引号或双引号括起来。可以使用“/”、“-”和“.”作为分隔符。该类型数据占用8个字节的空间。 

(4).datetime2 

  datetime的扩展类型,其数据范围更大,默认的最小精度最高,并具有可选的用户定义的精度。默认格式为:YYYY-MM-DD hh:mm:ss[.fractional seconds],日期的存取范围是0001-01-01~9999-12-31(公元元年1月1日到公元9999年12月31日). 

(5).smalldatetime 

 smalldatetime类型与datetime类型相似,只是其存储范围是从1900年1月1日到2079年6月6日,当日期时间精度较小时,刻印使用smalldatetime,该类型数据占用4个字节的存储空间。 

(6).datetimeoffset 

 用于定义一个采用24小时制与日期相组合并可识别时区的时间。默认格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”: 

hh:两位数,范围是-14~14 

mm:两位数,范围为00~59; 

这里hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11月11日12点整,存储时该值将是2011-11-11 12:00:00+08:00,因为北京处于东八区,比UTC早8个小时。存储该数据类型数据时默认占用10个字节大小的固定存储空间. 

位数据类型

 bit称为位数据类型,只取0或1为值,长度1字节。bit值经常当作逻辑值用于判断true(1)或false(0),输入非0值时系统将其替换为1。 

二进制数据类型

(1)binary(n) 

  长度为n个字节的固定长度二进制数据,其中n是从1~8000的值。存储大小为n个字节。在输入binary值时,必须在前面带0x,可以使用0xAA5代表AA5,如果输入数据长度大于定于的长度,超出的部分会被截断。 

(2).varbinary(n|max) 

  可变长度二进制数据。其中n是从1~8000的值,max指示存储大小为2的31次方-1字节。存储大小为所输入数据的实际长度+2个字节。 

  在定义的范围内,不论输入的时间长度是多少,binary类型的数据都占用相同的存储空间,即定义时空间,而对于varbinary类型的数据,在存储时实际值的长度使用存储空间. 


数据表的列特征

1)是否可以为空,在输入数据是,数据库的列允许为空时,可以不输入数据,否则必须输入,对于关键列不能为空。

2)是否是标识列(自动完成编号的)

3)是否有默认值:如果数据表的某列在用户不输入数据时候,是否希望提供一个默认值,比如:用户不输入地址,则地址列默认为“地址不详”。

4)是否为主键:主键是实体的唯一标识,保证实体不重复!

数据表的标识:

1)数据表提供了一个标识列,它会自动增长列或者说自动编号列,有了标识列,这样实际报表中就避免了重名现象

2)标识列必须是整数类型,或没有小数位的精确类型,可以按照客户要求标识其起始大小及每次递增大小

3)有标识列的数据表呗删除某一行时候,数据库会将该行清空,不会填补进去,还会按照没有删除前的编号

4)标识列是系统自动的,用户不能自己输入数据,也不能更改数据

5)标识列可以定义为主键

主键:

1)sql中的主键是指数据表的主关键词,用于唯一标识一个行,自带一级索引效果。

2)主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键,又称主码。

3)它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

主键挑选的原则:

1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

外键 作用

  外键其实就是其他表的主键,主要用来表示这个表中的数据与另外那个表的数据之间的关系,一个表可以有多个外键。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。


主键和外键区别:

1)主键:唯一标识一条记录,不能有重复的,不允许为空;外键:表的外键是另一表的主键, 外键可以有重复的, 可以是空值。

2)主键的作用是用来保证数据完整性,主键只能有一个。比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

3)主键标示这个表 的记录的唯一性,,也就是一个表的主键上的列的值不能重复。外键是其它表的主键在这个表上对应的列。。。外键是用来做关联查询,以及对俩个表之间的约束。方便程序的编写!!

数据表创建操作:

image.png

表中设置完成后点击保存,切记!(表名称可以设置为 “allteams”)

假设刚建立的是某人的基本情况表,而在另外一张表中是公司成立的某个开发组的,想把这两个表联系起来怎么办

1)可以在原表格中增加 teamid ,成员的工号

2)建立的新表中将teamid,设置为主键 即可


image.png


新建表格,表名称设置“oneteam”

image.png

image.png

这样teamid就是原表格的外键


如果需要更改刚刚的设置,如下,注意改完后要保存

image.png

注意:可以对数据表中的某些数据填写添加约束,例如:对性别添加约束方法如下

image.png



完成后“确定”就可以了


 


另外通过创建“数据库关系图”,可以清晰看到给数据表关系

image.png

数据表一旦建立后有时候无法更改,(默认是阻止更改的)可以进行如下操作

image.png

数据操作:

1)行插入数据语法  

Insert[into] 数据表名称 (数据列名称1,列名称2..)values(数据列1对应值,数据列2对应值..)

例如:insert into Teams(name,gender)value(’大林’,‘男’)


注意: 列名称个数要等于对应数值个数

       非值类型加单引号

       数据值类型,必须和各列字段定义的一致

           编写时最好把表所有列都写上,没有数值的可以自己做个标准值代替,但注意标识列,不可更改,使用时列名称顺序可以调整,但值必须一一对应

2)基本查询语法

Select 列名称 from 源表名称 where 查询条件

例如  select name,gender from Teams(后面where 条件可以不写,就是查询全部的意思)

      select name,gender from Teams where age>20  表示查询出年纪大于20的人姓名,性别

      Select * from Teams   表示查询表中所有

3)更改实体语法

Update 数据表名称 set 列名=更新值 where 更新条件

例如  update Teams set name=‘大林’,gender =‘男’where id=1000

      表示把 id号为1000的那一行,姓名改成大林,性别改成男

 使用这个指令时,一个要有where 条件配合

4)删除语法

Delete from 数据表名称 where

Truncate table 数据表名称

例如  delete from Teams where gender =‘男’ 表示删除 Teams数据表中性别是男的行,一般条件后面用主键

       delete from Teams  不加where条件表示删除所有表信息

       truncate table Teams  删除所有表信息

  

   注意:用delete, 被删除的记录,删除时不能被外键引用(即是当前表的本列也被另外一个表引用),否则不能成功删除,删除后如果添加,标识符会按照未删前继续增长

         用truncate ,要求被删除的表不能有外键约束,删除后重新添加数据,标识列会重新编排




2.数据查询


  查询的原理:  服务器执行客户端软件发来的查询命令,进行语法检查等过程后在原始数据表中查找到符合条件的数据,生成一个数据组合后的虚拟表,返回客户机

  查询的过程:查询过程是一个复杂的算法过程,不可能是一条一条检索的,例如查字典一样,它会有一定的算法程序在里面,这里我们就不再深究了,有专门的研究数据库的工程师去做!

  查询基本语法:有四部分组成  例如:Select 列名称 from 源表名称 where 查询条件

查询内容:Select 列名称        列名称用* 的话,查询所有列行

查询对象:from 源表名称        

查询条件: where 查询条件      查询多条件的时候用and 隔开(用英文半角写)

结果排序: order by 排序列名 ASC   结果按照对应列名升序排列 (ASC 表示升序 DESC表示降序)

 一般后面两项都是可选择的部分

1)as 与 =  用法:表示 对应列 用什么显示在展示的表格中,如果查询 null 就不能用等号

例如:列 StudentName Gender  birthday 用中文“姓名” “性别”“出生日期”展现在数据表中

select StudentName as 姓名,Gender as 性别,出生日期=birthday

from Students where Gender='男'(如果查询 null 就不能用等号,要“from Students where Gender is null)

2)表示查询表的前 5个或者前百分之20,姓名,学号,出生日期

   select top 5 StudentName,Gender,Birthday from Students

   select top 20 percent StudentName,Gender,Birthday from Students


3)查询条件: where studentName like ‘%军%’  表示查找学生姓名中中间字为“军”的

4)查询条件: where age between 23 and 38      表示查询年纪在23到38 之间,包含23和38

5)查询条件: where age in(23,38,24)       表示查询年纪是23和38,以及24的结果

6)查询内容:Select sum(age)as 总人数 from 表名称   表示查询总年纪

7)查询内容:Select max(age)as 年纪最大,min(age)as 年纪最小 from 表名称 

              表示查询年纪最大,和年纪最小

8)查询内容:Select avg(age)as 平均年纪 from 表名称   表示查询平均年纪


苏州零基础学员怎样学机器视觉

苏州电工基础学员如何学机器视觉

苏州PLC基础学员如何学机器视觉

苏州C#与工业自动化培训

苏州C#高级语言培训

苏州C#上位机培训

苏州C#上位机培训

苏州上位机软件开发培训

苏州上位机培训

苏州C#与PLC通信培训

苏州上位机界面开发培训

苏州C#与三菱PLC培训

苏州C#与运动控制卡SDK通信培训

苏州C#与西门子PLC通信软件开发培训

苏州C#与相机SDK培训

苏州C#与ABB六轴机器人联动培训

苏州C#与爱普生EPSON四轴机器人联动培训

苏州C#与数据库培训(sqlite,mysqlsever,access)

苏州C#与工业机器人通信培训

苏州工业机器人培训

苏州ABB工业机器人培训

苏州ABB六轴工业机器人编程培训

苏州EPSON四轴机器人编程培训

苏州C#与halcon机器视觉培训

苏州halcon机器视觉培训

苏州机器视觉培训

苏州机器视觉软件开发培训

苏州视觉培训

苏州视觉软件开发培训

苏州C#视觉软件开发培训

苏州C#与halcon联合机器视觉软件开发培训

苏州C#与halcon机器视觉培训

苏州CCD机器视觉培训

苏州机器视觉检测培训

苏州运动控制卡+机器视觉培训

苏州双相机机器视觉培训

苏州9点标定视觉培训

苏州手眼标定视觉培训

苏州智能视觉培训

苏州工业相机软件开发培训

苏州相机镜头选型培训

苏州视觉检测光源打光培训

苏州ABB机器人与halcon机器视觉应用

苏州C#联合halconABB工业机器人培训

苏州C#视觉引导ABB工业机器人培训

苏州C#视觉引导epson工业机器人培训

苏州C#视觉引导三轴运动培训

苏州C#三轴运动控制培训

苏州2D+3D视觉系统培训

苏州CCD机器视觉项目实战培训班

苏州halconCCD机器视觉项目培训

苏州halcon手眼标定抓取培训

苏州halcon软件应用培训

苏州visipro软件培训

苏州海康视觉软件开发培训

苏州Halcon视觉软件培训

苏州C#与CCD机器视觉项目实战培训班

苏州C#与halconCCD机器视觉项目培训

苏州C#与halcon手眼标定抓取培训

苏州halcon软件应用培训

苏州visipro软件培训

苏州海康视觉软件开发培训

苏州C#halcon软件应用培训

苏州C#与visipro机器视觉软件培训

苏州C#工业软件培训

苏州机器视觉引导机器人抓取培训

苏州视觉定位培训

苏州视觉缺陷检测培训

苏州机器视觉模板匹配定位培训

苏州SCL编程培训

苏州PLC培训

苏州PLC编程培训

苏州三菱plc培训

苏州西门子plc培训

苏州三菱plc培训(FX3U/FX5U)

苏州西门子plc培训(s7-200smart/s7-1200/s7-1500)


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络