数据库基础知识整理:

来源:互联网 发布:vb中对象的属性 编辑:程序博客网 时间:2024/06/01 07:25

该篇是梳理W3School SQL教程而来。详细戳W3School SQL教程
以表Students为例:
1. 首先创建表:
CREATE TABLE Students(
ID int,
Name varchar(50),
Gender varchar(8),
Age int,
Height double,
ClassID int
)

2. 增删改查:
1) 增:INSERT INTO Students VALUES(‘001’,’Bill’,’Male’,’19’,’3’)
2) 删:DELETE FROM Students WHERE ClassID = ‘3’
注:delete操作意味着表的结构、属性等都是完整,仅仅删除具体条件下的数据。
若想将表的整个结构、属性删除,即:DROP TABLE 表名称
3) 改:UPDATE Students SET ClassID = ‘1’ WHERE ID = ‘001’
4) 查:SELECT * FROM Students

3. 关键字:
1) DISTINCT
表中,可能会包含重复值,有时仅仅想列出不同的值。
如:SELECT DISTINCT ClassID FROM Students
2) ORDER BY
用于根据指定的列对结果集进行排序。默认按照升序( ASC )进行排序;希望按照降序对数据进行排序,使用DESC关键字。
如:SELECT * FROM Students ORDER BY ClassID DESC
SELECT * FROM Students ORDER BY ClassID DESC,ID ASC

4. 操作符:
1) LIKE:用于在WHERE子句中搜索列中的指定模式。
例:SELECT * FROM Students WHERE Name LIKE ’Adam% ’
注:”%”可用于定义通配符(模式中缺少的字母),替代一个或多个字符;”_”仅替代一个字符。
SELECT * FROM Students WHERE Name NOT LIKE ‘%am%’

2) IN:允许我们在WHERE子句中规定多个值。
例:SELECT * FROM Students WHERE ClassID IN(‘1’, ‘3’)

3) BETWEEN:在WHERE子句中使用,作用是选取介于两个值之间的数据范围。
例:显示班级介于’1’(包括)、’3’(不包括)之间的人。
SELECT * FROM Students WHERE ClassID BETWEEN ‘1’ AND ‘3’
注:不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。
SELECT * FROM Students WHERE ClassID NOT BETWEEN ‘1’ AND ‘3’

4) AS:可以为列名称和表名称指定别名。
SELECT Name AS Family, Gender AS Sex FROM Students

5) JOIN:用于根据两个表中列之间的关系,从表中查询数据。
假设有两个表:Students(学生信息)、Classes(班级信息)。表中,每个主键的值都是唯一的。表Students中,ID(学生学号) 是主键,表Classes中,ID(班级序号) 是主键。
SELECT Students.ID, Name FROM Students, Classes WHERE Students.ClassID = Classes.ID ,除此,还可以使用JOIN关键词,如:
SELECT Students.ID, Name FROM Students INNER JOIN Classes ON Students.ClassID = Classes.ID
注:不同的JOIN连接,上面例子使用了INNER JOIN(内连接),还有其他几种连接
JOIN:如果表中有至少一个匹配,则返回行。(与INNER JOIN是相同的)
LEFT JOIN:即使右表中没有匹配,也返回左表的所有行。
RIGHT JOIN:即使左表中没有匹配,也返回右表的所有行。
FULL JOIN:只要一个表中存在匹配,就返回行。

6) UNION 和UNION ALL:UNION操作符用于合并两个或多个SELECT语句的结果集。
默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。
例:SELECT ID FROM Students
UNION
SELECT ID FROM Classes

5. 约束:限制加入表的数据的类型。可以在创建表的时候规定约束()
1) NOT NULL:强制列不接受NULL值。意味着,如果不给某列赋值,就无法插入新纪录或者更新记录。
例:
CREATE TABLE Students
(
ID int NOT NULL,

)

2) UNIQUE:约束唯一标识数据库表中的每条记录。和PRIMARY KEY约束均为列或列集合提供了唯一性的保证。
注:每个表可以有多个UNIQUE约束,但是只能有一个PRIMARY KEY约束。作为PRIMARY KEY的域不能是NULL,而UNIQUE可以为NULL。
例:
CREATE TABLE Students
(
ID int, //或者ID int UNIQUE,

…UNIQUE(ID)  

)

若多个列需要定义UNIQUE约束,则如下:
CREATE TABLE Students
(
ID int,

CONSTRAINT uc_StudentID UNIQUE(ID, Name)
)

3) PRIMARY KEY:主键,每个表都应该有一个主键,并且每个表只能有一个主键。主键必须包含唯一的值,主键列不能包含NULL值。

4) FOREIGN KEY:外键,一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY。
例如表Student及Classes: 在Students表中,ClassID列是FOREIGN KEY,而在Classes中,ID是PRIMARY KEY。
CREATE TABLE Students
(
ID int,
…,
ClassID int, //或者ClassID int FOREIGN KEY REFERENCES Classes( ID ),
PRIMARY KEY( ID),
FOREIGN KEY( ClassID ) REFERENCES Classes( ID)
)

6. 索引:在表中创建索引,在不读取整个表的情况下,索引使得数据库应用程序可以更快地查找数据。
更新包含索引的表需要更多的时间,这是因为索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
例:CREATE INDEX StudentIndex ON Students( Name)

7. 视图:基于SQL语句的结果集的可视化的表。包含行和列,就像一个真实的表。
如:CREATE VIEW [Students Name] AS
SELECT DISTINCT FROM Students

8. 函数:

合计函数:面向一系列的值,并返回一个值:
合计函数

标量函数:面向某个单一的值,并返回与其对应的单一的值:
标量函数

1) AVG函数:返回数值列的平均值。NULL值不包括。
SELECT AVG(Age) AS AgeAverage FROM Students
SELECT Name FROM Students WHERE Age > (SELECT AVG(Age) FROM Students
)

2) COUNT函数:返回匹配指定条件的行数。
SELECT COUNT( * ) AS Num FROM Students

3) FIRST函数:返回指定的字段中第一个记录的值。
SELECT FIRST(Name) AS FirstStudent FROM Students

4) LAST函数:返回指定的字段中最后一个记录的值。
SELECT LAST(Name) AS LastStudent FROM Students

5) MAX函数:返回一列最大值。NULL值不包括。
SELECT MAX(Age) AS MaxAge FROM Students
注:MAX/MIN也可用于文本列,以获得按字母顺序排列的最高或最低值。

6) MIN 函数:返回一列最小值。NULL值不包括。
SELECT MIN(Age) AS MinAge FROM Students

7) SUM函数:返回数值列的总数。
SELECT SUM(Age) AS AgeTotal FROM Students

8) GROUP BY语句:结合合计函数,根据一个或者多个列对结果集进行分组。SUM等函数常常需要添加GROUP BY语句。
SELECT ClassID,COUNT(Name) FROM Students
GROUP BY ClassID

9) HAVING语句:作用是测试查询结果是否符合条件。存在的原因是,WHERE关键字和合计函数无法一起使用。
SELECT ClassID,COUNT(Name) FROM Students
GROUP BY ClassID
HAVING COUNT(Name) > 10

SELECt ClassID,COUNT(Name) FROM Students
WHERE ClassID = ‘1’ OR CLassID = ‘2’
GROUP BY ClassID
HAVING COUNT(Name) > 10

10) UCASE函数:把字段的值转换为大写。
SELECT UCASE(Name) as Name FROM Students

11) LCASE函数:把字段的值转换为小写。

12) MID函数:用于从文本字段中提取字符。
SELECT MID(Name, 1, 4) as SmallName FROM Students

13) LEN函数:返回文本字段中值的长度。
SELECT LEN(Name) AS LengthOfName FROM Students

14) ROUND函数:把数值字段舍入为指定的小数位数。
如:把学生身高舍入为最接近的整数。
SELECT ROUND(Height, 0) as UpdatedHeight FROM Students

15) NOW函数:返回当前的日期和时间。
SELECT Name,ClassID,NOW() as Date FROM Students

16) FORMAT 函数
SELECT Name,ClassID,FORMAT(NOW(), ‘YYYY-MM-DD’) as Date FROM Students

9. SQL快速参考:
参考

10. 事务:是访问并可能更新数据库中各种数据项的一个程序执行单元。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

0 0
原创粉丝点击