您的位置:首页 > 数据库

SQL基本知识

2016-03-20 15:28 337 查看


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值是一个字段显示为空值,这意味着使用一个NU
4000
LL值的字段是表示一个没有值的字段。

这是非常重要的是要明白,一个NULL值不同于零值或包含空格的字段。NULL值字段是一个记录创建过程中已经留为空白。


SQL 约束:

约束是对表执行对数据的列的规则。这些用于限制数据的类型进入表中。这确保数据库中的数据的准确性和可靠性。

约束可能是列级或表级。列级约束仅应用于一列,表级约束应用于整个表。

下面是常用的SQL约束:

NOT NULL约束 - 确保列不能有NULL值

默认值约束 - 提供未指定时为列的值时的默认值

唯一值约束 - 确保了在一列中的所有的值是唯一的

主键 - 唯一标识数据库表中的每一行/记录

外键 - 唯一标识任何其他数据库表中的行/记录

检查约束 - CHECK约束可以确保列中的所有值满足一定的条件

索引 - 使用非常快速地创建和检索数据库中的数据。


数据完整性:

数据的完整性有以下几类存在于每个RDBMS:

实体完整性: 表中没有重复行

域完整性: 通过限制的类型,格式或值的范围强制对于一个给定列的有效条目

参考完整性: 行不能被删除,被其他记录使用

用户定义的完整性: 强制执行不属于实体,域和参照完整性一些具体的业务规


数据库规范化

数据库正常化是有效地组织数据库中的数据的过程。归一化处理的两个原因:

消除冗余数据,例如,存储了一个以上的相同的数据在同一个表。

确保数据的相关性意义。

这两者都是值得追求的目标,因为它们减少的空间的数据库消耗的量,并确保数据在逻辑上存储。规范化由一系列指导方针,帮助指导您创建一个良好的数据库结构。

标准化准则分为正常形态;认为形式的格式或数据库结构的布局方式。 正常形态的目的是组织数据库结构,使其符合第一范式,然后第二范式,最后第三范式的规则。

这是你的选择,把它进一步去第四范式,第五范式等,但总体来讲,满足第三范式就够了。

第一范式(1NF)

第二范式(2NF)

第三范式 (3NF)


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;


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 语句(更新查询):
可以使用AND或OR运算符组合N多个条件。
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库