DB数据库
主要是数据库方面的文章,包括SQL server、MySQL、Oracle等。
陆老师Peter
高校计算机专业教师、项目经理、软件研发负责人。
展开
-
IEnumerable接口(2)——C#中的IEnumerable ,ICollection,IList,IQueryable, List
IEnumerableNamespace: System.Collections最基本的列表容器,连列表项Count都不能获取 允许遍历, 但不允许添加、删除、更新列表项 支持使用where linq查询ICollectionNamespace: System.CollectionsIEnumerable 的扩展,增加了添加、删除、更新等操作 可以获取列表项Co...转载 2019-12-18 10:29:01 · 299 阅读 · 0 评论 -
IEnumerable接口(1)——EF(1)——C#中的IEnumerable接口深入研究
C#和VB.NET中的LINQ提供了一种与SQL查询类似的“对象查询”语言,对于熟悉SQL语言的人来说除了可以提供类似关联、分组查询的功能外,还能获取编译时检查和Intellisense的支持,使用Entity Framework更是能够自动为对象实体的查询生成SQL语句,所以很受大中型信息系统设计者的青睐。IEnumerable这个接口可以说是为了这个特性“量身定制”,再加上微软提供的扩展(...转载 2019-12-18 10:24:04 · 540 阅读 · 0 评论 -
LINQ(7)——Lambda表达式(2)——LINQ常用lambda扩展方法
1. 以where为例。2. linq的用法最终是编译成lambda用法。原创 2019-08-23 13:15:52 · 186 阅读 · 0 评论 -
LINQ(6)——LINQ常用扩展方法
下面的方法都是IEnumerable<T>的扩展方法:Average计算平均值; Min最小元素; Max最大元素; Sum元素总和; Count元素数量; Concat连接两个序列;//Unoin all Contains序列是否包含指定元素; Distinct取得序列中的非重复元素; Except获得两个序列的差集; Intersect获得两个序列的交集; ...原创 2019-08-23 13:13:47 · 491 阅读 · 0 评论 -
LINQ(5)——排序,分组
1、orderby item2、orderby person.Age descending3、int[] values = { 1, 2, 5, 2, 3, 5, 5, 3, 4, 3, 3 }; var result = from i in values group i by i into g//按照i进行排...原创 2019-08-23 13:07:17 · 649 阅读 · 0 评论 -
LINQ(4)——Linq To Object
查询语句: int[] values = { 30, 5, 99, 77, 102, 8, 12, 35 }; var result = from item in values //foreach(int item in values) where item > 20 ...原创 2019-08-23 12:58:54 · 172 阅读 · 0 评论 -
LINQ(3)——案例:取出现次数最多的三个数
int[] values = { 1, 2, 5, 2, 3, 5, 5, 3, 4, 3, 3 }; var result = from item in values group item by item into g orderby g.Count() descend...原创 2019-08-23 12:45:52 · 585 阅读 · 0 评论 -
LINQ(2)——LINQ基础
1. 能做什么,将int数组中大于20的元素排序输出: int[] values = { 30, 5, 99, 77, 102, 8, 12, 35 }; var result = from item in values where item > 20 ord...原创 2019-08-23 12:39:32 · 152 阅读 · 0 评论 -
LINQ(1)——扩展方法
1. 在StringHelper类中编写QuotedStr方法,使用时恐怖。判断一个字符串是否是正确的Email地址:IsEmail.2. 总感觉不是很好,要是看起来字符串有一个IsEmail方法多好呀。将IsEmail放到一个单独的类中,类声明为static(静态类),方法是静态方法,并且在第一个string上增加this。哇,string类“增加”IsEmail方法了,这只是假象,本质上仍...原创 2019-08-23 11:04:51 · 178 阅读 · 0 评论 -
SQL Server(8)——Sql Server 数据类型与 C# 数据类型对照表
Sql Server 数据类型与 C# 数据类型对照表已验证类型(Sql Server 2012 & Visual Studio 2019)原创 2019-07-11 15:47:01 · 210 阅读 · 0 评论 -
SQL Server(7)——空值问题(2)——C#中的null
在C#中,int、bool、DateTime 等值类型的数据不可以为 null 。值类型的特点:值传递。string、person 等属于引用类型,其值可以为 null 。值类型和引用类型的区别是:传递数据时,值类型是值传递(拷贝传递),可以为 null ;引用类型是引用传递,不可以为 null 。------------------------------------------...原创 2019-07-10 22:54:29 · 733 阅读 · 0 评论 -
SQL Server(6)——自己编写的操作实体类的分页控件, 实现页码层与数据库的具体的信息隔离
目前网络上有很多成熟的分页控件, 不过很多都是基于Sql语句进行分页, 而且直接绑定到分页控件中, 不能通过实体集合进行绑定, 因此不是很适合我目前项目的架构开发, 偶然一次机会在博客上看到有"永不言拜"先生发表的Sqlserver存储过程和C#分页类简化你的代码!一文, 深受启发, 结合我正在使用的架构写了一个分页控件。分页控件在Web开发中是不可或缺的一个控件, 但目前很多分页控件, 是...原创 2019-07-01 15:25:03 · 170 阅读 · 0 评论 -
SQL Server(5)——获取当前插入记录的SQL Server自增字段的值
在程序中,插入一条记录后如何获得当前插入记录的SQL Server自增字段的值呢?方法如下:select DISTINCT @@IDENTITY as iden from Table解释:上述语句是对 SQL SERVER 的一个会话,也就是一条连接,返回该连接最后一条插入记录得到的SQL Server自增字段的值。假设有3个程序,分别连接SQL SERVER,有三个连接。3个程序都向...原创 2019-06-23 11:55:16 · 1181 阅读 · 0 评论 -
I/O(1)——SQL Server(4)——C#基础知识:路径拼接、创建文件夹、写文本文件,数据库元数据-系统视图
一、基础知识:1. Path.Combine() 可以进行两个路径的拼接,省得自己处理\的问题;2. Directory.CreateDirectory() 如果文件夹不存在则创建;3. File.WriteAllText 将字符串写入文本文件,如果文本文件不存在则创建;4. StringBuilder 可以用来更高效的进行字符串拼接,AppendLine方法会自动添加换行。二...原创 2019-06-21 20:59:47 · 243 阅读 · 0 评论 -
SQL Server(3)——一道关于员工与部门查询的SQL笔试题
建表:DEPARTMENTS:DEPARTMENT_ID(primary key),DEPARTMENT_NAME,LOCATIONEMPLOYEES:EMPLOYEE_ID(primary key),EMPLOYEE_NAME,EMPLOYEE_JOB,MANAGER,SALARY,DEPARTMENT_ID列出EMPLOYEES表中各部门的部门号,最高工...原创 2019-06-11 09:51:42 · 1610 阅读 · 0 评论 -
SQL Server(2)——在SQL Server数据库中,sa所指的意思
sa是system administrator的简写,即系统管理员的意思,SQL SERVER 系列安装完之后,数据库默认的拥有最高权限的用户。可以认为是超级管理员,怎么都能干。...原创 2019-05-27 22:05:44 · 4398 阅读 · 0 评论 -
SQL Server(1)——C#取整函数Math.Round、Math.Ceiling和Math.Floor
1.Math.Round:四舍六入五取偶引用内容Math.Round(0.0) //0Math.Round(0.1) //0Math.Round(0.2) //0Math.Round(0.3) //0Math.Round(0.4) //0Math.Round(0.5) //0Math.Round(0.6) //1Math.Round(0.7) //1Math.Round(...原创 2019-03-23 23:34:32 · 908 阅读 · 0 评论 -
MySQL(3)——日期时间(1)——mysql中date与datetime的区别
date类型可用于需要一个日期值而不需要时间部分时。MySQL 以 'YYYY-MM-DD' 格式检索与显示date值。支持的范围是 '1000-01-01' 到'9999-12-31'。datetime类型:可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:mm:ss'格式检索与显示 DATETIME 类型。支持的范围是'1000-01-0100:00:00...原创 2019-04-01 19:53:18 · 1061 阅读 · 0 评论 -
MySQL(2)——Navicat for MySQL怎么往表中填数据
只有往表中更新数据,数据库才会起到真正的作用。工具/原料 仔细阅读 方法/步骤1.打开数据库,首先连接localhost,如图所示。2.连接成功后,右侧便会显示已经建成的表,找到要修改的表,点“打开表”,进入编辑模式。3.点最下方的加号,添加一栏,如图所示。4.将数据填入表中,如图所示,点最下方的对号,将数据保存。5.将表中填入数据的同时,...原创 2019-04-01 11:20:36 · 16287 阅读 · 0 评论 -
引用文件(1)——MySQL(1)——【C#】图解如何添加引用using MySql.Data.MySqlClient;
使用C#连接MySQL时,经常会用到命名空间using MySql.Data.MySqlClient;这说明VS中没有添加引用,解决方法如下:1,可点击以下两个链接的其中任何一个,下载MySQL.Data.dll。http://down7.pc6.com/xy3/MySqlData.ziphttps://dev.mysql.com/downloads/file/?id=480300...原创 2019-03-26 15:19:09 · 1225 阅读 · 0 评论 -
Oracle(1)——C# 连接 Oracle 的几种方式
一:通过System.Data.OracleClient(需要安装Oracle客户端并配置tnsnames.ora)1. 添加命名空间System.Data.OracleClient引用2. using System.Data.OracleClient;3.string connString = "User ID=IFSAPP;Password=IFSAPP;Data Source=RA...原创 2019-02-28 21:51:30 · 670 阅读 · 0 评论 -
SQL联合查询(1)——left join 、right join 和inner join之间的区别
SQL的left join 、right join 和inner join之间的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行举例如下:-------------------------...原创 2019-05-04 13:42:50 · 165 阅读 · 0 评论 -
WinForm开发(6)——C#/winform程序打包部署时,如何把SQL数据库一起打包进去
打包数据库到安装程序中方法1. 备份/恢复先备份数据库:backup database 数据库 to disk='c:\备份.bak'将备份文件打包到安装程序中.在第一次运行程序的时候,进行数据库恢复(或专门做一个系统配置的程序,来控制完成此工作)restore database 数据库 from disk='c:\备份.bak'方法2. 分离/附加注意:这个方法中的分离等于删掉...原创 2019-05-06 16:45:56 · 3061 阅读 · 2 评论 -
SQL必知必会(19)——使用存储过程
1、存储过程存储过程(Stored Procedure)就是为以后使用而保存的一条或多条SQL语句。可将其视为皮文件,虽然他们的作用不仅限于批处理。2、为什么要使用存储过程通过把处理封装在一个易用的单元中,可以简化复杂的操作。 由于不要求反复建立一系列处理步骤,因而保证了数据的一致性。如果所有开发人员和应用程序都使用同一存储过程,则所使用的代码时相同的。这一点的延伸就是防止错误,需要...转载 2019-08-06 11:39:36 · 151 阅读 · 0 评论 -
SQL必知必会(8)——使用函数处理数据
1、函数注意:1、与几乎所有DBMS都等同的支持SQL语句不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能不同。2、可移植性:所编写的代码可以在多个系统上进行。3、是否应该使用函数?决定权在开发人员自己,如果决定使用函数,应该保证做好代码注释。2、使用函数大多数S...转载 2019-08-04 03:13:50 · 122 阅读 · 0 评论 -
SQL中 rtrim() 函数的使用
Rtrim舍去字符串右边的空字符串。rtrim是一个函数,返回删除字符串右边的空格后的字符串。用例子说话:select 'abc ', rtrim('abc '), 'abc ' + '123', rtrim('abc ') + '123'返回的结果:...原创 2019-08-07 10:54:49 · 59770 阅读 · 1 评论 -
SQL必知必会(4)——过滤数据
1、如何使用where字句数据库中一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特点操作或报告的需要提取表数据的子集。SELECT prod_name , prod_priceFROM ProductsWHERE prod_price = 3.49;注意:1、在同时使用order by和where子句时,应该让order by位于where之后。2、wher...转载 2019-08-02 11:31:50 · 190 阅读 · 0 评论 -
SQL必知必会(12)——联结表
1、联结1.1、关系表关系表的设计就是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联。好处:1、供应商信息不重复,不会浪费时间和空间。2、如果供应商信息改动,可以只更新Venders表中的单个记录,相关表中的数据不会改动。3、由于数据不重复,数据显然是一致的,使得处理数据和生成报表更简单。1.2、为什么要用联结数据存储在多个表中,怎么用一条SELECT语...转载 2019-08-05 00:28:07 · 154 阅读 · 0 评论 -
SQL必知必会(11)——使用子查询
1、子查询嵌套在其他查询中的查询。注意:1、任何SQL语句都是查询。但此术语一般指SELECT语句。2、利用子查询进行过滤SELECT cust_name,cust_contactFROM customersWHERE cust_id IN(SELECT cust_id FROM orders ...转载 2019-08-04 23:58:50 · 195 阅读 · 0 评论 -
SQL必知必会(10)——分组函数
1、数据分组要求返回每个供应商提供的产品数目,或者返回值提供一项产品的供应商的产品,或者返回提供10个以上产品的供应商的产品?使用分组可以将数据分为多个逻辑组,对每个组进行聚集计算。2、创建分组SELECT vend_id, COUNT(*) AS num_prodsFROM productsGROUP BY vend_id--上面的SELECT语句指定了两个列:vend_i...转载 2019-08-04 14:58:06 · 436 阅读 · 0 评论 -
SQL必知必会(9)——汇总数据
1、聚集函数汇总表中的数据,而不需要实际数据本身,因此,返回实际表数据纯属浪费时间和处理资源,为了方便这种类型的检索,SQL给出了5个聚集函数,聚集函数再各种主要SQL实现中得到了相当一致的支持。1.1、AVG()函数AVG()通过对表中行数并计算其列值之和,求得该列的平均值。AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。`SELECT AVG(pro...转载 2019-08-04 14:01:23 · 184 阅读 · 0 评论 -
SQL必知必会(7)——创建计算字段
1、计算字段存储在表中的数据都不是应用程序所需要的,我们需要直接从数据库中检索出转换,计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。与前面介绍的列不同,计算字段并不实际存在于数据库表中。注意:1、字段:基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常与计算字段一起使用。2、只有数据库知道SELECT语句中哪些列是实际的表列,哪些列...转载 2019-08-04 02:56:42 · 273 阅读 · 0 评论 -
SQL必知必会(6)——用通配符进行过滤
1、like操作符分析:如何搜索产品名中包含文本bean bag 的所有产品?用简单的比较操作符肯定不行,必须使用通配符。利用通配符,可以创建比较特殊的搜索模式。通配符:用来匹配值的一部分的特殊字符。搜索模式:由字面值,通配符或两者组合构成的搜索条件。搜索子句:为了在搜索子句中使用通配符,必须使用like操作。like只是dbms,后跟的搜索模式利用通配符匹配而不是简单的相...转载 2019-08-04 02:38:43 · 154 阅读 · 0 评论 -
SQL必知必会(5)——高级数据过滤
1、组合where子句为了进行更强的过滤控制,sql允许给出多个where子句,这些子句有两种使用方式,即以and子句或or子句的方式使用。注意:1、操作符:用来联结或改变where子句中的子句的关键字,也称为逻辑操作符。1.1、and操作符#检索由供应商DLL01制造且价格小于等于4美元的所有产品的名称和价格;SELECT prod_id , prod_price , p...转载 2019-08-04 02:24:03 · 174 阅读 · 0 评论 -
树TreeView(2)——树TreeView在数据库中的存储
树是有级次的,数据库表是二维的,怎么用二维的表储存级次的树就是一个难题。例如:如何从数据库取得所有省节点? 如何从数据库取得所有市节点?案例:论坛版块列表:可以用select * from t where FatherID=2获得“动漫特区”的所有子节点,所以不需要再建立一个“子节点”的字段。...原创 2019-07-21 13:46:32 · 616 阅读 · 0 评论 -
SQL Server(9)——SQL Server 2012 “阻止保存要求重新创建表的更改”问题的解决方法
1、问题:在SQL Server 2012 中,新建数据表的时候,提示如下错误,建表失败。在设计数据表的时候也会存在这个问题,设计好之后保存失败。都是同一个原因引起的,解决方法一样。2、解决方法:(1)工具——>选项。(2)在弹出的“选项”对话框中,设计器——>表设计器和数据库设计器——>阻止保存要求重新创建表的更改(S),将“阻止保存要求重新创建表的更改(S...原创 2019-07-12 16:42:40 · 644 阅读 · 0 评论 -
SQL必知必会(13)——创建高级联结
1、使用表别名SELECT cust_name,cust_contactFROM customer AS c,order AS o,orderItems AS OIWHERE c.cust_id = o.cust_idAND OI.order_num = o.order_numAND prod_id='RGAN01';注意:1、缩短SQL语句。2、允许在一条SELEC语句中多...转载 2019-08-05 00:49:19 · 136 阅读 · 0 评论 -
SQL必知必会(14)——组合查询
1、组合查询SQL允许执行多个查询(多条SQL语句),并将结果作为一个查询结果集返回。这些组合查询称为并或复合查询。主要有两种情况需要使用组合查询:1、在一个查询中从不同的表返回结构数据。2、对一个表执行多个查询,按一个查询返回数据。注意:1、组合相同表的两个查询所完成的工作与具有多个WHERE子句条件的一个查询完成的工作相同。2、创建组合查询可用UNION操作符来组合数...转载 2019-08-05 15:17:19 · 311 阅读 · 0 评论 -
SQL必知必会(15)——插入数据
1、数据插入INSERT用来将行插入(或添加)到数据库表。插入有几种方式:(1)插入完整的行。(2)插入行的一些部分。(3)插入某些查询的结果。注意:1、使用INSERT语句可能需要客户端/服务端DBMS中的特定安全权限。在你试图使用INSERT前,应该保证自己有足够的安全权限。2.1、插入完整的行INSERT INTO customersVALUES('Toy Lan...转载 2019-08-05 15:53:09 · 356 阅读 · 0 评论 -
SQL必知必会(3)——排序检索数据
1、排序数据SELECT prod_nameFROM ProductsORDER BY prod_name;注意:1、order by应该是select语句中最后一条语句。2、通常,order by子句中使用的列将是为显示而选择的列。但是实际上并不是这样,用非检索的列排序数据是完全合法的。3、子句:一个子句通常是由一个关键字加上所提供的数据组成。2、按多个列排序SE...转载 2019-08-02 10:57:58 · 121 阅读 · 0 评论