您的位置:首页 > 数据库

SQL数据库基础知识-巩固篇<一>

2017-09-17 23:03 387 查看

SQL数据库基础知识-巩固篇<一>、、、

首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用了>

MySQL-57 DataBase



MS-SQLServer-2000 DataBase



SQL的含义:结构化查询语言(Structured Query Language)简称SQL

作用:SQL(Structured Query Language,结构化查询语言)是一种用于操作数据库的语言。

结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):也称为“数据检索语句”,用以从表中获得数据,关键字有:SELECT WHERE,ORDER BY,GROUP BY和HAVING

二:数据操作语言(DML:Data Manipulation Language):包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

三:事务处理语言(TPL):TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

四:数据控制语言(DCL):

五:数据定义语言(DDL):包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引

六:指针控制语言(CCL):像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

==================

结构化查询语言中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型。

==================

第一部分:SQL基础知识:SQL入门知识、、、

SQL 是用于访问和处理数据库的一种计算机语言。
常用到的数据库有:Oracle, SQL Server, DB2, Access 、MySQL等等。
======================
什么是 SQL?
SQL 指结构化查询语言
SQL 使我们有能力访问数据库
SQL 是一种 ANSI 的标准计算机语言
编者注:ANSI,美国国家标准化组织

==========
SQL常用的对数据库做的一些基础的操作:
SQL 能做什么?
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL 可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限

=======
SQL 是一门 ANSI 标准的计算机语言,用来访问和操作数据库系统。
SQL语言中常用的一些关键词:SELECT、UPDATE、DELETE、INSERT、WHERE
一定要记住,SQL 对大小写不敏感!
分号是在数据库系统中分隔每条 SQL 语句的标准方法,
===========
RDBMS 指的是关系型数据库管理系统。MS Access, SQL Server, MySQL,IBM DB2,

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。表是相关的数据项的集合,它由列和行组成。

===============
SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

一、SQL (结构化查询语言)是用于执行查询的语法。

SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据

======================
二、SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。或是修改表的属性

CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

======================

需要用到的数据库表:







SELECT 语法:
1.SELECT 列名称 FROM 表名称
2.SELECT * FROM 表名称

例子:
1.需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),

SELECT LastName,FirstName FROM Persons


2.从 "Persons" 表中选取所有的列。

SELECT * FROM Persons


结果集---result-set:SELECT 语句用于从表中选取数据。然后将选取的数据存储在一个结果表中(称为结果集)。

=======================
DISTINCT 语法:不重复的显示查询结果集,即:查询的数据中重复的数据只显示一次
1.SELECT DISTINCT 列名称 FROM 表名称

例子:
1.从 Company" 列中仅选取唯一不同的值,

SELECT DISTINCT Company FROM Orders


====================-==

WHERE 子句语法:有条件地从表中选取数据,
1.SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

where子句中的中常用的运算符:
= 等于
<> 不等于 或是 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

例子:
1.选取居住在城市 "Beijing" 中的人

SELECT * FROM Persons WHERE City='Beijing'


单引号使用:

数值:这是正确的:SELECT * FROM Persons WHERE Year>1965

文本值:这是正确的:SELECT * FROM Persons WHERE FirstName='Bush'
===============================
AND 运算符:
例子:
1.使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'


OR 运算符:

例子
1.使用 OR 来显示所有姓为 "Carter" 或者名为 "Thomas" 的人:

SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'


AND 和 OR 运算符结合使用:

例子

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'


==============================

ORDER BY 语法:用于给查询的结果集排序 order by 默认是升序排列,desc降序排列 asc升序排列

升序排列1序号的数据<2序号的数据<3序号的数据 同时:数据表一般都是自上而下开始,123456、、(顶部的数据小,底部的数据大)

========================
INSERT语法:
1.INSERT INTO 表名称 VALUES (值1, 值2,....)
2.INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

例子
1.在person表中插入新的一行数据

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')


2.在person表的指定列中插入数据

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')


====================

Update语法:
1.UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例子
1.为 lastname 是 "Wilson" 的人添加 firstname:为Fred

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'


更新某一行中的若干列

2.为 lastname 是 "Wilson" 的人修改地址(address),并添加城市名称(city):

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = 'Wilson'


=====================

DELETE 语法:DELETE 语句用于删除表中的行。
1.DELETE FROM 表名称 WHERE 列名称 = 值
例子
1.删除lastname 是Wilson的那行数据

DELETE FROM Person WHERE LastName = 'Wilson'


2.可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

DELETE FROM table_name
或是
DELETE * FROM table_name


===============================

第二部分:SQL-进阶部分、、、

需要用到的数据库表:



TOP 句子:
1.SQL Server 的语法:
SELECT TOP number|percent column_name(s) FROM table_name

2.MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的
MySQL 语法:
SELECT column_name(s) FROM table_name LIMIT number

===============
TOP使用的例子
1.从上面的 "Persons" 表中选取头两条记录。

SELECT TOP 2 * FROM Persons


2.从上面的 "Persons" 表中选取 50% 的记录。

SELECT TOP 50 PERCENT * FROM Persons


====================

LIKE 操作符 的语法:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
例子
1.从上面的 "Persons" 表中选取居住在以 "N" 开始的城市里的人:

SELECT * FROM Persons WHERE City LIKE 'N%'


2.从 "Persons" 表中选取居住在以 "g" 结尾的城市里的人:

SELECT * FROM Persons WHERE City LIKE '%g'


3.从 "Persons" 表中选取居住在包含 "lon" 的城市里的人:

SELECT * FROM Persons WHERE City LIKE '%lon%'


4.从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人:

SELECT * FROM Persons WHERE City NOT LIKE '%lon%'


==============

SQL通配符语法:

% 替代一个或多个字符
_ 仅替代一个字符

[charlist] 字符列中的任何单一字符

[^charlist] 或者 [!charlist] 不在字符列中的任意一个

例子
1.从上面的 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人:

SELECT * FROM Persons WHERE City LIKE 'Ne%'


2.从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:

SELECT * FROM Persons WHERE City LIKE '%lond%'


3.从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'


4.从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":

SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'


5.从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'


6.从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'


===============

IN 操作符语法:
1.SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
例子
1.从上表中选取姓氏为 Adams 和 Carter 的人:

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')


===================

BETWEEN ... AND操作符的语法:
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
例子
1.以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人,

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'


2.以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之外的人

SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'


===================

Alias 别名的语法:
1.表中的别名语法
SELECT column_name(s) FROM table_name AS alias_name
2.列中的别名语法:
SELECT column_name AS alias_name FROM table_name

例子
1.有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。
现在,我们希望列出 "John Adams" 的所有定单。

SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po WHERE p.LastName='Adams' AND p.FirstName='John'


不使用表的别名:

SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName FROM Persons, Product_Orders

WHERE Persons.LastName='Adams' AND Persons.FirstName='John'


2.列名别名:

SELECT LastName AS Family, FirstName AS Name FROM Persons


=================

需要用到的数据库表:



Jion语法
主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。

例子
1.谁订购了产品,并且他们订购了什么产品?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P


2.列出所有人的定购,

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName


================================

Join的四种类型:
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

=======================

需要用到的数据库表:



一、INNER JOIN 的语法:其实inner join 就是join
1.SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

图解:



例子
1.列出所有人的定购。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName


=============================

需要用到的数据库表:



二、Left Join 的语法:
会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
1.SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

图解:



例子
1.列出所有的人,以及他们的定购 - 如果有的话。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName


==================

需要用到的数据库表:



三、RIGHT JOIN 的语法:
会从右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
1.SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

图解:



例子
1.列出所有的定单,以及定购它们的人 - 如果有的话。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName


会从右表 (Orders) 那里返回所有的行,即使在左表 (Persons) 中没有匹配的行。

====================

需要用到的数据库表:



四、FULL JOIN 的语法-全连接:
1.SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

图解:



例子
1.列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName


会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,

==========================

需要用到的数据库表:



UNION 操作符的语法:
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
1.SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALL 语法:
1.SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

例子
1.列出所有在中国和美国的不同的雇员名:

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA


2.列出在中国和美国的所有的雇员:

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA


===================================================

1.创建数据库
CREATE DATABASE database_name
2.创建数据表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

=====================
SQL中的约束:
NOT NULL 不接受 NULL 值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
UNIQUE 唯一标识数据库表中的每条记录。
PRIMARY KEY 唯一标识数据库表中的每条记录。 主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
FOREIGN KEY 外键约束:个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
CHECK 用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
DEFAULT 用于向列中插入默认值。

===================
索引 INDEX 用于快速高效地查询数据。
DROP INDEX 删除索引

==============
ALTER 用于在已有的表中添加、修改或删除列。
1.在表中添加列,
LTER TABLE table_name ADD column_name datatype
2.删除表中的列,
ALTER TABLE table_name DROP COLUMN column_name

=============
AUTO INCREMENT 自动增长

=============
VIEW 视图

==================
日期:
Date 数据类型
1.MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
YEAR - 格式 YYYY 或 YY

2.SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: 唯一的数字

====================================
数据类型:
text 用于文本或文本与数字的组合。最多 255 个字符。
Byte 允许 0 到 255 的数字。
Integer 允许介于 -32,768 到 32,767 之间的数字。
Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字
Yes/No 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False (等价于 1 和 0)
CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。

====================
DBMS - 数据库管理系统(Database Management System)
RDBMS - 关系数据库管理系统(Relational Database Management System)IBM 公司发明了 RDBMS。

==================
SQL中常用的一些函数:
avg 平均值
count 统计
max 最大值
min 最小值
sum 求和
group by 对查询结果集进行分组
having 过滤
=========================

无法比较 NULL 和 0;它们是不等价的。因为:null是指不能为空的值,而0就是表示数值0

=====================

第三部分:基础的SQL知识检测题、、、

SQL 是用于访问和处理数据库的一种计算机语言、常用的数据库:SQL Server, DB2,MySQL、 Access

1 . SQL 指的是?
Structured Query Language

哪个 SQL 语句用于从数据库中提取数据?
SELECT
哪条 SQL 语句用于更新数据库中的数据?
UPDATE
哪条 SQL 语句用于删除数据库中的数据?
DELETE
哪条 SQL 语句用于在数据库中插入新的数据?
insert into
通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列?
SELECT FirstName FROM Persons
通过 SQL,您如何从 "Persons" 表中选取所有的列?
SELECT * FROM Persons
通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值等于"Peter" 的所有记录?
SELECT * FROM Persons WHERE FirstName='Peter'
通过 SQL,您如何从 "Persons" 表中选取 "FirstName" 列的值以 "a" 开头的所有记录?
SELECT * FROM Persons WHERE FirstName LIKE 'a%'

判断题:当所列出的某个条件为 true 时,OR 运算符会显示记录。当列出的所有条件为 true 时,AND 运算符会显示记录。

对的

通过 SQL,您如何在表 Persons 中选择 FirstName 等于 Thomas 而 LastName 等于 Carter 的所有记录?
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

通过 SQL,您如何按字母顺序选取 Persons 表中 LastName 介于 Adams 和 Carter 的所有记录?
SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

哪条 SQL 语句可返回唯一不同的值?
SELECT DISTINCT
哪个 SQL 关键词用于对结果集进行排序?
ORDER BY
通过 SQL,您如何根据 "FirstName" 列降序地从 "Persons" 表返回所有记录?
SELECT * FROM Persons ORDER BY FirstName DESC
通过 SQL,您如何向 "Persons" 表插入新的记录?
INSERT INTO Persons VALUES ('Jimmy', 'Jackson')
通过 SQL,您如何向 "Persons" 表中的 "LastName" 列插入 "Wilson" ?
INSERT INTO Persons (LastName) VALUES ('Wilson')
您如何把 "Persons" 表中 "LastName" 列的 "Gates" 改为 "Wilson" ?
UPDATE Persons SET LastName='Wilson' WHERE LastName='Gates'
通过 SQL,您如何在 "Persons" 表中删除 "FirstName" 等于 "Fred" 的纪录?
DELETE FROM Persons WHERE FirstName = 'Fred'
20.通过 SQL,您如何返回 "Persons" 表中记录的数目?
SELECT COUNT(*) FROM Persons

=====================

图片版:



========================================================

附录部分:

=====================

常用的语法:

Select
SELECT 字段名 FROM 表名;

Distinct
SELECT DISTINCT 字段名
FROM 表名;

Where
SELECT 字段名
FROM 表名
WHERE 条件;

And/Or
SELECT 字段名
FROM 表名
WHERE 简单条件1
{[AND|OR] 简单条件2}+;

In
SELECT 字段名
FROM 表名
WHERE 字段名 IN ('值1', '值2', ...);

Between
SELECT 字段名
FROM 表名
WHERE 字段名 BETWEEN '值1' AND '值2';

Like
SELECT 字段名
FROM 表名
WHERE 字段名 LIKE {模式};

Order By
SELECT 字段名
FROM 表名
[WHERE 条件]
ORDER BY 字段名 [ASC, DESC];

Count
SELECT COUNT(字段名)
FROM 表名;

Group By
SELECT 字段1, SUM(字段2)
FROM 表名
GROUP BY 字段1;

Having
SELECT 字段1, SUM(字段2)
FROM 表名
GROUP BY 字段1
HAVING (栏位);

Create Table
CREATE TABLE 表名
(字段1 数据类型,
字段2 数据类型,
... );

Drop Table
DROP TABLE 表名;

Truncate Table
TRUNCATE TABLE 表名;

Insert Into
INSERT INTO 表名 (字段1, 字段2, ...)
VALUES (值1, 值2, ...);

Update
UPDATE 表名
SET 字段1 = [新值]
WHERE 条件;

Delete From
DELETE FROM 表名
WHERE 条件;


==================================

简单的SQL语句及翻译

1.营业额超过 $1,000 的资料

SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000;


2.选出所有 Sales 高于 $1,000 或是 Sales 在 $500 及 $275 之间的资料

SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275);


3.所有含盖 Los Angeles 或 San Diego 的资料

SELECT *
FROM Store_Information
WHERE Store_Name IN ('Los Angeles', 'San Diego');


4.所有介于 January 6, 1999 及 January 10, 1999 中的资料

SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999';


5.依照 Sales 栏位的由大往小列出 Store_Information 表格中的资料:由小往大 (ascending) 或是由大往小 (descending)

SELECT Store_Name, Sales, Txn_Date
FROM Store_Information
ORDER BY Sales DESC;


6. store_name 栏不是空白的资料

SELECT COUNT (Store_Name)
FROM Store_Information
WHERE Store_Name IS NOT NULL;


7.找出我们的表格中有多少个不同的 store_name,

SELECT COUNT (DISTINCT Store_Name)
FROM Store_Information;


8.取前客户表的前3个记录的例子:

MS-SQL中
SELECT TOP 3 * FROM CUSTOMERS;

MySQL中
SELECT * FROM CUSTOMERS
LIMIT 3;

Oracle中
SELECT * FROM CUSTOMERS
WHERE ROWNUM <= 3;


=============

栏位 (column) 及列位 (row)
主键 (Primary Key)
组合键 (Composite Key)
ANSI(American National Standards Institute 美国国家标准化组织)
FOREIGN KEY 外键约束
PRIMARY KEY 主键约束
================
常用的连接查询:
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

INNER JOIN: 返回记录当两个表有匹配。等值连接。

LEFT JOIN: 返回左表中所有的行,即使右表中没有匹配。

RIGHT JOIN: 返回右表中所有的行,即使有在左表中没有匹配。

FULL JOIN: 返回表中匹配的所有行。

SELF JOIN: 是用来连接表本身,如果表有两张表,暂时改名至少在一个表中的SQL语句。

CARTESIAN JOIN: 返回来自两个或更多个联接的表的记录的集合的笛卡尔乘积。

==================
SQL中的约束 (Constraints)
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
=============
视图 view
视图是基于 SQL 语句的结果集的可视化的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
=============
函数:

SUM() 语法
SELECT SUM(column_name) FROM table_name;

AVG() 语法
SELECT AVG(column_name) FROM table_name

COUNT() 语法
SELECT COUNT(column_name) FROM table_name;
SELECT COUNT(*) FROM table_name;
SELECT COUNT(DISTINCT column_name) FROM table_name;
NULL 不计入

MAX() 语法
SELECT MAX(column_name) FROM table_name;

MIN() 语法
SELECT MIN(column_name) FROM table_name;


====================
DDL - 数据定义语言:

命令 描述
CREATE 创建一个新的表,表的视图,或者在数据库中的对象
ALTER 修改现有的数据库对象,例如一个表
DROP 删除整个表,数据库中的表或其他对象或视图
DML - 数据操纵语言:

命令 描述
SELECT 从一个或多个表中检索特定的记录
INSERT 创建记录
UPDATE 修改记录
DELETE 删除记录
DCL - 数据控制语言:

命令 描述
GRANT 授予用户权限
REVOKE 收回用户授予的权限

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

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

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

用户定义的完整性: 强制执行不属于实体,域和参照完整性一些具体的业务规则
========================
事务具有以下四个标准属性,通常由首字母缩写ACID简称:

原子: 确保工作单元中的所有操作都成功完成; 否则,该事务被中止的故障点,操作回滚到操作之前的状态。

一致性: 确保数据库正确后成功提交事务更改状态。

隔离: 事务操作彼此独立和透明。

持久性: 可确保提交的事务的结果或仍然存在系统故障的情况下的作用。

命令:

COMMIT: 保存更改。

ROLLBACK: 回滚更改。

SAVEPOINT: 回滚事务组创建点

SET TRANSACTION: 事务放置的名称。
=================
SQL注入:

常用的处理SQL注入的方式:

=====================

—————>>>>>I'm

web developer / designer / 请叫我最美女神

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: