简述SQL结构化查询语言

简介:

SQLStructure Query Language结构化查询语言)

一、使用数据库(DataBase)的必要性

 可以结构化的存储大量的数据信息,方便用户有效的检索和访问

 有效的保持数据的一致性、完整性、降低数据冗余

 满足应用的共享和安全方面

 

二、Database基本概念

1、数据

描述事物的符号记录称为data。(在databasedata是以“记录record”形式按统一的格式进行存储的,相同格式和typedata统一放在一起。)

2Databasedatabase table

Table用来存储具体data的,databasetable的集合。

例:关系型database是由字符或数字组成字段、字段组成记录、记录组成表

3Database system and database management system

数据库管理系统(DBMSdatabase management system)实现对database资源有效组织、管理和存取的系统软件。

4DBMS主要功能

 database建立和维护功能:包括建立database的结构(structure)和data的录入与转换,database的转储与恢复,database的重组与性能监视等。

 Data定义功能:定义全局data structure、局部逻辑data structure、存储structure、保密模式及信息格式(保证存储在database中的data是正确、有效和相容,以防止不和语义的错误data被输入或输出。)

 Data操纵功能:data 查询querydata update两方面。

 Datab的运行管理功能:数据库管理部分的核心部分,并发控制、存取控制、数据库内部维护等功能。

 通信功能:DBMS与其它软件系统之间的通信。

数据库系统(DBSdatabase system)是一个人一机的系统,一般有硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。

数据库管理员DBA:负责databaseupdate and 备份、database system的维护、user管理等工作,保证了database的正常运行。

注:DBDBSDBMS甚至DBT(表)在日常生活中没有严格区分,根据具体情况而定。

 

三、DBMS发展史    

 初级阶段:层次mode与网状modeDBS1969IBM研制的层次mode数据管理系统IMSinformation management system,信息管理系统)和20世纪70年代美国数据系统语言协商(CODASYL)下属数据库任务组(DBTG)提议的网状mode

     中级阶段:20世纪70年代初关系数据库开始出现,80年代初OracleDB2出现。关系型数据库将结构化查询语言SQL作为数据定义语言(DDLdata definition language)和数据操作语言(DMLdata manipulation language

 高级阶段:Oracle支持“关系—对象”(ER

数据模型三个方面:数据结构(data structure)、数据操作(data manipulation)和数据约束。

网状:数据约束是零散孤立的(降低效率)

关系模型:“实体—关系”(ER)包含实体、关系和属性三个要素。(实体、实体集、属性、联系)

补充:MySQL主要作用在网站的DBLAMP会用到。(LAMP是指(Linux+Apache+Mysql/MariaDB+Perl/PHP/Python)一组通常一起使用来运行动态网站或者服务器的自由软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。随着开源潮流的蓬勃发展,开放源代码LAMP已经与J2EE.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案。

 

四、关系数据库的基本概念

存储结构:多个二维表格

每一行称为一条记录

每一列称为一个字段

数据表与数据库之间存在相应的关联,这些关联将用来查询相关的数据。这也就是一个数据表。

 

五、主键与外键

主键primary key

每行记录都必须是唯一的,可以保证记录(实体)的唯一性,不允许NULL空值

如果一个属性集能唯一地标识表的一行而又不含有多余的属性,那么这个属性集称为候选键。表中可以有多个候选键,但是只能有一个候选键可以选作表的primary key,所有其他候选键称为备用键。

外键 foreign key (将表关联起来)

通过外键foreign key 可以使用这些表之间关联起来。

 

六、数据完整性规则

1、实体完整性规则

要求关系中的元组在primary key 的属性上不能有kull

2、域完整性规则

也称列完整性规则,指定一个数据集对某一个列是否有效或确定是否允许kull空值。

3、引用完整性规则

不允许引用不存在的元组。

4、用户定义的完整性规则

针对某一具体数据的约束条件,有应用环境而定。

SQL server 2008介绍

 数据加密

 增强了审查

 自动修复页面

 扩展事件

 资源监控器

 ADO.NET实体框架

安装条件

内存最小512MB,硬盘空间2GB提示安装Microsoft  .NET Framework 和 Windows Installer

 

七、系统数据库

 Master 数据库:记录SQL server 系统所有系统级别的信息,它record所有的登录账户和system configure 设置。Master database record 所有其他的database 信息,其中包括database file的位置,同时还record SQL serverinit信息。

 Model 数据库:用作SQL server 实例上创建的所有数据库的模板。对model database进行的修改将应用于以后创建的所有database

 Msdb 数据库:用于SQL server 代理计划警报和作业,所有的task 调度、报警、manipulation都存储在该database中,该database还用于存储所有database备份历史。SQL server agent将会使用这个database

 Tempdb 数据库:用于保存临时对象或中间结果集。在SQL server 每次restart时都会重新创建tempdb database,因此,该databasesystem restart时总是clean

默认位置在目:Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

数据库:服务器   实例   数据库   表格   记录   字段

 

八、SQL server 常用工具

 SQL server management studio用于访问、配置、控制、管理和开发SQL server所有组件。

 SQL server profiler提供用于监视SQL server 数据库引擎实例

 SQL server 数据库优化顾问:可以协助创建索引、索引视图和分区的最佳组合。

 Business Intelligence Development Studio商业智能开发平台:用于Analyze services Integration Services 解决方案的集成开发环境。

 命令提示实用工具:从命令提示符管理SQL server

 SQL server 配置管理器:管理服务器和客户端网络配置设置TCP/IP 端口号1433

 导入和导出数据:提供了一套用于移动、复制及转换数据的图形化工具和可编程对象。

 SQL server 安装程序:安装、更改或升级SQL server实例中的组件。

SSMSSQL Server Management Studio,结构化查询语言服务管理工作室)集成了DBS常用的管理工具;BIDSbusiness intelligence development studio商业智能开发平台)是用于数据提取、数据转换、数据分析及报告的工具;SQL server profiler用于帮助系统管理员监视数据库和服务器的行为。

 

九、BIDS介绍

1BIDS中的分析服务(analysis services

多用于多维数据集、维度、挖掘结构、数据源、数据源视图和角色的模板,并提供用于处理这些对象的工具。

2BIDS中的整合服务(integration services

用于开发ETLExtract,数据抽象 Transform,转换 loading,装载)解决方案的integration services项目。

3BIDS中的报告服务(reporting services

 用于开发报表解决方案的报表模型项目和报表项目。

 SQL server profiler结构化查询语言服务分析器

 逐步analysis分析有问题的query查询并找到问题的原因

 查找并诊断运行慢的query

 捕获导致某一问题的一系列Transact-SQL语句。然后复制此问题在诊断此问题。

 监视SQL server 的性能以优化工作负荷

 使性能计数器与诊断问题关联

 支持对SQL server实例上执行的manipulation操作进行审核。审核记录record与相关的manipulation,供安全管理员以后复查。

 

十、文件类型

 主数据文件:扩展名.mdf包含数据库的启动信息,指向数据库中的其他文件。

 次要数据文件:扩展名.ndf除主数据文件以外的所有其他数据文件都是次要的数据文件

 事务日志文件:扩展名.ldf包含恢复数据库所有事务日志的信息

 文件流(filestream)数据文件:能在文件系统中存储非结构化的数据。

 

十一、数据文件

有若干个64KB大小的区(Extent)组成,每个区有88KB的连续页(Page)组成。最小存储单位称为页,一个页的大小是8KB(磁盘I/O操作manipulation在页级执行)

 

十二、事务日志

事务是一个或多个Transaction-SQL语句的集合,相当于一个“原子”的任务,要么执行成功,要么完全不执行。

当灾难disaster发生时可以通过事务日志record记录的T-SQL语句,可以恢复database

注:

新建的数据库会生成两个文件,一个是主数据文件,另一个是事务日志文件。

当数据文件或日志文件满时,它们会根据设定的初始值自动增大文件的容量。

创建数据库的权限默认授予sysadmindbcreator服务器角色成员。

 

十三、数据库管理

1、扩展extend数据库

扩展数据库时,必须使数据库的大小至少增加1MB,还可以指定允许文件增长到的最大值,这样可以防止文件无限制地增大,导致用尽整个磁盘空间。

2、收缩contract数据库

Database在使用一段time后,时常会因为data delete而造成database中空闲空间太多的情况,这时就需要较少分配给database file和事务日志filedisk空间,以免浪费disk空间。

注意:在contract database时,无法将整个database contract的比其初始大小更小。但是,使用contract file时,可以将各个database file contract得比其初始大小更小。

3、分离和附加数据库

 分离separate数据库:将数据库从SQL server实例中移除move,但是要保证数据库中的数据文件和日志文件完整无损。之后这些文件可以重新附加到其他数据库实例中。

 附加addition数据库:附加数据库中,所有数据文件(主数据文件和辅助数据文件)都必须可用。(注:如果数据库的事务日志文件丢失,数据文件保持完好,也可以附加成功)

4、删除delete数据库

一旦删除数据库,它即被永久删除。

 

十四、表的基本概念

行  记录(每一行代表由表建模的对象的一个单独的实例)

列  字段(每一列代表由表建模的对象的某个属性)

 

十五、数据完整性

1、实体完整性

实体完整性通过UNIQUE(唯一)索引,unique restriction唯一约束或Primary key 约束,强制表的标识符或primary key 的完整性。

2、域完整性

指特定列的有效性。可以使用输的类型,限制格式(通过使用Check restriction 检查约束和规则)、Default 定义、not null 定义和规则。

3、引用完整性

引用完整性确保键值在所有表中的一致,这类一致性要求不引用不存在的值。

防止用户执行的manipulation操作

 在主表中没有关联行的情况下载相关表中添加或更改行

 在主表中更改值(可导致相关表中出现孤立行)

 在有匹配的相关行的情况下delete主表中的行

4、用户定义完整性

可以定义特定业务规则。所有完整性类别都支持用户定义完整性。

Primary key unique唯一标识表中的行数据,一个主键值对应一行数据。主键由一个或多个字段组成,其值具有unique唯一性,而且不允许取kull空值,一个表只能有一个primary key

十六、数据类型

精确数字、近似数字、日期和时间、字符串characterUnicode character统一编码字符串、binary character二进制字符串、其他数据类型。

1、精确数字

Int  :  主要整数数据类型,该数据类型在database里占用4个字节空间。

Decimal: 固定精度和范围的数值型数据。

Money:   占用8个字节空间

Bit:      属于整型数据,其值只能是01NULL。这种类型的数据只有两种可能。

2、日期和时间date and time

Date:  占用3个字节

Time:  占用5个字节

Datetime:  占用8个字节

3、字符串character(使用时要加单引号)

Char  最多包含8000个字节

Varchar  一般用作备注信息

Text   文本

4Unicode character 统一编码字符串

比字符串多个n,并且增加了一倍。

 

十七、标识符列

列的数据类型为不带小树的数值类型

在进行插入insert manipulation时,该列的值由system按一定规律生成,不允许kull

列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。创建一个标识列,通常要指定三个内容。

类型type:在SQL server 2008 中,标识符列type必须是数值type。注意项:decimalnumeric时,小数位数必须为零。另外还需要注意每中data type所表示的数值范围。

种子seed:指派给表中第一行值,默认值1

递增量increment:相邻两个标识值之间的增量,默认值1

 

十八、检查约束

Age  >=  0  and  age  <=200 约束的范围在0200之间。

 

十九、T-SQL的组成

DMLData Manipulation Language,数据操作语言):用来querycheckdelete和修改database中的data

DDLData Definition Language,数据定义语言):用来建立databasedatabase对象和Definition定义其列,大部分是以Create开头的命令。

DCLData Control Language,数据控制语言):用来控制database组件的存取许可存取权限。

 

二十、使用T-SQL语句Manipulation Database Table

1、插入语句:

data插入到表中

Insert  [into] <表名> [列名]  values  <值列表>

Into :可选可略

例如:

Insert  into  student  (姓名,***,学号) 

Values (‘姓名’,‘***号’,‘学号’)如果姓名是primary key 的话则不需要在写。

插入数据的时候注意一下事项。 

 每次插入一整数据,不可能只插入半行或者几列数据。

 数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配。

 Insert 语句不能为标识符列,当插入数据的时候,用单引号将其引起来。

 如果在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息。

 插入的数据项要求符合检查约束的要求。

 尽管可以不指定列名,但是应养成好习惯,明确指定插入的列和对应的值。

 

2、更新数据

Update  <表名>  SET  <列名=更新值>  [ where <更新条件>]

Set:后面可以紧随多个数据列的更新值,不限一个。

Where:可选用来限制条件(指谁

例如:

Update student set 成绩=88 where 姓名=玉兰

 

3、删除数据

只删除整条record,不会只删除单个字段。所以在delete后面不能出现段名。

Delete from <表名> [where <删除条件>]

例如:删除所有记录delete from <表名>

输出record行:Truncate table <表名>

Truncate截断  tabledelete的区别如下

Truncate截断 table 不带where子句,只能将整个表数据清空。而delete可以带where子句,允许按条件删除某些record

Truncate截断 table不记录事务日志,delete每删除一行就记录一条事务日志。

Truncate截断 table删除后会重置,而delete不会重置标识符列。

Truncate截断 table不能用于有foreign key外键约束引用的表,这时就需要delete语句。

Truncate截断 table所删除的数据将无法恢复。

 

4、查询数据

Select  <列名>  from  <表名>  where  <查询限定条件>

Select 语句的语法

Select  select_list

[into  new_table_name]

From  table_name

[where  search_conditions]

[group  by  group_by_expression] [having  search_conditions]

[order  by  order_expression  [ASC | DESC] ]

 

select子句:指定查询内容  select_list :用于指定查询字段列表

Into子句:用于把查询结果存放到一个新表中。New_table_name指定新表的名称

From子句:指定查询源。Table_name指定需要查询的表名称

Where子句:查询条件。Search_conditions 为由字段组成的条件表达式或逻辑表达式

Group by子句:指定查询结果的分组条件。Group_by_expression指明分组条件,通常是一个列名。

Having子句:指定分组搜索条件,通常与group by 子句一句使用

Order  by子句:指定查询结果的默认排序方式。Order_expression指定排序的规则,其中ASC表示升序,DESC表示降序。

比较运算符

运算符

含义

=

等于

>

大于

<

小于

> =

大于或等于

< =

小于或等于

< >

不等于

! =

不等于,等同于

Between

指定值的包含范围。使用and分隔开始值和结束值

Is[not]null

指定是否搜索空值或非空值

like

模糊查询

IN

是否在数据范围里面

_

任何单个字符

%

任意长度字符串

[]

括号中所有指定范围内的任意

[^]

不在括号中所指定范围内的任意一个字符

Not

取反操作manipulation

And

组合两个条件,在两个条件都为TRUE时取值为TRUE

Or

组合两个条件,在两个条件之一为TRUE时,取值为TRUE

 

查询表中所有列

Select  *  from  table_name

查询表中特定列

Select  column_name_1column_name_2··from table_name

Column_name指定列名

查询表中特定行

Select select_list from table_name where search_conditions

使用top关键字来限制查询返回的行数

Select  top  n  select_list  from  table_name//查看前N

改变查询结果集列名称

Select  column_name  AS  column_alias  from  table_name

Select  姓名  as  name,***  as  idcard  form  student//姓名别名为name,***别名idcrad

等同于Select  column_name  column_alias  from  table_name

等同于Select  column_alias  =  column_name  from  table_name 

 

Select  SUM(成绩)  as  总成绩  from  student //student的总成绩

 

查询结果排序

Select  select_list  from  table_name  order  by  column_name  [ASC|DESC]

分组查询

Select  select_list  from  table_name   group  by  column_name  [ASC|DESC]

T-SQL语句中的聚合函数

 SUMsum返回表达式中所有数值的总和,sum只能用于数字类型的列

 AVGavg函数返回表达式中所有数值的平均值,AVG函数也只能用于数字类型的列

 MAXMINMax返回表达式中的最大值,min返回表达式中的最小值,它们都可以用于数字型。

 COUNTcount返回表达式中非空值的计算,count可以用于数字和字符类型的列,另外也可以使用星号作为count的表达式

插入数据

Select  select_list  into  new_table_name  from  table_name

 

使用T-SQL实现多表查询

内连接(inner join)“求和”

外连接“并集”

左外连接(Left join left outer join):如果左表的某一行在右表中没有匹配行,则将为右表返回空值,否则返回相应值。

右外连接(right joinright outer join):如果右表在某一行在左表中没有匹配行,则将为左表返回空值,否则返回相应值。

全链接/完整外连接(full join full outer join):当某一行在另外一个表中没有匹配时,另一个表返回空值,否则返回相应值。

 

 











本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1658847,如需转载请自行联系原作者

相关文章
|
14天前
|
SQL
sql语句加正则 简化查询
sql语句加正则 简化查询
14 0
sql语句加正则 简化查询
|
29天前
|
SQL 存储 BI
【软件设计师备考 专题 】数据库语言(SQL)
【软件设计师备考 专题 】数据库语言(SQL)
90 0
|
1月前
|
SQL
sql server链接查询
sql server链接查询
17 1
|
1月前
|
SQL
sql server简单查询
sql server简单查询
14 1
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
65 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
22天前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
14 0
|
12天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
75 6
|
1月前
|
SQL
sql高级查询
sql高级查询
12 0
|
1月前
|
SQL 存储 数据可视化
10个高级的 SQL 查询技巧
10个高级的 SQL 查询技巧
|
8天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)