RDBMS是什么?
RDBMS代表关系数据库管理系统。 RDBMS是SQL的基础,对于像MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access等所有现代数据库系统。
一个关系数据库管理系统(RDBMS)是一个数据库管理系统(DBMS),基于关系模型如通过 E. F. Codd 引入。
什么是表?
在RDBMS中的数据存储在数据库对象称为表。表是相关数据条目的集合,它由列和行的组成。
记住,表是数据存储在关系数据库中最常见和最简单的形式。以下是CUSTOMERS表的例子:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
什么是字段?
每个表被分成较小的实体称为字段。在CUSTOMERS表中的字段组成是:ID, NAME, AGE, ADDRESS 和 SALARY。
字段旨在维护有关表中的每个记录特定信息表中的列。
什么是记录或行?
一个记录,也被称为一行数据,是存在于一个表中的每个单独的条目。比如有7条记录在上面的CUSTOMERS表。以下是在CUSTOMERS表中的数据或记录中的一行:
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
记录是表中的一个水平的实体。
什么是列?
列是包含在一个表中的特定字段相关联的所有信息表的垂直实体。
例如,在CUSTOMERS表中的一列是ADDRESS,它代表位置描述,并会包括以下内容:
+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+
什么是NULL值?
在表中的NULL值是一个字段显示为空值,这意味着使用一个NULL值的字段是表示一个没有值的字段。
这是非常重要的是要明白,一个NULL值不同于零值或包含空格的字段。NULL值字段是一个记录创建过程中已经留为空白。
SQL 约束:
约束是对表执行对数据的列的规则。这些用于限制数据的类型进入表中。这确保数据库中的数据的准确性和可靠性。
约束可能是列级或表级。列级约束仅应用于一列,表级约束应用于整个表。
下面是常用的SQL约束:
-
NOT NULL约束 - 确保列不能有NULL值
-
默认值约束 - 提供未指定时为列的值时的默认值
-
唯一值约束 - 确保了在一列中的所有的值是唯一的
-
主键 - 唯一标识数据库表中的每一行/记录
-
外键 - 唯一标识任何其他数据库表中的行/记录
-
检查约束 - CHECK约束可以确保列中的所有值满足一定的条件
-
索引 - 使用非常快速地创建和检索数据库中的数据。
数据完整性:
数据的完整性有以下几类存在于每个RDBMS:
-
实体完整性: 表中没有重复行
-
域完整性: 通过限制的类型,格式或值的范围强制对于一个给定列的有效条目
-
参考完整性: 行不能被删除,被其他记录使用
-
用户定义的完整性: 强制执行不属于实体,域和参照完整性一些具体的业务规
数据库规范化
数据库正常化是有效地组织数据库中的数据的过程。归一化处理的两个原因:
-
消除冗余数据,例如,存储了一个以上的相同的数据在同一个表。
-
确保数据的相关性意义。
这两者都是值得追求的目标,因为它们减少的空间的数据库消耗的量,并确保数据在逻辑上存储。规范化由一系列指导方针,帮助指导您创建一个良好的数据库结构。
标准化准则分为正常形态;认为形式的格式或数据库结构的布局方式。 正常形态的目的是组织数据库结构,使其符合第一范式,然后第二范式,最后第三范式的规则。
这是你的选择,把它进一步去第四范式,第五范式等,但总体来讲,满足第三范式就够了。
SQL SELECT 语句(查询):
SELECT column1, column2....columnN
FROM table_name;
如果你想获取所有可用字段,那么可以使用下面的语法:
SELECT * FROM table_name;
SQL DISTINCT 子句:
SQL DISTINCT关键字与SELECT语句一起使用,以消除所有重复的记录和获取的唯一记录。
可能有一种情况,当你在一个表中多个重复的记录。 当获取这些记录,它获取的唯一记录更有意义,而不是获取重复记录。
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY;
SQL AND/OR 子句:
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND/OR [condition2]...AND/OR [conditionN];
SQL IN 子句:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);
SQL BETWEEN 子句:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name BETWEEN val-1 AND val-2;
SELECT column1, column2....columnN
FROM table_name
WHERE column_name BETWEEN val-1 AND val-2;
SQL LIKE 子句:
SQL LIKE子句使用通配符运算符比较相似的值。符合LIKE操作符配合使用2个通配符:
百分号 (%)、下划线 (_)
百分号代表零个,一个或多个字符。下划线表示单个数字或字符。所述符号可以在组合使用。
SELECT FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX_'
SQL ORDER BY 子句
(
按升序或降序排序数据
)
:
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC [升]| DESC[降]];
SQL GROUP BY 子句:
SQL GROUP BY子句用于协同SELECT语句用来安排相同的数据分组。
GROUP BY子句在SELECT语句的WHERE子句之后并ORDER BY子句之前。
SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2
SQL COUNT 子句:
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
SQL HAVING 子句:
HAVING子句允许您指定过滤器的条件,分组结果会出现在最终结果。WHERE子句所选列的条件,而由GROUP BY子句条件创建分组的HAVING子句。
HAVING子句必须遵循GROUP BY子句中的查询,如果使用也必须先于ORDER BY子句。 下面是SELECT语句,包括HAVING子句的语法:
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
SQL CREATE TABLE 语句:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
SQL DROP TABLE 语句:
DROP TABLE table_name;
SQL CREATE INDEX 语句 :
CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);
SQL DROP INDEX 语句 :
ALTER TABLE table_name
DROP INDEX index_name;
SQL DESC 语句 :
DESC table_name
SQL TRUNCATE TABLE 语句:
TRUNCATE TABLE table_name;
SQL ALTER TABLE 语句:
ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_ype};
SQL ALTER TABLE 语句 (重命名) :
ALTER TABLE table_name RENAME TO new_table_name;
SQL INSERT INTO 语句(插入查询):
INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);
SQL UPDATE 语句( 更新查询 ):
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
WHERE [ CONDITION ];
SQL DELETE 语句:
DELETE FROM table_name WHERE {CONDITION};
SQL CREATE DATABASE 语句:
CREATE DATABASE database_name
SQL DROP DATABASE 语句:
DROP DATABASE database_name;
SQL USE 语句:
USE database_name;
SQL TOP,LIMIT,ROWNUM子句
SQL TOP子句用于从表中获取一个TOP N数字或X%的纪录。
注意: 不是所有的数据库都支持TOP子句。例如,MySQL使用LIMIT子句来获取记录;Oracle使用ROWNUM获取有限的记录数。
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]
更多内容查阅:http://www.yiibai.com/sql/