数据库基本概念&SQL简介
本篇内容转自*
一:数据库基本概念
1,数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。
所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合
2,数据库管理系统
数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能
数据库管理系统主要分为以下两类:
2.1 关系数据库
关系数据库是创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
典型代表有:MySQL、Oracle、Microsoft SQL Server、Access及PostgreSQL等
2.2 非关系型数据库 NoSQL
非关系型数据库是对不同于传统的关系数据库的数据库管理系统的统称。与关系数据库最大的不同点是不使用SQL作为查询语言。
典型代表有:BigTable(Google)、Cassandra、MongoDB、CouchDB;
还包括键值数据库:Apache Cassandra(Facebook)、LevelDB(Google)
3,数据库架构
数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。
内层:最接近实际存储体,亦即有关数据的实际存储方式。
外层:最接近用户,即有关个别用户观看数据的方式。
概念层:介于两者之间的间接层
二:SQL简介
1,SQL
SQL(Structured Query Language 结构化查询语句)是一种特定目的程序语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理。
SQL基于关系代数和元组关系演算,包括一个数据定义语言和数据操纵语言。SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
2,SQL标准化过程
3,SQL语法简介
3.1 运算符
3.2 查询
SQL中最常见的操作是查询,它是通过陈述性SELECT语句执行的。SELECT从一个或多个表或表达式中检索数据。
SELECT是最复杂的SQL语句,可选的关键词和子句包括:
SELECT *
FROM Book
WHERE price > 100.00
ORDER BY title;
查询可以嵌套,以便一个查询的结果可以通过关系运算符或聚合函数在另一个查询中使用。嵌套查询也称为子查询:
SELECT isbn,
title,
price
FROM Book
WHERE price < (SELECT AVG(price) FROM Book)
ORDER BY title;
3.3 空值与三值逻辑
SQL中引入了空值的概念,用来处理关系模型中缺少信息的情况。NULL一词表示空白值,是SQL中的保留词。如果Null进行比较,例如在WHERE子句中使用“=”判断相等,那么会返回未知值,而SELECT语句只会返回WHERE子句条件为真(TRUE)的结果,不会返回条件为假(FALSE)或未知的结果。
“真”、“假”以及与空值直接比较时所得到的“未知”共同组成了SQL的three-valued logic 三值逻辑
由于直接与空值比较会返回未知,因此SQL又提供了两个用于测试空值的语句:IS NULL
和IS NOT NULL
3.4 数据类型
一张表中的每个字段都要定义该字段的类型。ANSI SQL包括下列数据类型:
3.5 数据定义
数据定义语言(DDL)管理表和索引结构。DDL的最基本是CREATE、ALTER、RENAME、DROP和TRUNCATE语句:
CREATE在数据库中创建一个对象(例如一张表)
CREATE TABLE example(
column1 INTEGER,
column2 VARCHAR(50),
column3 DATE NOT NULL,
PRIMARY KEY (column1, column2)
);
ALTER以不同方式修改现有对象的结构,例如向现有的表或约束添加字段:
ALTER TABLE example ADD column4 NUMBER(3) NOT NULL;
TRUNCATE以一种非常快速的方式删除表中的所有数据,删除表内的数据而不是表本身
TRUNCATE TABLE example;
DROP删除数据库中的对象,通常无法挽回的,即,它不能被回滚
DROP TABLE example;
3.6 数据操作
数据操纵语言(DML)是SQL用于添加、更新和删除数据的子集:
INSERT添加行(正式名称为元组)到一个现有的表
INSERT INTO example
(field1, field2, field3)
VALUES
('test', 'N', NULL);
UPDATE修改现有的表中一些行
UPDATE example
SET field1 = 'updated value'
WHERE field2 = 'N';
DELETE从表中删除现有的行
DELETE FROM example
WHERE field2 = 'N';
3.7 数据控制
数据控制语言 (Data Control Language, DCL) 授权的用户访问和操作的数据。 它的两个主要的语句是:
GRANT: 授权的一个或多个用户执行在一个对象上的一个操作或者一组操作。
REVOKE: 消除了授权,其可以是默认的授权。
GRANT SELECT, UPDATE
ON example
TO some_user, another_user;
REVOKE SELECT, UPDATE
ON example
FROM some_user, another_user;