通过几个星期的学习和实践,对SQL语句有了最基本的理解,
也大概能运用SQL语句进行基本的增删改查操作。
只是SQL语句的深层次语句例如触发器,存储过程等
还没能完全掌握,在日后还是要多用,熟能生巧
才能在最后的大作业中灵活的运用
SQL(Structured Query Language)
结构化查询语言
· 关系数据库的标准语言。
· 是一个通用的、功能极强的关系数据库语言。
· 目前,没有一个数据库系统能够支持标准SQL的全部概念和特性。
数据定义:
模式定义
表定义
视图和索引的定义
数据查询:
有单表查询、连接查询、嵌套查询、集合查询、基于派生表的查询等,参见之前的例题。
Select语句的一般形式:
SELECT [ALL|DISTINCT] <目标列表达式> [别名] [ ,<目标列表达式> [别名]] …
FROM <表名或视图名> [别名][ ,<表名或视图名> [别名]] …
|(<SELECT语句>)[AS]<别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>[HAVING<条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]];
数据更新:
插入元祖:
INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
修改数据;
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
删除数据:
DELETE
FROM <表名>
[WHERE <条件>];
数据库的安全性:
授权和回收:
1.GRANT:
GRANT <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]…
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
2.REVOKE:
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型><对象名>]…
FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
数据库的角色:
角色(ROLE):被命名的一组与数据库操作相关的权限。是权限的集合。可以为一组具有相同权限的用户创建一个角色。可以简化授权过程。
角色的创建:
CREATE ROLE <角色名>
给角色授权 :
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
将一个角色授予其他的角色或用户:
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
角色权限的收回 :
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
数据库的完整性:
数据的正确性:数据是符合现实世界语义,反映了当前实际状况的
数据的相容性:同一对象在不同关系表中的数据是符合逻辑的
实体完整性:CREATE TABLE中用PRIMARY KEY定义
参照完整性:在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码
用户定义的完整性:针对某一具体应用的数据必须满足的语义要求,例如定义属性上的约束条件 NOT NULL、UNIQUE
完整性约束命名字句:CONSTRAINT <完整性约束条件名><完整性约束条件>
断言:SQL中,可以使用 CREATE ASSERTION语句,通过声明性断言来指定更具一般性的约束。
触发器:
定义触发器:
CREATE TRIGGER <触发器名>
{BEFORE | AFTER} <触发事件> ON <表名>
REFERENCING NEW|OLD ROW AS<变量>
FOR EACH {ROW | STATEMENT}
[WHEN <触发条件>]<触发动作体>
执行触发器:
触发器的执行,是由触发事件激活的,并由数据库服务器自动执行!
删除触发器:
DROP TRIGGER <触发器名> ON <表名>;
存储过程:由过程化SQL语句,经编译和优化后存储在数据库服务器中,可以被反复调用,运行速度较快。
创建存储过程:
CREATE OR REPLACE PROCEDURE 过程名([参数1,参数2,...]) AS <过程化SQL块>;
执行存储过程:
CALL/PERFORM PROCEDURE 过程名([参数1,参数2,...]);
修改存储过程:
ALTER PROCEDURE 过程名1 RENAME TO 过程名2;
删除存储过程:
DROP PROCEDURE 过程名();
具体例题操作都可以在之前的博客上找到,只是总结了最简单的大体SQL语言基础,应用中千变万化,只能在题中寻找规律。