SQL基本知识

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;

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/



























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值