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