数据库语句
创建
CREATE DATABASE CourseDB
修改
ALTER DATABASE <数据库名> <修改内容>
ALTER DATABASE CourseDB RENAME TO CourseManageDB
删除
DROP DATABASE CouseDB
数据库表语句
数据库表创建语句
CREATE TABLE Student
(
Student char(13) PRIMARY KEY,
StudentName varchar(10) NOT NULL,
StudentGendar char(2) NULL,
Major varchar(30) NULL
)
完整性约束
PRIMARY KEY ——主键约束
NOT NULL ——非空约束
UNIQUE ——值唯一
CHECK ——有效性检查
DEFAULT ——缺省值
表约束定义主键
#便于定义复合主键
#可命名主键约束
#便于定义代理键
#可以定义外键
#主键
CREATE TABLE C_
(
CourseID char(20) NOT NULL,
TeacherID char(20) NOT NULL,
CourseName char(5) NOT NULL,
CONSTRAINT CoursePlan_PK PRIMARY KEY(CourseID,TeacherID)
);
#代理键
CREATE TABLE C_
(
CourseID Serial NOT NULL,
TeacherID char(20) NOT NULL,
CourseName char(5) NOT NULL,
CONSTRAINT CoursePlan_PK PRIMARY KEY(CourseID,TeacherID)
);
#代理键
CREATE TABLE C_
(
CourseID Serial NOT NULL,
TeacherID char(20) NOT NULL,
CourseName char(5) NOT NULL,
CONSTRAINT CoursePlan_FK FOREIGN KEY(CourseName)
REFERENCES Teaching(CourseName)
ON DELETE CASCADE
);
修改表结构语句
#ALTER TABLE <表名> <修改方式>
#ADD:
ALTER TABLE <表名> ADD <新列名称> <数据类型> | [完整性约束]
#DROP:
ALTER TABLE <表名> DROP COLUMN <列名>
ALTER TABLE <表名> DROP CONSTRAINT <完整性约束名>
#RENAME:
ALTER TABLE <表名> RENAME TO <新表名>
ALTER TABLE <表名> RENAME <原列名> TO <新列名>
#数据类型的修改:
ALTER TABLE <表名> ALTER COLUMN <列名> TYPE <新的数据类型>
删除表结构语句
#DROP TABLE <表名>
DROP TABLE Register;
索引
创建语句
CREATE INDEX <索引名> ON <表名> <(列名)>
CREATE INDEX Birthday_Idx ON STUDENT(Birthday);
修改
ALTER INDEX <索引名> <修改项>;
ALTER INDEX <索引名> RENAME TO <新索引名>;
ALTER INDEX Birthday_Idx RENAME TO Bday _Idx;
删除
DROP INDEX <索引名>
DROP INDEX bday_idx;
数据库操作语句
数据插入
INSERT INTO <表名 | 视图名 > [列表名] VALUES(列表值)
INSERT INTO estate VALUES
('7048559328340','闵行 金虹桥','名都城(公寓)','闵行 金虹桥','成都','车位','139.62','139.62','1999-12-30','70',' '),
数据修改
UPDATE <表名|视图名>
SET <列名1>=<表达式1>
[WHERE <条件表达式>]
数据删除
DELETE
FROM <表名|视图名>
[WHERE <条件表达式>]
DELETE
FROM STUDENT
WHERE studentName='张亮'
数据库查询语句
单表数据查询
SELECT [ ALL | DISTINCT ] <目标列> [,<目标列>....]
FROM <表名|视图名> [,<表名|视图名>]
[WHERE < 条件表达式>]
[GROUP BY <列名>[HAVING <条件表达式>]]
[ORDER BT <列名> [ ASC | DESC ]]
DISTINCT ——过滤重复数据,相同数据显示一次
###单表全部列
SELECT *
FROM STUDENT
###单表读取指定列
SELECT StudentID,StudentName,Major
FROM STUDENT
###单表读取制定行
SELECT *
FROM STUDENT
WHERE StudentGender='男'
###单表读取制定行列
SELECT StudentID,StudentName,Major
FROM STUDENT
WHERE StudentGender='男'
WHERE 子句中可用下列方式确定范围:
BETWEEN AND ——限定列值范围
LIKE ——与通配符限度查询条件
_ ——通配符表示一个未确定的符号
% ——通配符表示一个或者多个未确定的符号
AND \ OR \ NOT \ IN \ NOT IN 进一步确定结果集范围
SELECT *
FROM STUDENT
ORDER BY Birthday DESC
##按照Birthday降序排列;反之 ASC,升序排列
内置函数与分组统计
典型函数如下:
聚合函数,
算数函数,
字符串函数,
时间日期函数,
数据类型转换函数
聚合函数:
AVG() ——计算结果集指定列数据的平均值
COUNT() ——计算结果集行数
MIN() ——找出结果集指定列数据的最小值
MAX() ——找出结果集指定列数据的最大值
SUM() ——计算结果集指定列数据的综合
##计算一个学生表中,学生的人数:
SELECT COUNT(*) AS 学生人数
FROM Student;
##内置函数与分组统计的应用
SELECT Major AS 专业 ,COUNT(StudentID) AS 学生人数
FROM Student
GROUP BY Major;
多表查询
##子查询语句的基本格式:
SELECT <目标列> [,<目标列>]
FROM <表名>
WHERE <条件中嵌套另一关系表的SELECT查询结果集>
试例:
检索“计算机学院”的教师名单
SELECT TeacherID,TeacherName,TeacherTitle
FROM Teacher
WHERE CollegeID IN
(SELECT CollegeID
FROM College
WHERE CollegeName='计算机学院')
##使用连接关联多表查询语句
SELECT <目标列> [,<目标列>]
FROM <表名1>,<表名2>......<表名n>
WHERE <关系表之间的连接关联条件>
SELECT B.CollegeName AS 学院名称,A.TeacherID AS 编号, A.TeacherName AS姓名,A.TeachGender AS 性别,A. TeacherTitle AS 职称
FROM Teacher AS A,College AS B
WHERE A.CollegeID=B.CollegeID
JOIN .....ON 连接语句
SELECT <目标列>[,<目标列>
FROM <表名1> JOIN <表名2> ON <连接条件>;
试例:
SELECT
B.CollegeName AS学院名称,A.TeacherID AS 编号, A.TeacherName AS 姓名,A.TeachGender AS 性别,A. TeacherTitle AS 职称
FROM TEACHER AS A JOIN COLI EGE AS B
ON A.CollegeID=B.CollegeID
ORDER BY B.CollegeName, A.TeacherID;
外部连接
LEFT JOIN 左外连接,即使没有与右表相关联的值,也从左表返回所有的行
RIGHT JOIN 右外连接,即使没有与左表相关联的值,也从右表返回所有的行
FULL JOIN 全外连接,同时进行左连接和右连接,返回所有行
数据库控制语句
授予
GRANT <权限列表> ON <数据库对象> TO <角色或用户>
[WITH GRANT OPTION]
试例:
GRANT SELECT, INSERT, UPDATE,DELTE ON REGISTER TO ROLES
将数据插入、数据修改、数据删除、数据查询访问权限赋予学生角色
收回
REVOKE <权限列表> ON <数据库对象> FROM <角色或用户>
REVOKE DELETE ON REGISTER FROM ROLES;
收回学生觉得在课程注册表的数据删除访问权限
拒绝
DENY <权限列表> ON <数据库对象> TO <角色用户>;
DENY DELETE ON TEACHER TO RoleT;
拒绝教师对教师表的数据删除访问权限
数据库视图语句
创建
CREATE VIEW <视图名> [(列名1),(列名2),..] AS <SELECT查询>
试例:
CREATE VIEW BasicCourseView AS
SELECT CourseName,CourseCredit,CoursePeriod, TestMethod
FROM COURSE
WHERE CourseType=‘ 基础课’
删除
DROP VIEW <视图名>
试例:
DROP VIEW BasicCourseView;