首页 > 代码库 > SQL数据库
SQL数据库
数据库的集中控制优点:
降低存储数据的冗余度
更高的数据一致性
存储的数据可以共享
可以建立数据库所遵循的标准
便于维护数据完整性
能够实现数据的安全性
数据在数据库中的存储形式:
1、层次模型:这种模型提供一种相对简单的结构,单个记录以父子关系组织在一起,
形成一个倒挂的树。树创建了一个层次状结构,在其中数据被分解为逻辑的分类和子类,
使用记录代表逻辑数据单元。
2、网状模型:网状模型通过允许记录有多个父子关系,来增强层次模型。
3、关系模型:关系型数据模型与层次和网状模型的呆板结构完全不同。
访问层次状数据库的应用程序基于该数据库已定义好的实现,
数据库结构必须硬编码到应用程序的编程语言中。如果数据库发生变化,
应用程序就必须变化。
关系型数据库是独立于应用程序的。
更改数据库设计,而不会影响应用程序成为可能,
因为关系模型用组成相关数据的表的行和列这种结构,
来替换父子框架。使用关系模型,我们可以克服早期模型的缺陷,
在表之间定义复杂的关系。
4、对象模型:在使用面向对象编程语言和关系模型的数据库开发软件时,
计算机专家们逐渐发现了关系模型的缺点,就是在关系模型和对象之间存在一种
阻抗不匹配的关系,编写程序时很不方便。
为解决关系模型的这种缺陷,于是,计算机专家们又研究出了数据库对象模型。
在对象模型中,我们将整个物体(包括其特征、操作)整体放到数据库中。
这样对访问数据库和使用主流的面向对象编程技术就形成了一致。
对象模型的出现虽然解决了关系模型的一些缺陷,然而,
自关系模型出现至今三十多年的时间,已经有了大量数据保存在使用关系模型的数据库中。
此外,使用关系模型的数据库技术比还没有成熟商业产品的对象模型数据库更为成熟。
使用关系模型的数据库仍然是绝对的主流。所以,我们日常使用的数据库绝大多数是以
关系模型来创建的。
关系型数据库的基本概念
关系模型的理论是1970年由IBM的Codd博士提出的。
关系模型把世界看作是由实体(Entity)和联系(Relationship)组成的。
所谓实体就是指在现实世界中客观存在并可相互区别的事物。
实体所具有的某一特性称为属性(Attribute)。实体可以通过若干属性来描述。
以关系模型来创建的数据库称为关系型数据库(Relational Database)。相类似的实体被存入表中。
表(table)是关系型数据库的核心单元,它是数据存储的地方。
主键:
在关系型数据库表中,用一个唯一的标识符来标识每一行,这个标识符就是主键(Primary Key)。
外键:
在关系型数据库中,外键(Forergn Key)就是用来表达表和表之间的关联关系。
关系型数据库中的三种关系
1.一对一关系
2.一对多关系
3.多对多关系
什么是数据库管理系统:
关系型数据库只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management System,简称DBMS)
的软件来管理数据库中数据。
管理关系型数据库的软件称为关系型数据库管理系统(Relational Database Management System,简称RDBMS)。
数据库应用程序通过RDBMS与关系型数据库进行交互。
数据库管理系统分类:
本地数据库管理系统
数据库服务器管理系统
ps:本地数据库管理系统又称桌面型数据库管理系统。
在这种系统模式下,RDBMS与数据库应用程序运行在同一客户端的进程中,
例如微软的Access数据库,其模型如下图所示。
数据库服务器管理系统:
在数据库服务器管理系统中,RDBMS和数据库应用程序运行在不同的进程,
通常在不同的机器上。一般数据库应用程序在客户端,而RDBMS则在专门的数据库服务器上,
其模型如下图所示。
SQL是结构化查询语言(Structured Query Language)的英文缩写,
发音为“ess-kue-ell”或者“see-kwell”,是一种用于管理关系型数据库,
并与数据库中的数据进行通讯的计算机语言。SQL是最普遍实现和应用的数据库语言,
并且已经成为数据库管理的标准语言。SQL与RDBMS协同工作,来定义数据库的结构、
存储数据、操纵数据、获取数据、控制对数据的访问以及确保数据的完整性。
SQL是每个RDBMS所能理解的语言。不管我们创建前台客户端用的是
ASP.NET、Java、Visual Basic、C#,还是别的语言,SQL是所有这些前台与关系型数据库通讯的语言。
除此以外,我们还可以使用SQL管理关系型数据库,例如创建和删除数据库存储结构或者访问和修改数据库安全设置。
对于程序员来说,不管使用哪种语言开发程序,不管使用哪种数据库存储数据,SQL的知识都是必不可少的。
SQL的非过程性质:
SQL在本质上就是非过程式的,它主要关心的是操作的结果,而由宿主语言决定如何处理操作。
虽然SQL也有存储过程元素,但即使有了这些过程式元素,也没有使SQL变成一个过程式语言。
SQL中没有多少其它语言中所具有的基本编程能力。因此,我们就不能单独使用SQL创建一个应用程序。
我们必须使用过程式语言与SQL协同工作,来操纵存储在RDBMS中的数据。
SQL语句
数据定义语言(Data Definition Language-DDL)数据
查询语言(DQL)
数据操作语言(Data Manipulation Language-DML)
数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句
-- 创建数据库
CREATE DATABASE 数据库名;
其中,数据库名在服务器中必须是唯一的,并且符合标识符规则。所谓标识符规则指:
第一个字符必须是下列字符之一:
Unicode 标准 3.0 所定义的字母(Unicode 中定义的字母包括拉丁字母 a-z 和 A-Z,
以及来自其它语言的字母字符)。
下划线 (_)、at 符号 (@) 或者数字符号 (#)。
后续字符可以是:
Unicode 标准 3.0 所定义的字母。
来自基本拉丁字母或其它国家/地区脚本的十进制数字。
at符号(@)、美元符号 ($)、数字符号或下划线。
标识符不能是所用RDBMS的保留字。
不允许嵌入空格或其它特殊字符。
连接到数据库:USE 数据库名;
新的数据库创建完毕后,为了在该数据库上执行SQL语句,我们需要连接到该数据库上。
在MySQL中,默认情况下,所有数据库均为不活动状态。使用上面的命令,可以激活并使用某个数据库。
其后,我们就可以针对该数据库执行SQL语句了。
删除数据库:DROP DATABASE 数据库名;
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1字节 | (-128,127) | (0,255) | 极小整数值 |
SMALLINT | 2字节 | (-32 768,32 767) | (0,65 535) | 小整数值 |
MEDIUMINT | 3字节 | (-8 388 608, 8 388 607) | (0,16 777 215) | 小整数值 |
INT | 4字节 | (-2 147 483 648, 2 147 483 647) | (0,4 294 967 295) | 整数值 |
BIGINT | 8字节 | (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 大整数值 |
浮点型
类型 | 大小 | 范围 | 精度 | 用途 |
FLOAT | 4字节 | (-3.40E-38,3.40E+38) | 7位小数 | 单精度浮点数 |
DOUBLE | 8字节 | (-8 388 608, 8 388 607) | 15位小数 | 双精度浮点数 |
DECIMAL(M,D) | 17字节 | (-10的38次方-1 , 10的38次方-1) | 30位小数 | 大浮点数 |
NUMERIC(M,D) | 同DECIMAL |
字符型
类型 | 大小 | 范围 | 用途 |
CHAR(N) | N | 0-255 | 字符型 |
VARCHAR(N) | N | 0-65535 | 字符型 |
二进制
类型 | 大小 | 范围 | 用途 |
TINYBLOB | 255 | 0-255 | 二进制大对象 |
BLOB | 65K | 0-65KB | 二进制大对象 |
MEDIUMBLOB | 16M | 0-16M | 二进制大对象 |
LONGBLOB | 4G | 0-4G | 二进制大对象 |
类型 | 范围 | 用途 |
BOOLEAN | 0-1 | MYSQL没有BOOLEAN类型,但BOOLEAN类型可以创建,在MYSQL中BOOLEAN别自动定义为TINYINT(1) |
日期数据类型
类型 | 大小 | 格式 | 范围 |
YEAR | 1字节 | YYYY | 1901 - 2155 |
DATE | 3字节 | YYYY-MM-DD | 1000-01-01 - 9999-12-31 |
YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 - 2038 | ||
DATETIME | 8字节 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 - 9999-12-31 23:59:59 |
使用CREATE INDEX和DROP INDEX语句可以创建和删除索引
SQL数据库