SQL基础知识总结_第1页
SQL基础知识总结_第2页
SQL基础知识总结_第3页
SQL基础知识总结_第4页
SQL基础知识总结_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL基础知识总结

数据库概述

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

(大数据主要有以下几点弊端:

1.数据转化率低

2.存在隐私安全问题

3.数据真实性有待检验

4.数据对创新没有参考价值

)

(2)DBMS(DataBaseManagementSystem,数据库管理系统)和数据

库。

“数据库”可能有两种含义:

MSSQLServer,Oracle等某种DBMS;

存放一堆数据库的一个分类(CateLog)o

(3)不同品牌的DBMS有自己不同的特点:MYSQL,MSSQLServer,DB2,

Oracle,Access,Sybase等。对于开发人员来讲,大同小异。

(4)除了Access,SQLServerCE等文件型数据库之外,大部分数据

库都需要数据库服务器才能运行。

数据库中的概念

(1)CataLog(类)(又叫数据库DataBase,表空间TableSpace),

不同类的数据因该放到不同的数据库中。

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

2)避免命名冲突

3)安全性更高

⑵Table(表);不同类型的资料放到不同的“格子”中,将这种区

域叫做"表”,不同的表根据放的数据不同进行空间的优化,找起来

也方便。

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

主键(Primarykey)

(1)主键就是数据行的唯一标示,不会重复的列才能当主键(唯一

性),一个表可以没有主健,但是会非常难以处理,因此没有特殊理

由表都会设定主键。

(2)主键有两种选用策略;业务主键和逻辑主键。

业务主键是使用有业务意义的字段做主键,比如身份证号,银行

账号等。

逻辑主键是使用没有任何业务意义的字段做主键,因为很难保证

业务主键不会重复(身份证号重复),不会变化(账号升位),因此

推荐用逻辑主键。

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

SQLServer管理

(1)SQLServer的两种验证方式:

用户名验证和Windows验证,开发时用Windows验证就行了。

(2)常用字段类型:bit(可选值0,1),datetime,int,varchar,

nvarchar(可能含有中文用nvarchar)o

(3)varcharO,nvarchar().char(n)的区别:char(n)不足长度n的

部分用空格填充。Var:variable:可变的。

SQL语句入门

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

法。

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

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

值还是大小写敏感。

(4)创建表,删除表不仅可以手工完成,还可以执行SQL语句来完

成,在自动化部署,数据导入中用的很多。

仓建表:createtableTable_name

删除表:droptableTable_name

(IDintnotnull,Namenvarchar(50),Ageintnull)

执行简单的Insert语句:

insertintoTable_name(ID,Name,Age)values(1,zx',39)

(6)*(熟悉):

SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类:

数据插入

(1)insert语句可以省略表名后的列名,但是不推荐。Insertinto

Person2values('lucy','38')

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

定那些列即可。

(3)给字段可以设置默认值,如果Guid类型主键的默认值设定为

newidO就会自动生成,很少这样干:insertinto

person3(ID,Name,Age)values(newidO,?tom',30)

数据更新

(1)更新一个列:updateT_PersonsetAge=30

(2)更新多个列:updateTPersonsetAge=30,Name='Tom'

(3)更新一部分数据:updateTPersonsetAge=30whereName='

Tom,,用where语句表示只更新Name是'Tom,的行,注意SQL中

等于判断用单个二,而不是

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

updateT_PersonsetAge=30whereName='Tom,orAge<25.or

相当于C#中的||(或者)。

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

<=,!=(或<>)等。

数据删除

(1)删除表中的全部数据:deletefromT_Persono

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

(3)delete也可以带where子句来删除一部分数据:deletefrom

T_PersonwhereFAge>30o

数据检索

(1)简单的数据检索:select*fromT_Employee<)

(2)只检索需要的列:selectFNamefromT_Employeeo

(3)列别名:selectFNumberas编号,FNameas姓名from

T_Employeeo

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

newld(),selectgetDate()o

数据汇总

(1)SQL聚合函数:max(最大值),min(最小值),avg(平均值),

sum(和),count(数量)。

数据排序

(1)orderby子句位于select语句的末尾,它允许指定按照一个列

或者多个列进行排序,还可以指定排序方式是升序(从小到大排序,

ASC)还是降序(从大到小排序,DESC)o

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

select*fromT_EmployeeorderbyFAgeDesc,FSalaryDesc

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

select*fromT_EmployeewhereFAge>23orderbyFAge

Desc,FSalaryDesc

通配符过滤(模糊匹配)

(1)通配符过滤使用Likeo

(2)单字符匹配的通配符为半角下划线“.“,它匹配单个出现的字

符,以任意字符开头,剩余部分为”erry":

select*fromT_EmployeewhereFNamelike'_erry'

(3)多字符匹配的通配符为半角百分号“%",它匹配任意次数(零

或者多个)出现的任意字符,”K%"匹配以K开头,任意长度的字符

串。检索姓名中包含“n”的员工的信息:

select*fromT_EmployeewhereFNamelike'%n%'

空值处理

(1)数据库中,一个列如果没有指定值,那么值就为null,这个null

和C#中的null不一样,数据库中的null表示“不知道”,而不是

表示没有,因此selectnull+1结果是null,因为“不知道”加1

的结果还是"不知道”。

(2)select*fromT_Employeewhere

FName=nullandselect*fromT_Employeewhere

FName!=nullo都没有任何返回结果,因为数据库"不知道”。

(3)SQL中使用isnull,isnotnull来进行空值判断。

select*fromT_EmployeewhereFNameisnull

select*fromTEmployeewhereFNameisnotnull

多值匹配

(1)selectFAge,FNumber,FNamefromT_EmployeewhereFAge

in(34,23,35)

(2)范围值:

1)select*fromT_EmploeewhereFAge>=23andFAge<=27

2)select*fromT_EmployeewhereFageBetween23and27

数组分组

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

selectFAge,Count(*)fromT_EmployeeGroupbyFage

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

(3)没有出现在Groupby子句中的列是不能放到select语句后的

列名列表中的(聚合函数除外)。

1)错误:selectFAge,FSalaryfromT_EmployeegroupbyFage。

2)正确:selectFage,Avg(FSalary)fromT_Employeegroupby

Fage。

Having子句

(1)在where中不能使用聚合函数,必须使用Having,Having要位

于Groupby之后。

selectFage,Count(*)as人数fromT_EmployeeGroupby

FAgeHavingCount(*)>1

(2)注意Having中不能不能使用为参数分组的列,Having不能代

替where,作用不一样,Having是对组进行过滤。

限制结果集行数

(1)selecttop5*fromT_EmployeeorderbyFSalaryDesc

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

信息desc(降序)

selecttop3*fromT_EmployeewhereFNumbernotin(select

top5FNumberfromT_EmployeeorderbyFsalarydesc)orderby

FSalaryDesc。

(3)SQLServe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论