逻辑结构
数据视图、数据模型
数据抽象共有三个层次:物理层、逻辑层和视图层.
数据模型通常由数据结构、数据操作和完整性约束三部分组成.
数据库模式
- 物理模式(内模式):在物理层描述数据库中全体存储结构和存取方法;
- 逻辑模式(概念模式):在逻辑层描述数据库中全体数据的逻辑结构和特征;
- 子模式(外模式):描述数据库用户能够看见和使用的局部数据的逻辑结构和特征.
通常一个数据库只有一个物理模式和一个逻辑模式,但是子模式有若干个.
关系模型
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分构成.
关系操作的特点是集合操作方式,即操作的对象和结果都是集合.关系操作可以使用两种方式定义:基于代数的定义为关系代数;基于逻辑的定义为关系演算.由于使用变量的不同,关系演算又分为元组关系演算和域关系演算.
关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义完整性.其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件.实体完整性规则是:关系的主码不能取空值.参照完整性规则是:外码必须是另一个表中主码的有效值,或者是”空值”.
视图和表
数据库汇总的数据都会存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结构集.视图只能进行select操作.
| 表 | 视图 | |
|---|---|---|
| 存在形式 | 物理存在 | 虚拟内存表 |
| 存在模式 | 内模式 | 外模式 |
| 属性 | 内容 | 窗口 |
| 编译sql语句 | 是 | 否 |
| 实际物理内容 | 有 | 无 |
| 存在模式 | 全局模式 | 局部模式 |
事务
事务是一系列的数据库才做,是数据库应用程序的基本单元,是反应现实世界需要以完整单位提交的一项工作.事务是用户定义的一个数据库操作序列.
事务的四个特征:原子性、一致性、隔离性和持久性.
事务处理包括数据库恢复和并发控制.数据库恢复有两个目的:保证事务的原子性和使数据库能恢复到正确状态.
基础语法
三大数据类型
数字类型
- 整数: tinyint、smallint、mediumint、int、bigint
- 浮点数: float、double、real、decimal
日期和时间
date、time、datetime、timestamp、year
字符串类型
- 字符串: char、varchar
- 文本: tinytext、text、mediumtext、longtext
- 二进制: tinyblob、blob、mediumblob、longblob
SQL
- SQL指结构化查询语言
- SQL使我们有能力访问数据库
- SQL是一种ANSI的标准计算机语言
SQL语法
注:SQL对大小写不敏感!!!
DML(数据操作语言)
查询和更新指令
- SELECT-从数据库表中获取数据
- UPDATE-更新数据库表中的数据
- DELETE-从数据库表中删除数据
- INSERT INTO-从数据库表中插入数据
DDL(数据定义语言)
创建和删除指令
- CREATE DATABASE-创建新数据库
- ALTER DATABASE-修改数据库
- CREATE TABLE-创建新表
- ALTER TABLE-变更(改变)数据库表
- DROP TABLE-删除表
- CREATE INDEX-创建索引(搜索键)
- DROP INDEX-删除索引
SQL语句
SELECT语句
用于从表中选取数据.星号(*)是选取所有列的快捷方式.
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
Text: Persons表
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | arter | Thomas | Changan Street | Beijing |
SELECT LastName,FirstName FROM Persons
| LastName | FirstName |
|---|---|
| Adams | John |
| Bush | George |
| arter | Thomas |
DISTINCT语句
用于列出不同的值.
SELECT DISTINCT 列名称 FROM 表名称
Text: Orders表
| Company | OrderNumber |
|---|---|
| IBM | 2589 |
| Window | 1265 |
| Apple | 7841 |
| Window | 4765 |
SELECT Company FROM Orders
| Company |
|---|
| IBM |
| Window |
| Apple |
| Window |
SELECT DISTINCT Company FROM Orders
| Company |
|---|
| IBM |
| Window |
| Apple |
WHERE语句
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句.
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
| 操作符 | 描述 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEB | 在某个范围内 |
| LIKE | 搜索某种模式 |
Text: Persons表
| LastName | FirstName | Address | City | Year |
|---|---|---|---|---|
| Adams | John | Oxford Street | London | 1970 |
| Bush | George | Fifth Avenue | New York | 1975 |
| Arter | Thomas | Changan Street | Beijing | 1980 |
| Gates | Bill | Xuanwumen 10 | Beijing | 1985 |
SELECT * FROM Persons WHERE City='Beijing'
| LastName | FirstName | Address | City | Year |
|---|---|---|---|---|
| Arter | Thomas | Changan Street | Beijing | 1980 |
| Gates | Bill | Xuanwumen 10 | Beijing | 1985 |
LIKE操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式.
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
Persons表
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | Arter | Thomas | Changan Street | Beijing |
Text1: (以…开头)
SELECT * FROM Persons
WHERE City LIKE 'N%'
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 2 | Bush | George | Fifth Avenue | New York |
提示:‘%’ 可用于定义通配符(模式中缺少的字母).
Text2:(以…结尾)
SELECT * FROM Persons
WHERE City LIKE '%g'
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 3 | Arter | Thomas | Changan Street | Beijing |
Text3:(包含…)
SELECT * FROM Persons
WHERE City LIKE '%lon%'
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
Text4:
SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | arter | Thomas | Changan Street | Beijing |
BETWEEN操作符
在WHERE子句中使用,作用是选取介于两个值之间的数据范围.
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
Person表
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | Carter | Thomas | Changan Street | Beijing |
| 4 | Gates | Bill | Xuanwumen 10 | Beijing |
Text1:
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
| Id | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
StringBuilder
StringBuilder是一个可变的字符序列.
StringBuilder使用
StringBuilder strSql = new StringBuilder();
常用方法(Append)
Append方法:将文本或对象的字符串表示形式添加到由当前StringBuilder对象表示的字符串的结尾处.
笔记 Learning Notes Informal Essay SQL Notes
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!