-- 创建(包含主键)表
CREATE TABLE 表名(
字段名 类型 约束(not null primary key),
);
-- 创建含有外键的表
CREATE TABLE 表名(
-- 建立外键约束 说明不能村内放到 外键约束之后。
字段名 类型 非空约束 REFERENCES 引用表(引用表字段),
-- 对成绩添加自定义约束
CHECK(表达式)
-- 联合主键
PRIMARY KEY(外键的主键字段, 外键的主键字段)
);
-- 插入
INSERT INTO speciality VALUES(值,值,值...),
(。。。。。。);
-- 数据查询 是 重点。
-- 基本查询
select 显示的字段 from xxx表名;
-- 条件查询
select * from 表名
where 条件;
-- 分组查询
select * from 表名
group by 按什么分组?(ssex 按照性别分组) 一般与聚合函数连用.
-- 分组之后 在筛选
select * from 表名
group by 按什么分组?(ssex 按照性别分组)
having 条件;
-- 多表查询 等值连接 将所有表都关联组合起来 在筛选数据.
select * from 表名
where 表一.no=表二.no;
-- 模糊查询用link %%
-- 或用rlink "关键字1|关键字2"
-- 多条件用and连.
-- 左右外连接????????这个是啥 ,,,
-- 嵌套查询 子查询
select *
from 表名
where 条件字段 IN (
-- sql语句 查 指定条件的结果
);
-- 查询成绩表中高于平均分的成绩记录。
SELECT *
FROM score
WHERE grade > (
-- 子查询 嵌套
SELECT AVG(grade)
FROM score
);
-- 创建视图 对视图 进行增删改查操作
-- 视图 是一个 虚拟表.
-- 创建视图的 语法 (记忆以下关键词即可)
create or replace view 视图名称
as
正常的sql语句;
对试图的增删改查与 普通的sql增删改查一致. 只需要 将数据源 换为 视图名称即可.
例子:
create or replace view V_TeacherRenewable
as
select *
from teacher
where teacher.school = '计算机学院'
查询:select * from V_TeacherRenewable;
-- mysql 编程技术 主要包括 存储过程存储方法触发器事件
-- 创建存储过程:
DELIMITER $$
CREATE PROCEDURE 存储过程名称()
BEGIN
-- sql语句
END $$
-- 将结束符号更改回去
DELIMITER ;
-- 调用
call 存储过程名称.
-- 如何向存储过程传入参数?
存储过程名称(IN 形参名称 类型) 其他的格式不变.
-- 向外部 输出 结果?
存储过程名称(IN 形参名称 类型, OUT 形参名称 类型) 其他的格式不变.
-- 调用需要多加一个 形参@v_type 来接收输出的值
-- 查看输出的结果
select (@v_type);
-- 存储过程 里 局部变量的使用
定义:DECLARE 变量名 类型;
赋值: set 变量名 = xxxx;
-- 存储过程 流程控制 操作
begin
-- sql语句代码
IF 条件表达式 THEN
满足条件执行代码
else
不满足执行代码
end if -- 结束标志.
end
-- 创建存储 函数 函数 自带返回值...只有输入参数
CREATE FUNCTION F_teacher_title(形参名 类型)
RETURNS char(16) -- 输出的数据类型长度
DETERMINISTIC
begin
return(
-- sql语句 只能有一个结果.
)
end
-- 调用
SELECT F_teacher_title('193001'); -- 直接输出 对应职称.
-- 触发器
-- 插入
DELIMITER $$
CREATE TRIGGER 触发器名称 AFTER INSERT ON 监测表名(就是xxx表发生修改,我就执行这个触发器) FOR EACH ROW
BEGIN
DECLARE 变量名 VARCHAR(255); -- 声明一个变量用于存储查询结果
-- sql语句
SET @str = 变量名; -- 将查询结果赋值给变量
END $$
-- 正常拆入数据 ,,,同时可以查询出来 他的其他关联信息.
-- 这里有一个old虚拟表 和 new 虚拟表.
-- old存储修改前的数据.
-- new存储操作后的数据.
--
-- 事务 ,,上课 没有重点讲,,,一般考试 也不考这个... 重点 就是各种查询操作.(一切都是select的延申...)
样题:
填空题:(总12分,每小空1分)
1.关系中每一行称为 ,每一列称为 ,如果要求某个属性具有唯一性,可设置 约束。
2. E-R图中的E表示 ,R表示 。
3. 创建表时不允许某列为空可用关键字 来约束。
4. 如果一个关系中的属性或属性组并非该关系的主键,但它是另一个关系的主键,则称其为该关系的 。
5. 查询时两个关系要能够进行自然连接的前提是要有相同的 ,还可以进行 外连接和右外连接。
6. 实体间联系分为一对一联系, 联系和 联系三种,一个学生可以同时借阅多本图书,一本图书只能借给一个学生,图书和学生之间的联系为 联系。
二、选择题:(总 10 分,每小题2 分)
1. 要求字段值小于100可用( )约束。 A)FOREIGN KEY B)UNIQUE C)PRIMARY KEY D)CHECK
2. 候选键的属性可以有( )。
A)多个 B) 0个 C) 1个 D) 1个或多个
3.数据库系统的基础是( )。
A)数据结构 B)数据库管理系统 C)操作系统 D)数据模型
4. SQL语言中,删除一个表的命令是( )。
A) DELETE B)DROP C)CLEAR D)REMOVE
5. 在SQL语言中,子查询是( )。
A)返回单表中数据子集的查询语句 B)返回多表中字段子集的查询语句
C)选取单表中字段子集的查询语句 D)嵌入到另一个查询语句之中的查询语句
简答
设计针对某医院的数据库管理系统,其中科室信息有科室号,科室名,科地址,科电话等,医生信息有工作证号,姓名,职称,年龄等, 病人信息有病历号,姓名,性别等,每位病人可以找多位医生看病,每位医生可以看多位病人,医生看完病人后产生病情描述,一个科室有多位医生,每位医生只属于一个科室;
(1) 确定所有的实体及属性(3分)
(2) 确定实体之间的联系,指出类型,给联系命名并给出联系的属性(3分)
(3) 画出E-R图(5分)
(4) 将E-R图转换为关系模式,给出每个表的主键及数据库中的各个外部关系键。(4分)
(5) 在本数据库中,实体完整性,参照完整性具体如何体现?(3分)
操作题
写出题目查询要求对应的select语句,运行成功,输出结果(每小题10分,共70分)
(1) 查询出所有教授的基本信息;
(2) 查询出所有成绩大于80分的成绩信息;
(3) 查询出所有计算机学院的男老师的教师号,姓名,学院;
(4) 查询出所有网络工程专业同学的成绩,要求显示学号,姓名,课程名,成绩。
(5) 查询每位同学的平均分,要求显示学号,姓名,平均分。
(6) 查询出杨静老师上的所有课程的成绩,要求显示教师姓名,课程名,成绩。
(7) 查询出选修了周章群老师上的课程的同学的所有成绩,要求显示学号,姓名,专业名称及成绩。
写出题目查询要求对应的select语句,运行成功,输出结果(每小题5分,共25分)
(1)查询出所有通信工程专业的男同学的学号,姓名,性别,专业;
(2)查询出梁俊松同学选的所有课程,要求显示学号,姓名,课程名,成绩。
(3)查询出上了 数据库系统 这门课程的所有教师的姓名,性别,职称,学院。
(4)查询出周章群老师上的所有课程的成绩,要求显示教师姓名,课程名,成绩。
(5)查询出 英语 课程的所有成绩,要求显示学号,姓名,专业名称及成绩。
稍微看一下就好。。。删除 最不常用。。。更新 与 查询 居多
代码语言:sql复制增加 insert into 表名(值,,,,);
更新 update 表名 set 字段名=需要更新的目标值 where (条件一定要。不然更新整个表的某一个字段值了)
删除 delete from 表名 where 条件;
查询 select 需要显示的字段 from 表名;
查看:show 表||数据库 具体名称。
存储过程可能也会有哈~~~
理论知识整理,,名词 解释:
数据库基础
1 什么是数据库?举例说明数据库的应用。
数据库是按一定 数据模型组织描述和存储数据的可共享的数据集合。
应用是组织存取大量数据。
2 数据库管理系统有哪些功能?
DBMS 创建 操作 管理 维护 数据库 对数据进行统一管理和控制。
数据库系统是DBS ,DBA是数据库管理员
3 什么是关系模型?关系模型有何特点?
关系模型采用关系的形式组织数据,一个关系就是一张规范的二维表。行列组成。
特点是数据结构简单,清晰,对用户而言易懂易用。
4 概念结构有何特点?
可以将用户需求抽象为信息结构。独立于逻辑结构与具体数据库管理系统。
5 逻辑结构设计的任务是什么?
将概设计阶段设计好的er转换为与数据模型相符的逻辑结构。
6 简述E-R图向关系模型转换的规则。
两个规则:
一个实体转换为一个关系模式。
实体间联系转换为关系模式有以下不同的情况:
一对一可转换独立关系模式。
一对多可转独立关系模式。
多对多可转独立模式。
3个及以上多元联系,可转独立关系模式。
相同键关系模式可合并。
MySQL语言
1. 什么是SQL语言?它有那些特点?
sql应用与数据库的结构化查询语言。
特点:非过程化,与数据库通信,面向集合操作,自含式,语言简洁,多功能综合统一。
2. SQL语言可分为哪几类?简述各类包含的语句。
增删改查,应该是 。。不确定。。。
3. MySQL语言由哪几部分组成?简述每一部分包含的SQL语句或语言要素。
数据操作语言DDL 对数据库进行创建 删除 修改。
数据库操纵语言DML 插入 修改 删除
数据查询语言DQL 检索数据
数据控制语言DCL 安全管理 权限控制。
3. 什么是常量?举例说明各种类型的常量。
程序运行中不可变的量。
字符串常量,数值常量,十六进制常量,日期常量。
5. 什么是变量?变量可分为哪两类?
存储数据,可随时改变。
用户变量 和 系统变量。
6. 什么是用户变量?简述使用用户变量的好处。
用户自定义的变量,好处 可以使程序变得更加灵活。暂存数值。
7. 简述MySQL中常用的运算符。
算数 比较 逻辑 等
8. 什么是内置函数?常用的内置函数有哪几种?
系统提供的函数,可以完成一些复杂操作。 数学函数、字符串函数、日期时间函数、聚合函数、加密函数、控制函数。
数据定义
1. 简述数据定义语言包括的主要SQL语句。
Create创建数据库
Alter修改数据库
Drop删除数据库
2. 为什么需要系统数据库?用户可否删除系统数据库?
数据库管理系统自身管理信息保存在其中,不能,删除会导致mysql异常。
3. 在定义数据库中,包括哪些语句?
create语句
Alter语句
Drop语句
4. 什么是表?简述表的组成。
表是数据库中存储数据的数据库对象,行列组成。
5. 什么是表结构设计?简述表结构的组成。
表结构设计对应高安全性,
组成:表名 和 每一列的属性 类型 组成
6. 什么是关键字?什么是主键?
关键字唯一标识记录。
主键可以唯一标识记录。
7. 简述创建表、查看表、修改表、删除表使用的语句。
Crate
Select
Alter
Drop
8. 什么是主键约束?什么是唯一性约束?两者有什么区别?
主键唯一标识一条记录。 参照完整性 都是
唯一性约束可以多个,能为空。。。主键不能为空。
9. 什么是外键约束?
实现参照完整性,保证数据一致性。
一个表中 一个列或多个列 是另一个表的主键
9. 怎样定义CHECK约束和NOT NULL约束。
Check(条件表达式)
Not null 直接写sql语句 完整性约束的位置。
数据操纵
1. 简述数据操纵语言包括的主要SQL语句。
2. 简述插入数据所使用的语句。
3. 比较插入列值使用的两种方法:不指定列名和指定列名。
4. 修改数据有哪两种方法?
5. 比较删除数据使用的两种方法:删除指定记录和删除全部记录。
6. 删除全部记录有哪两种方式?各有何特点?
数据查询
1. 什么是数据查询语言?简述其主要功能。
2. SELECT语句包含那几个子句?简述各个子句的功能。
3. 比较LIKE关键字和REGEXP关键字用于匹配基本字符串的异同。
4. 什么是聚合函数?简述聚合函数的函数名称和功能。
5. 在一个SELECT语句中,当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如何?
6. 在使用JOIN关键字指定的连接中,怎样指定连接的多个表的表名?怎样指定连接条件?
7. 内连接、外连接有什么区别?左外连接、右外连接和全外连接有什么区别?
8. 什么是子查询?IN子查询、比较子查询、EXIST子查询各有何功能?
9. 什么是联合查询?简述其功能。
视图和索引
1. 什么是视图?简述视图的优点。
2. 简述表与视图的区别和联系。
3. 什么是可更新视图?可更新视图需要满足那些条件?
4. 什么是索引?简述索引的作用和使用代价。
5. 简述MySQL中索引的分类及特点。
6. 简述在MySQL中创建索引、查看索引和删除索引的语句。
MySQL编程技术
1. 什么是存储过程?简述存储过程的特点。
2. 存储过程的参数有哪几种类型?分别写出其关键字。
3. 用户变量和局部变量有何区别?
4. MySQL有哪几种循环语句?简述各种循环语句的特点。
5. 什么是游标?包括那些语句?简述各个语句的功能。
6. 什么是存储函数?简述存储函数与存储过程的区别。
7. 什么是触发器?简述触发器的作用。
8. 在MySQL中,触发器有哪几类?每一个表最多可创建几个触发器?
9.什么是事件?举例说明事件的作用。
10. 对比触发器和事件的相似点和不同点。