2.1SQL语言介绍
2.1.1SQL数据库的体系结构
SQL用户可以是应用程序,也可以是终端用户。SQL语言可以被嵌入在宿主语言的程序(如Python、C++、Java等)中使用,也可以作为独立的用户接口在DBMS环境下被用户直接使用
2.1.2SQL的特点
(1)综合统一
SQL集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括:
①定义关系模式,插入数据,建立数据库
②对数据库中的数据进行查询和更新
③数据库重构和维护
④数据库安全性、完整性控制
(2)高度非过程化
非关系数据模型的数据操纵语言是“面向过程”的,用“过程化”语言完成某项请求,必须指定存储路径
SQL进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存储路径。存储路径的选择以及SQL的操作过程由系统自动完成。这样可以减轻用户的负担,也提高了数据独立性
(3)面向集合的操作方式
非关系数据模型得采用提面向记录的操作方式,操作对象是一条记录
SQL采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合
(4)以同一种语法结构提供多种使用方式
SQL既是独立的语言,又是嵌入式语言
作为独立的语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作
作为嵌入式语言,SQL语句能够嵌入到高级语言(如Python、C++、Java)程序中,供程序员设计程序时使用
而在两种不同的使用方式下,SQL的语法结构基本上是一致的
(5)语言简洁,易学易用
SQL功能极强,完成核心功能只用了9个动词,接近英语口语,所以容易学习,易于使用
①数据定义 CREATE DROP ALTER
②数据操纵 SELECT INSERT UPDATE DELETE
③数据控制 GRANT REVOKE
2.1.3SQL语言的组成
(1)数据定义语言(DDL)
DDL用来定义、修改、删除数据库中的各种对象。包括创建、修改、删除或者重命名模式对象(CREATE、ALTER、DROP、RENAME)的语句,以及删除表中所有行但不删除表(Truncate)的语句等
(2)数据操纵语言(DML)
DML的命令用来查询、插入、修改、删除数据库中数据。包含用于查询数据(Select)、添加新行数据(Insert)、修改现有行数据(Update)、删除现有行数据(Delete)的语句等
(3)数据控制语言(DCL)
用于事务控制、并发控制、完整性和安全性控制等
2.2.数据的定义
2.2.1数据库的定义和删除
(1)创建数据库
CREATE DATABASE 数据库名;
(2)选择数据库
USE 数据库名;
(3)删除数据库
DROP DATABASE 数据库名;
2.2.2数据类型
(1)字符串类型
CHAR,描述定长的字符串,说明格式为:CHAR(L)
VARCHAR,描述变长的字符串,说明格式为:VARCHAR(L)
字符串值用单引号或双引号括起来。如'abc'、"女",习惯使用单引号
(2)数值类型
INT,用于表示整数,存储长度默认为4个字节。说明格式为:INT
DECIMAL,可以用来表示所有的数值数据。说明格式为:DECIMAL(p,s)
(3)日期和时间类型
DATE,用来保存固定长度的日期数据。说明格式为:DATE
TIME,用来保存固定长度的时间数据。说明格式为:TIME
DATETIME,用来保存固定长度的日期时间数据。说明格式为:DATETIME
日期值格式为'YYYY-MM-DD';时间值格式为'HH:MM:SS';日期时间值格式为' YYYY-MM-DD HH:MM:SS'
(4)布尔类型
BOOLEAN,只有两个值:TRUE和FALSE,即真值和假值
2.2.3基本表的定义、删除和修改
(1)创建表
CREATE TABLE 表名
( <列名> <数据类型> [DEFAULT <默认值>]
[,…]
);
说明:DEFAULT选项是给指定列设置默认值
(2)利用子查询来创建表
CREATE TABLE <表名>
SELECT语句;
(3)修改表的结构
①在一个表中增加一个新列
ALTER TABLE <表名>
ADD [COLUMN] <列名> <数据类型>
[DEFAULT <默认值>]
②修改一个表中已有的列
ALTER TABLE <表名>
MODIFY [COLUMN] <列名> <数据类型>
[DEFAULT <默认值>]
③从一个表中删除一列
ALTER TABLE <表名>
DROP [COLUMN] <列名>
(4)截断表和删除表
①截断表
TRUNCATE TABLE <表名>
②删除表
DROP TABLE <表名>