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值是一个字段显示为空值,这意味着使用一个NU4000
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_nameSQL 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/
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle数据库执行脚本常用命令小结
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马