MySQL 数据库项目式教程
2022-05-27 17:07:59 1 举报
AI智能生成
按照一定的数据结构来组织,存储和管理数据的仓库
作者其他创作
大纲/内容
项目一 MySQL印象
1、数据库是什么?
数据库是按照数据结构来组织、存储和管理数据的仓库。
2、用户可以对数据库执行什么操作?
增加 删除 修改 查找
3、什么是数据库管理系统?
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
4、什么时候会用到数据库应用程序?
当数据库管理系统无法满足用户需求时。
5、一个数据库服务器可以管理多少个数据库?
一个数据库服务器可以管理多少个数据库?
无数个
一个数据库有多少张表?
无数张
一个表有多少条数据?
无数条
6、数据库存储结构整体呈现什么结构?
树状结构
7、什么是SQL语言?
SQL 语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
8、SQL语言的作用?
主要用于管理数据库中的数据,如存取数据、查询数据、更新数据等。
9、有哪几种SQL语言?
数据定义语言 DDL:主要用于定义数据库,数据表等。
数据操作语言 DML:主要用于对数据库中的数据进行添加、修改和删除操作。
数据查询语言 DQL:主要用于查询数据。
数据控制语言 DCL:主要用于控制用户的访问权限。
10、定义、操作语言有什么区别?
数据定义语言 DDL:定义数据库、数据表。
数据操作语言 DML:操作数据库中的数据。
11、oracle、SQLserver、MySQL区别?
Oracle:具有良好的兼容性、可移植性、可连接性。
SQLServer:界面友好、易于操作。
MySQL:免费、运营成本又低。
项目二 创建与维护MySQL数据库
1、如何登录MySQL?
1、 使用win加R组合键,此时会跳出运行窗口,点确定啦!登入命令:MySQL:mysql -h localhost -u root -p
2、退出MySQL:quit或者\q
出现Bye这个英文就是退出MySQL成功。
任务2.1 使用图形化工具创建数据库
latin1:支持西欧字符、希腊字符等。
gbk:支持中文简体字符。
utf8:几乎支持世界上所有国家的字符。
任务2.2 使用命令语句创建、修改和删除数据库
1.创建数据库命令
create database 数据库名;
2.修改数据库命令
alter database 数据库名 default character set gbk;
3.删除数据库命令
drop database 数据库名;
任务2.3 使用语句方式选择与查看数据库
1、查看数据库状态信息
输入这命令 status;
2、查看所有数据库
输入这命令 show databases;
3、查看数据库创建信息
输入这命令 show create database 数据库名;
2、MySQL默认端口号
3306
3、mysql -h localhost -u root -p中-h含义?-u含义?-p含义?
-h host 主机地址
-u user 用户名
-p password 密码
4-h localhost为什么可以省略?
因为本机地址可以省略。
项目三 创建与维护MySQL数据表
任务3.1 数据表的结构及数据完整性设计
1、为什么需要不同的数据类型?
一是存储数据时可以更好地与显示相对应,不同字段存储的数据类型不一样。
二是可以节省空间,针对某种类型的数据,就分配对应的内存空间用于存储。
2、有哪几种MySQL数据类型?
①整数类型
TINYINT 占用1个字节
INT 占用4个字节
BIGINT 占用8个字节
②浮点数和定点数类型
FLOAT 单精度 4 范围在7位左右
DOUBLE 双精度 8 范围在15位左右
③日期和时间类型
DATE 占用4个字节 范围在:2022-03-12
DATETIME 占用8个字节 范围在:2022-05-21 13:14:00
④字符串和二进制类型
char和varchar
char(4) 'a' 占用4 个字节 长度固定
varchar(4) 'a' 占用1个字节 长度固定
TEXT 16的倍数 0-65535
ENUM("值1","值2",...,"值n") 单选
SET("值1","值2",...,"值n") 多选
BIT 字节文件 音乐、电影、文件
3、MySQL的约束主要包括?
主键约束、外键约束、唯一约束、非空约束和默认值约束
任务3.2 使用语句创建数据表及其约束
1.使用create table 语句创建数据表及其约束
1、创建数据表
create table 表名(
字段名1 字段数据类型1 comment "备注信息1",
字段名2 字段数据类型2 comment "备注信息2",
.....................................
字段名n 字段数据类型n comment "备注信息n"
);
字段名1 字段数据类型1 comment "备注信息1",
字段名2 字段数据类型2 comment "备注信息2",
.....................................
字段名n 字段数据类型n comment "备注信息n"
);
2.使用语句查看数据表结构
describe 表名;或者 desc 表名;
show create table 表名\G;
子主题
任务3.3 修改、删除数据表结构
1、使用alter table 语句修改、删除表结构
1、修改数据表中表名(to可省略)
alter table 表名 rename 新表名;
2、修改数据表的字段名和数据类型
alter table 表名 change 原字段名 新字段名 新数据类型;
3、数据表添加字段
alter table 表名 add 新字段 新数据类型;
4、在数据表中的第一个位置添加字段
alter table 表名 add 字段名 数据类型 first;
5、在指定数据表字段之后添加字段
alter table 表名 add 字段名 数据类型 after 已存在字段名;
6、修改数据表字段排列位置
alter table 表名 modify 待修改字段名 数据类型 after 字段名;
2、使用语句删除数据表
1、删除数据表
drop table 表名;
任务3.4 数据插入、更新与删除
1、使用命令语句插入数据
1、指定字段插入数据
insert into 表名 (字段名1,字段名2,.........)
values (值1,值2,..........);
values (值1,值2,..........);
2、所有字段插入数据
insert into 表名 values (值1,值2,.........);
3、指定字段批量插入数据
insert into 表名 (字段名1,字段名2,.........)values
(值1,值2,............),
(值1,值2,............),
.............;
(值1,值2,............),
(值1,值2,............),
.............;
4、所有字段批量插入数据
insert into 表名 values
(值1,值2,..........),
(值1,值2,..........),
.............;
(值1,值2,..........),
(值1,值2,..........),
.............;
2、更新数据
update 表名 set
字段名1 =值1,
字段名2 =值2,
字段名3 =值3
where 条件;
字段名1 =值1,
字段名2 =值2,
字段名3 =值3
where 条件;
3、删除数据
delete from 表名 where 条件;
项目四 MySQL数据表的检索
任务4.1 查询时选择列
1.基本查询语句
SELECT
{* | <字段列表>}
[
FROM<表1>,<表2>...[WHERE<表达式>]
[GROUP BY<group by definition>]
[HAVING<expression>[{<operator><expression>}...]]
[ORDER BY<order by definition>]
[LIMIT[<offset>,]<row count>]
]
SELECT[字段1,字段2...,字段n]
FROM[表或视图]
WHERE[查询条件];
{* | <字段列表>}
[
FROM<表1>,<表2>...[WHERE<表达式>]
[GROUP BY<group by definition>]
[HAVING<expression>[{<operator><expression>}...]]
[ORDER BY<order by definition>]
[LIMIT[<offset>,]<row count>]
]
SELECT[字段1,字段2...,字段n]
FROM[表或视图]
WHERE[查询条件];
2.检索所有列
select * from 表名;
select 字段1,字段2,...,字段n from 表名;
任务4.2 查询时选择行
1.查询指定记录
select 字段名1,字段名2,...,字符名n from 表名 where 条件;
2.带in关键字的查询
select 字段名1,字段名2,...,字段名n from 表名 where 字段名 IN(值1,值2,...);
3.带between and的范围查询
select 字段名1,字段名2,···.字段名 n from 表名 where字段名 between值1and值2;
4.带like的字符匹配查询
select 字段名1,字段名2,···,字段名n from表名 where字段名 like条件;
任务4.3 查询结果排序
1.正序排序
order by 字段名
order by 字段名 asc;
order by 字段名 asc;
2.倒序排序
order by 字段名 desc;
任务4.4 查询的分组与汇总
1.聚焦函数
数量 count(字段名) count(* or 0)
求和 sum(字段名)
平均数 avg(字段名)
最小值 min(字段名)
最大值 max(字段名)
求和 sum(字段名)
平均数 avg(字段名)
最小值 min(字段名)
最大值 max(字段名)
2.分组查询
group by 字段名 having 条件
任务4.5 创建多表连接查询
1.交叉连接查询
select * from 表名1 cross join 表名2;
2.内连接查询
select * from 表名1 inner join 表名2
on 表名1.表1字段名 = 表名2.表2字段名;
on 表名1.表1字段名 = 表名2.表2字段名;
3.左连接查询
select * from 表名1 left join 表名2
on 表名1.表1字段名 = 表名2.表2字段名;
on 表名1.表1字段名 = 表名2.表2字段名;
4.右连接查询
select * from 表名1 right join 表名2
on 表名1.表1字段名 = 表名2.表2字段名;
on 表名1.表1字段名 = 表名2.表2字段名;
任务4.6 创建子查询
带in关键字的子查询
select * from 表名 where 字段 in (查询语句);
带exists关键字的子查询
select * from 表名 where exists (查询语句);
带any关键字的子查询
select * from 表名 where 字段 > any (查询语句);
带all关键字的子查询
select * from 表名 where 字段 > all (查询语句);
项目五 创建与使用视图
任务5.1 使用语句创建视图
1.创建视图
create view 视图名 as select * from 表名;
2.使用视图
select * from 视图名;
3.查看视图创建语句
show create view 视图名\G;
任务5.2 修改视图
1.使用 create or replace view 语句修改视图
create or replace 视图名 as 查询语句;
2.使用 alter 语句修改视图
alter view 视图名 as 查询语句;
任务5.4 利用视图更新数据表
1.使用update 语句更新视图
在MySQL中,可以使用update语句对视图中原有的数据进行更新
update 视图名 set
字段名1 =值1,
字段名2 =值2,
字段名3 =值3
where 条件;
字段名1 =值1,
字段名2 =值2,
字段名3 =值3
where 条件;
2.使用insert 语句更新视图
在MySQL中,可以使用Iinsert语句对视图中的基本表插入一条记录
3.使用delete 语句更新视图
在MySQL中,可以使用delete语句对视图中的基本表删除部分记录
任务5.5 删除视图
删除视图:drop view 视图名;
更新数据表中数据后,视图中数据是否会发生变化?
会
更新视图中数据后,数据表中数据是否会发生变化?
会
项目六 创建与使用存储过程
任务6.1 创建简单存储过程
1.存储过程的优点
①执行效率高:存储过程编译后存储在数据库服务器端,可以直接调用从而提高了SQL语句的执行效率。
②灵活:存储过程可以用结构化语句编写,可以完成较复杂的判断和运算。
③数据独立:优点是当数据表结构变化时,可以随时修改存储过程,不用修改程序源代码。
④安全:避免了用户对数据表的直接访问,保证了数据的安全。
⑤降低网络流量:当在客户机上调用该存储过程时,网络中传送的只是该调用语句,而不是这一功能的全部代码,从而大大降低了网络负载。
2.创建存储过程语句
1.创建简单存储过程。创建存储过程的语法格式为:
create procedure 存储过程名([in | out | inout] 变量名 数据类型)
begin
.......................
.......................
end
begin
.......................
.......................
end
2.查看存储过程
show cprocedure status[like<存储过程模糊名>];
show cprocedure status proc601;
show cprocedure status proc601;
3.调用简单存储过程
call 存储过程名();
4.删除存储过程
drop procedure 存储过程名;
任务6.2 创建带输入参数的存储过程
1.MySQL 带输入参数的存储过程的创建
create procedure 存储过程名([形参列表])
begin
<存储过程体>
end;
begin
<存储过程体>
end;
2.调用存储过程
call 存储过程名([<实参列表>]);
任务6.3 创建带输入和输出参数的存储过程
1.MySQL带输入和输出参数的存储过程创建的语法格式如下:
create procedure 存储过程名([形参列表])
begin
<存储过程体>
end;
begin
<存储过程体>
end;
2.参数的定义格式为:
[in|out|inout]<参数名><参数类型>
3.MySQL的存储过程支持3种类型的参数:
输入类型、输出类型和输入/输出类型,关键字分别使用in、out、inout,省略参数传递类型默认为in
任务6.4 创建应用游标的存储过程
1.声明游标
declare<游标名>cursor for<select 语句>;
2.打开游标
open<游标名>;
3.读取游标
fetch<游标名>into变量名1[,变量名2]···
4.关闭游标
close<游标名>;
任务6.5 创建与使用事务
1.事务的ACID特性
(1)原子性:一个事务(transaction)中的所有操作,要么全部执行,要么全部不执行
(2)一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏
(3)隔离性:MySQL数据库允许多个并发事务,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
(4)持久性:事务处理结束后,对数据的修改就是永久的
2.事务控制语句
1.开始事务
start transaction;
2.提交事务
commit;
3.设置保存点
savepoint<保存点名称>;
4.撤销事务
rollback;|rollback to savepoint<保存点名称>;
项目七 创建与使用触发器
任务7.1 创建触发器
1.触发器作用
1.安全性:可以使用户具有操作数据库的特定权利
2.实现复杂的数据完整性:实现数据完整性约束或规则,触发器可实现比约束更复杂的限制
3.实现复杂的非标准数据相关完整性:触发器可以对数据库中相关的表进行级联更新
2.创建触发器
create trigger 触发器名 触发时刻 触发事件 on 表名 for each row 触发器动作;
任务7.2 查看及删除触发器
1.查看触发器
1.show triggers 的语法格式为:
show triggers [from数据库名];
2.select 的语法格式为:
select * from Information_Schema. Triggers
where Trigger_Name=<触发器名>;
where Trigger_Name=<触发器名>;
2.删除触发器
删除触发器使用 drop trigger 语句,其语法格式为:
drop trigger 触发器名;
项目八 数据库的安全性维护
任务8.1 添加数据库用户
1.MySQL的权限表
user权限表:它是MySQL中最重要的一个权限表,主要分为4个部分:用户列、权限列、安全列和资源控制列
①用户列:用户登录时通过表中的Host、User和Password列判断连接的IP、用户名称和密码是否存在于表中来通过身份验证或拒绝连接。
②权限列:user表中包含多个以“_priv”结尾的字段,这些字段决定了该用户的权限,既包括查询权限、插入权限、更新权限、删除权限等普通权限,也包括关闭服务器和加载用户等高级管理权限。
③安全列:ssl(加密)、x509(标识用户)开头的字段,以及 plugin和 authentication_string 字段(验证用户身份、授权的插件)。
④资源控制列:max(最大允许次数,0表示无限制)开头的字段。
db、host权限表
db权限表存储用户在各个数据库上的操作权限,决定哪些用户可以从哪些主机访问哪些数据库
table_priv权限表
记录数据表级别的操作权限,与db权限表相似,不同之处是它用于数据表而不是数据库
columns_priv权限表
记录数据字段级别的操作权限,与table_priv权限表类似,不同之处是它针对某些表的特定字段的权限
procs_priv权限表
该权限表存储用户在存储过程和函数上的操作权限
2.添加用户
create user 语句的语法格式为:
create user<'用户名'>@<'主机'>[identified by[password][<密码'>]];
insert 语句的语法格式为:
insert into mysql.user (user, host, password)values(<'用户名'>,<'主机'>,password(<'密码'>));
任务8.2 授予、回收数据库用户权限
1.授予用户权限
grant语句不仅是授权语句,还可以达到添加新用户或修改用户密码的作用,语法格式为:
grant<权限名称>[(字段列表)]on<对象名>to<'用户名'>@<'主机>[identified by[password]<'新密码'>][with grant optin];
2.查看用户权限
(1)使用 show grants语句查看授权信息,其语法格式为:
show grants for<用户名'>@<'主机>
(2)使用 select 语句查看 mysql.user表中用户的全局权限,其语法格式为:
select<权限字段>from mysql.user
[where user=<'用户名'>and host=<'主机'>];
[where user=<'用户名'>and host=<'主机'>];
3.回收用户权限
使用 revoke 语句回收用户权限,其语法格式为:
revoke<权限名称>[(字段列表)]on<对象名>from<'用户名'>@<主机>;
任务8.3 数据库用户管理
1.修改用户的名称
使用 rename user 语句可以修改用户的名称,其语法格式为:
rename user <' 旧的用户名'>@<'主机'>to<'新的用户名'>@<'主机>;
2.修改用户的密码
(1)使用 mysqladmin 命令修改用户密码的语法格式为:
mysqladmin-u<用户名> [-h<主机>]-p password[<新密码>]
(2)使用 set password 语句修改用户密码的语法格式为:
set password[for<'用户名'>@<'主机'>]=password(<'新密码>) ;
(3)使用 update 语句修改用户密码的语法格式为:
update mysql.user set password=password(<'新密码'>)where user=<'用户名'>and host=<'主机'>;
3.删除用户
(1)使用drop user 语句删除用户的语法格式为:
drop user<'用户名'>@<'主机'>;
(2)使用 delete 语句删除用户的语法格式为:
delete from mysql.user where user=<'用户名'> and host=<'主机'>;
收藏
0 条评论
下一页