1数据库概述

  (1) 用自定义文件格式保存数据的劣势。

  (2) DBMS(DataBase Management System,数据库管理系统)和数据库,平时谈到”数据库”可能有两种含义:MSSQL Server,Oracle等某种DBMS;存放一堆数据库的    一个分类(CateLog)。

  (3) 不同品牌的DBMS有自己不同的特点:MYSQL,MSSQLServer,DB2,Oracle,Access,Sybase等。对于开发人员来讲,大同小异。

  (4) 除了Access,SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。学习,开发时是连接本机的数据库,上线运行时是数据库运行在单独的服        务器。

2数据库中的概念

  (1) CataLog(类)(又叫数据库DataBase,表空间TableSpace),不同类的数据因该放到不同的数据库中。

    1) 便于对各个CataLog进行个性化管理

    2) 避免命名冲突

    3) 安全性更高

  (2) Table(表);不同类型的资料放到不同的”格子”中,将这种区域叫做”表”,不同的表根据放的数据不同进行空间的优化,找起来也方便。

  (3) 列(Column),字段(Field)。

  (4)主键(Primarykey)

    (1) 主键就是数据行的唯一标示,不会重复的列才能当主键,一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都会设定主键。

     (2) 主键有两种选用策略;业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号,银行账号等。逻辑主键是使用没有任何业务意义的字段做主         键,因为很难保证业务主键不会重复(身份证号重复),不会变化(账号升位),因此推荐用逻辑主键。

    (3) 逻辑主键:完全给程序看的,业务员不会看的数据。

3.SQL Server管理

    (1) SQL Server的两种验证方式:用户名验证和Windows验证,开发时用Windows验证就行了。

    (2) 常用字段类型:bit(可选值0,1),datetime,int,varchar,nvarchar(可能含有中文用nvarchar)。

    (3) varchar(),nvarchar().char(n)的区别:char(n)不足长度n的部分用空格填充。Var: variable:可变的。

4.SQL语句入门

    (1) SQL语句是和DBMS”交谈”专用的语句,不同DBMS都认SQL语法。

    (2) SQL语句中字符串用单引号。

    (3) SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感。

    (4) 创建表,删除表不仅可以手工完成,还可以执行SQL语句来完成,在自动化部署,数据导入中用的很多。

      创建表: create table T_Person

  (

  ID int not null,

    Name nvarchar(50),

    Age int null

        )

      删除表:drop table T_Person

    (5) 执行简单的Insert语句:      insert into T_Person(ID,Name,Age) values(1,’Jim’,39)

    *(熟悉):SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类,create table,drop table,alter table等属于DDL,select,insert,Update,delete等属      于DML。

5. 主键选择

  (1) SQL Server中两种常用的主键数据类型:int(或bigint)+标识列(又称自动增长字段);uniqueidentifier(又称Guid)。

  (2) 用标识列实现字段自增可以避免并发等问题,不用开发人员控制自动增长,用标识列的字段在insert的时候不用指定主键的值,将字段的”是标识列”设置为”是”,一个表只    能有一个标识列。

  (3) Guid算法是一种可以产生唯一标示的高效算法,它使用网卡MAC地址,纳秒级时间,芯片ID码算出来的,这样保证每次生成的GUID永远不会重复,无论 是同一个计算机    上还是不同的计算机,SQL Server中生成GUID的函数newid(),.NET中生成GUID的方法:Guid.NewGuid(),返回值是GUID类型。

    例如:SQL Server:select newID()

    C#代码中 :Guid id=Guid.NewGuid();

  (4) (*)int自增字段的优点:占用空间少,无需开发人员干预,易读。缺点:效率低,数据导入导出的时候很痛苦。

  (5) (*)Guid的优点:效率高,数据导入导出方便,缺点:占用空间大,不易读。

6. 数据的基本操作

  1. 数据插入

    (1) insert语句可以省略表名后的列名,但是不推荐。Insert into Person2 values(‘lucy’,’38’)

    (2) 如果插入的行中有些字段的值不确定,那么insert的时候不指定那些列即可。

    (3) 给字段可以设置默认值,如果Guid类型主键的默认值设定为newid()就会自动生成,很少这样干: insert into person3(ID,Name,Age) values(newid(),’tom’,30)

  2. 数据更新

    (1) 更新一个列:update T_Person set Age=30

    (2) 更新多个列:update T_Person set Age=30,Name=’Tom’

    (3) 更新一部分数据:update T_Person set Age=30 where Name=’Tom’,用where语句表示只更新Name是’Tom’的行,注意SQL中等于判断用单个=,而不          是==。

    (4) where中还可以使用复杂的逻辑判断:

        update T_Person set Age=30 where Name=’Tom’ or Age<25. or相当于C#中的||(或者)。

    (5) where中可以使用的其他逻辑运算符是:or,and,not,<,>,>=,<=,!=(或< >)等。

  3. 数据删除

    (1) 删除表中的全部数据:delete from T_Person。

    (2) delete只是删除数据,表还在,和drop table不同。

    (3) delete也可以带where子句来删除一部分数据:delete from T_Person where FAge>30。

  4. 数据检索

    (1) 简单的数据检索:select * from T_Employee。

    (2) 只检索需要的列:select FName from T_Employee。

    (3) 列别名:select FNumber as 编号,FName as 姓名 from T_Employee。

    (4) 还可以检索不与任何表关联的数据:select 1+1,select newId(),select getDate()。

  5. 数据汇总

    (1) SQL聚合函数:max(最大值),min(最小值),avg(平均值),sum(和),count(数量)。

  6. 数据排序

    (1) order by子句位于select语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排序,ASC)还是降序(从大到小排          序,DESC)。

    (2) 按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序

        select * from T_Employee order by FAge Desc,FSalary Desc

    (3) order by子句要放到where子句之后:

        select * from T_Employee where FAge>23 order by FAge Desc,FSalary Desc

  7. 通配符过滤(模糊匹配)

    (1) 通配符过滤使用Like。

    (2) 单字符匹配的通配符为半角下划线”_”,它匹配单个出现的字符,以任意字符开头,剩余部分为”erry”:

        select * from T_Employee where FName like ‘_erry’

    (3) 多字符匹配的通配符为半角百分号”%”,它匹配任意次数(零或者多个)出现的任意字符,”K%”匹配以K开头,任意长度的字符串。检索姓名中包含”n”的员工的信息:

        select * from T_Employee where FName like ‘%n%’

  8. 空值处理

    (1) 数据库中,一个列如果没有指定值,那么值就为null,这个null和C#中的null不一样,数据库中的null表示”不知道”,而不是表示没有,因此select null+1结果是null,        因为”不知道”加1的结果还是”不知道”。

    (2) select * from T_Employee where FName=null    and     select * from T_Employee where FName!=null。都没有任何返回结果,因为数据库”不知道”。

    (3) SQL中使用is null,is not null来进行空值判断。

        select * from T_Employee where FName is null

        select * from T_Employee where FName is not null

  9. 多值匹配

    (1) select FAge,FNumber,FName from T_Employee where FAge in(34,23,35)

    (2) 范围值:

      1) select * from T_Emploee where FAge>=23 and FAge<=27

      2) select * from T_Employee where Fage Between 23 and 27

  10. 数组分组

    (1) 按照年龄进行分组统计各个年龄段的人数:

      select FAge,Count(*) from T_Employee Group by Fage

    (2) Group by子句必须放在where语句的后面

    (3) 没有出现在Group by子句中的列是不能放到select语句后的列名列表中的(聚合函数除外)。

      1) 错误:select FAge,FSalary from T_Employee group by Fage。

      2) 正确:select Fage,Avg(FSalary) from T_Employee group by Fage。

  11. Having子句

    (1) 在where中不能使用聚合函数,必须使用Having,Having要位于Group by之后。

      select Fage,Count(*) as 人数 from T_Employee Group by FAge Having Count(*)>1

    (2) 注意Having中不能不能使用为参数分组的列,Having不能代替where,作用不一样,Having是对组进行过滤。

  12. 限制结果集行数

    (1) select top 5 * from T_Employee order by FSalary Desc

    (2) (*)检索按照工资从高到低排序检索从第六名开始一共三个人的信息

      select top 3 * from T_Employee where FNumber not in (select top 5 FNumber from T_Employee order by Fsalary desc) order by FSalary Desc。

    (3) SQL Server2005后增加了Row_Number函数简化实现

  13. 去掉数据重复

    (1) select FDepartment from T_Employee——>select distinct FDepartment from T_Employee

    (2) distinct是对整个结果集进行数据重复处理的,而不是针对某一个列,因此下面的语句并不会只保留Fdepartment进行重复值处理。

    select distinct FDepartment,FSubcompany from T_Employee

SQL数据库开发知识总结:基础篇的更多相关文章

  1. SQL数据库开发知识总结:提高篇

    1.联合结果集 (1) 简单的结果集联合 select FNumber,FName,Fage from T_Employee\ union select FidCardNumber,FName,Fag ...

  2. Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 基础篇

    本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要争对C#初学者,巩固C#常用知识点: 中级篇主要争对WPF布局与美化, ...

  3. SQL Server调优系列基础篇(常用运算符总结——三种物理连接方式剖析)

    前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握. 通过本篇可以了解我们平常所写的T-SQL语句,在SQL ...

  4. SQL Server调优系列基础篇(并行运算总结篇二)

    前言 上一篇文章我们介绍了查看查询计划的并行运行方式. 本篇我们接着分析SQL Server的并行运算. 闲言少叙,直接进入本篇的正题. 技术准备 同前几篇一样,基于SQL Server2008R2版 ...

  5. SQL Server调优系列基础篇(子查询运算总结)

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  6. SQL Server调优系列基础篇 - 子查询运算总结

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  7. SQL Server调优系列基础篇(常用运算符总结)

    原文:SQL Server调优系列基础篇(常用运算符总结) 前言 上一篇我们介绍了如何查看查询计划,本篇将介绍在我们查看的查询计划时的分析技巧,以及几种我们常用的运算符优化技巧,同样侧重基础知识的掌握 ...

  8. SQL Server 调优系列基础篇 - 子查询运算总结

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  9. SQL Server调优系列基础篇(联合运算符总结)

    前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server200 ...

随机推荐

  1. MiinCMP1.0 SAE 新浪云版公布, 开源企业站点系统

    MiinCMP是一款开源企业站点系统,除可执行于256M左右100元的国内IDC外,JUULUU聚龙软件团队最近开发了面向新浪云的版本号,该版本号可将站点免费布署到新浪云SAE上.MiinCMP採用j ...

  2. 反射遍历List<>泛型类型

    有这样一个需求:一个实体模型,有一个属性是一个实体列表List<OrderDetail>,我需要对实体列表遍历,对每一个实体的属性根据属性特性进行验证,如是否为必填等等,如下一个反射方法能 ...

  3. C语言排序算法

    (1)“冒泡法” 冒泡法大家都较熟悉.其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n].同理对a[1],a[2],...a[n-1]处理,即 ...

  4. opencv china 网站,好1376472449

    http://www.opencvchina.com/thread-1750-1-2.html

  5. android仿win8 metro磁贴布局

    代码下载     //更新代码,   这里是更新后的代码 //////////////////////// 1,含一个图片无限滚动的控件,自己实现的 2.可新增删除每个磁贴 3.来个图片吧 ////* ...

  6. 调研js模板引擎

    js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTe ...

  7. 关于去除Dialog的黑色背景框

    Dialog有两种形式的,一个是Dialog及其子类,还有一种是Activity的Dialog显示方式. 不管怎样,在自定义Dialog的时候,如果不做一些处理,都会出现黑色背景边框,这个问题动不动就 ...

  8. 在C++中使用golang的协程

    开源项目cpp_features提供了一个仿golang协程的stackful协程库. 可以在c++中使用golang的协程,大概语法是这样的: #include <iostream> v ...

  9. [原创]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问

    TSQL查询Excel数据使用openrowset通常会报如下错误: 消息 ,级别 ,状态 ,第 行 SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 ...

  10. 动漫网站基于jquery的横向手风琴特效

    今天给大家分享一款动漫网站基于jquery的横向手风琴特效.这款手风琴特效适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预 ...