1、SQL(Structured Query Language),结构化查询语言,1974年Boyce和Chhamberlin提出,是一种通用的、功能强大的关系数据库的标准语言
2、SQL包含数据查询、数据操纵、数据定义、数据控制功能
3、基本表:实际存储在数据库中的表(真实的表)
4、视图:由若干个基本表或其他视图导出的表,是一个虚表(虚表)
数据库语言概述
1、任何一个数据库系统都应向用户提供一种数据库语言,包含数据定义语言和数据操纵语言(不同的数据库有自己的数据库语言,例如:mysql数据库的SQL语言,oracle数据库的SQL语言,大部分是相同的,但是部分地方存在“方言”差异,标注SQL也就是保证了大部分语法的相似)
2、SQL语言是集数据定义和数据操纵为一体的典型数据库语言
3、数据定义语言(Data Definition Language,DDL),用来定义数据库模式。包含数据库模式定义、数据库存储结构和存取方法定义,数据库模式的修改和删除功能
4、数据操纵语言(Data Manipulation Language,DML),用来表示用户对数据库的操作请求,主要包含增删改查(也是开发人员最常使用到的),其中,最核心的就是数据的查询
5、SQL特点
- 综合统一
- 高度非过程化:进行数据操作时,只需要说做什么,无需指出怎么做
- 面向集合的操作方式
- 两种使用方式:用于在终端输入sql命令对数据库进行操作(也称为自含式语言),将sql语言嵌入到高级语言程序中(嵌入式语言)
- 语言简洁,易学易用,核心动词9个,包含如下4类:
(1)数据查询:select,用于查询数据,使用最多的一个动词(查询)
(2)数据定义:create、drop、alter,用于创建新表、删除表、修改表(表结构)
(3)数据操纵:insert、update、delete,用于数据的插入、修改和删除(对表中的数据)
(4)数据控制:grant、revoke,用于数据库对象访问的权限授权和收回授权(赋予权限和收回权限)
6、SQL支持三级模式结构:外模式(视图)、模式(基本表)、内模式(存储文件)
7、SQL的基本组成
- 数据定义语言:提供定义关系模式和视图、删除关系和视图、修改关系模式的命令
- 交互式数据操纵语言:增删改查的命令
- 事务控制:事务开始和结束的命令
- 嵌入式sql和动态sql:高级语言中混合sql命令
- 完整性:数据满足完整性约束条件,不满足条件则无法执行
- 权限管理:数据定义中包含对关系和视图的访问权限
8、SQL支持的内部域类型(SQL数据类型)
类型 | 说明 |
char(n) | 固定长度字符串,表示n个字符的固定长度字符串 |
varchar(n) | 可变长度字符串,表示最多可以有n个字符的字符串 |
int | 整型,也可以用integer |
smallint | 短整型 |
numerical(p,d) | 定点数p为整数位,d为小数位 |
real | 浮点型 |
double | 双精度浮点型 |
float(n) | n为浮点型 |
boolean | 布尔型 |
date | 日期型 |
time | 时间型 |
9、创建表(create table)
语法格式:create table 表名(列名1 数据类型 列级完整性约束条件,列名2 数据类型 列级完整性约束条件,...,表级完整性约束条件)
列级完整性约束条件主要有:非空、取值唯一等。表约束主要有外键等
【题外话:感觉mysql做得挺好,依据help create,看着给出的提示都能写出SQL代码,还无需记忆太多,但关键动词还是要自己能记忆】
例题:建立一个供应商、零件数据库。其中关系供应商S(Sno,Sname,Status, City)属性名分别表示供应商代码、供应商名、供应商状态和供应商所在城市;关系零件P(Pno,Pname, Color,Weight,City)属性名分别表示零件号、零件名、颜色、重量及产地。该数据库要满足如下:
(1)供应商代码不能为空,且值是唯一的,供应商的名也是唯一的。
(2)零件号不能为空,且值是唯一的;零件名不能为空。
(3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。
分析:
1、首先,根据题意,存在两个基本表,分别是供应商表和零件表,表名和列名都给出了,建表的时候需要注意一下约束条件即可,这两个表的创建基本没有什么问题
2、根据(3),说明供应商和零件之间是多对多的关系,那么应该建立一个联系表,表名为SP,使用基本表的名字来构成联系表,应该没有什么问题,哪个供应商供应哪一个型号的零件,故需要Sno和Pno来构成联系表的主码,且分别又是基本表中的,所以还要设置外码约束,这点应该也没有什么问题,最难的是:联系表中还有其他的属性,供应商在哪些城市进行零件生产,这是零件的产地,也应该算一个属性;其次是供应商状态,对该种零件的供应状况。
经过分析,创建表的时候需要注意单词不要写错,如:foreign primary references unique create这几个看起来比较长的单词,还有就是经常使用电脑,自己手写的时候容易写错,要多练习练习。