SQL数据库开发文化总括:基础篇

(1)
CataLog(类)(又叫数据库DataBase,表空间TableSpace),分化类的数额因该放到分裂的数据库中。

(4)
(*)int自增字段的独到之处:占用空间少,无需开发人士干预,易读。缺点:效能低,数据导入导出的时候很惨痛。

 select * from T_Employee where FName is not null

  1. 数码汇总

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

(1) 删除表中的整套数目:delete from T_Person。

(3)
分裂品牌的DBMS有和好不一样的风味:MYSQL,MSSQLServer,DB2,Oracle,Access,Sybase等。对于开发职员来讲,平顶山小异。

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

(1) 遵照年龄进行分组计算各样年龄段的人数:

  1. 空值处理

1) 便于对各类CataLog举办性格化管理

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

(3)
SQL语句是高低写不灵活的,不敏感指的是SQL关键字,字符串值仍然大小写敏感。

(1) 在where中无法利用聚合函数,必须接纳Having,Having要放在Group
by事后。

(1) 不难的数据检索:select * from T_Employee。

  1. 去掉数据重复

(2)
用标识列完毕字段自增能够幸免出现等题材,不用开发职员控制机动增加,用标识列的字段在insert的时候绝不钦定主键的值,将字段的”是标识列”设置为”是”,2个表只好有一个标识列。

  1. SQL语句入门

(4)
创设表,删除表不仅能够手工业实现,还足以实施SQL语句来形成,在自动化铺排,数据导入中用的很多。

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

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

(1)
数据库中,2个列若是没有点名值,那么值就为null,那么些null和C#中的null差异,数据库中的null表示”不知晓”,而不是象征一贯不,由此select
null+1结果是null,因为”不领会”加1的结果恐怕”不明了”。

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

(3)
varchar(),nvarchar().char(n)的差异:char(n)不足长度n的有的用空格填充。Var:
variable:可变的。

(3)
多字符匹配的通配符为半角百分号”%”,它非常任意次数(零恐怕八个)出现的任意字符,”K%”匹配以K伊始,任意长度的字符串。检索姓名中含有”n”的职员和工人的音讯:

(2) (*)检索依据报酬从高到低排序检索从第陆名发轫一共三人的音信

              Name nvarchar(50),

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

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

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

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

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

(2) 范围值:

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

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

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

(2) select * from T_Employee where FName=null    and     select *
from T_Employee where
FName!=null。都没有其余重回结果,因为数据库”不通晓”。

(2)
distinct是对整个结果集实行数据重复处理的,而不是本着某壹个列,由此上边的言语并不会只保留Fdepartment进行重复值处理。

(2) 根据年龄从大到小排序,如果年龄同样则依照薪水从大到小排序

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

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

  1.数据库概述

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

(2)
Table(表);不一致品类的资料放置分歧的”格子”中,将这种区域叫做”表”,分裂的表遵照放的多少不一致实行空中的优化,找起来也造福。

(2)
注意Having中不可能否选用为参数分组的列,Having不能够代替where,效能不雷同,Having是对组开始展览过滤。

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

(2) 只检索供给的列:select FName from T_Employee。

(3) SQL Server二零零七后扩张了Row_Number函数简化落成

 select * from T_Employee where FName is null

  1. Having子句

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

(1) SQL
Server的二种注解情势:用户名验证和Windows验证,开发时用Windows验证就行了。

  1. 多值卓殊
  1. SQL Server管理

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

(2) delete只是剔除数据,表还在,和drop table差异。

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

(3)
Guid算法是一种能够爆发唯一标示的迅猛算法,它应用网卡MAC地址,飞秒级时间,芯片ID码算出来的,那样有限支撑每一趟变更的GUID永远不会重复,无论是同二个电脑上或然不相同的微处理器,SQL
Server中生成GUID的函数newid(),.NET中生成GUID的点子:Guid.NewGuid(),重回值是GUID类型。

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

  1. 数组分组

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

  select * from T_Employee order by FAge Desc,FSalary Desc

  1. 数量删除

               (

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

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

  1. 主键采用
  1. 数码插入

(4) 还能搜索不与别的表关联的数目:select 1+1,select newId(),select
getDate()。

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

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

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

(2) DBMS(DataBase Management
System,数据库管理系列)和数据库,平常谈到”数据库”只怕有三种意义:MSSQL
Server,Oracle等某种DBMS;存放一堆数据库的多少个分拣(CateLog)。

创建表: create table T_Person              删除表:drop table
T_Person

(1) SQL语句是和DBMS”交谈”专用的言辞,差异DBMS都认SQL语法。

  1. 数码排序

例如:SQL Server:select newID()

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

  1. 范围结果集行数

(1) order
by子句位于select语句的尾声,它同意钦定遵照一个列可能多个列进行排序,还足以钦点排序方式是升序(从小到大排序,ASC)依旧降序(从大到小排序,DESC)。

  1. 数码更新

)

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

  1. 数据检索

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

  select * from T_Employee where FName like ‘_erry’

(1) insert语句能够大致表名后的列名,但是不推荐。Insert into Person2
values(‘lucy’,’38’)

3) 安全性更高

(2)
主键有三种采纳策略;业务主键和逻辑主键。业务主键是使用有事情意义的字段做主键,比如身份证号,银行账号等。逻辑主键是利用没有别的业务意义的字段做主键,因为很难保障工作主键不会再次(身份证号重复),不会变卦(账号升位),由此推荐用逻辑主键。

  1. 主键(Primarykey)

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

(2) 假使插入的行中有些字段的值不明确,那么insert的时候不钦命那二个列即可。

              Age int null

   select distinct FDepartment,FSubcompany from T_Employee

(1)
主键正是数据行的唯一标示,不会重复的列才能当主键,二个表能够没有主键,不过会那些麻烦处理,因而并未例外轮理货公司由表都会设定主键。

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

  1. 数据库中的概念

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

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

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

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

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。

(4)
除了Access,SQLServerCE等文件型数据库之外,大多数数据库都须求数据库服务器才能运转。学习,开发时是接连本机的数据库,上线运转时是数据库运维在独立的服务器。

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

                     ID int not null,

相关文章