软件测试-数据库04

141 阅读6分钟

1、ER模型——三个元素:实体、联系和属性

E表示entry:实体:代表的是一类事物
    
R表示realationship,联系:表示一个或者多个实体之间的关联关系,关系数据类型包括一对一、一对多、多对多
    
属性:实体的某一特性陈伟属性	
    
一对一:多个人、多个个人简介(这个不经常使用,所以由这个来维护关系)
一对多:多个班级,多个学生
多对多:多个课程、多个学生、多个成绩

2、命令行客户端

装完mysql之后,就会有数据库 命令行
cd 安装目录下/bin/
    
2.1、连接   
mysql -u root(用户) -p  回车再输入密码
    
2.2、查询所有库
show databases;
    
2.3、查看所有表
show tables;
    
2.4、查询表结构
desc students;
或者show create table student;
    
2.5、  进入库
use ceshi;
    
2.6、  查表(可能是乱码)
select * from students; 
    
2.7、  改成国标显示                      
set charset gbk;
    
2.8、查询当前用的仓库                
select databases();
    
2.9、 创建库
creat databases test charset='utf8' 
    
2.10、 删除数据库
drop databases test;    
    
2.11、换行写命令的话,括号分行,在按回车
creat table test(
id int;
name char)

3、命令行客户端-备份与恢复

必须以管理员身份运行命令行
    
3.1、备份
mysqldump -uroot -p123456 ce>beifen.sql
    
3.2、恢复
mysql -uroot -p123456 back<beifen.sql

4、函数——内置函数

41、字符串函数
    
4.1.1、拼接字符串
select contact(123,'abc');
    
例子:查询结果是一个人的家乡
select name,hometown,contact(name,'的家乡是',hometown) from students
    
4.1.2、长度——中文字符是3,其他是1
    
select length('123')                select length('温')  ——>结果是3
    
例子:查询名字是3个字的
select * from student where length(name)=9;
    
4.1.3、截取字符串
select right('abc',2)           bc
    
select left('abc',2)             ab
    
select substring('abc',1,1),从左往右截取角标为1开始,的一个字符,就是b
    
例子:温某某
select name,sex,contact(left(name,1),'某某'),'的家乡是',hometown) from students
    
4.1.4、去除空格
    
ltrim(str)去除左边的空格
rtrim(str)去除右边的空格
    
例子:
select ltrim(rtim('       abc           '))
    或者select trim('       abc           ')
    
4.1.5、大小写
    
upper()
lower()
    
    例子
select upper('       abc           ')
    
4.1.6、四舍五入
 select round (165,14.1.7、幂
select pow(2,32)          232次方
    
4.1.8、圆周率
select ronud(PI(),100)
    
4.1.9、随机——这个有点用
    
例子:随机010的整数      rand是0-1的整数
select round(rand(()*10);
    
4.1.10、随机从一个表中取一个记录
select *,rand() from students order by rand() limit 1

4.1.11、日期和时间函数
    
当前日期
select current_date();
    
当前时间
select current_date();            或者select now();
    
格式化时间2020/07/06-10:10:00
select date_format(now(),'%Y/%m/%d-%h:%i:%s')

5、流程控制

select 
case 1 
when 1 then 'one'
when 2 then 'two'
else 'zeero'
end as result; 
    
例子:
select name,sex,
case sex
when '男' then contact(left(name,1),'先生')
when '女' then contact(left(name,1),'女士')
else contact(left(name,1),'XX') 
end as res
from students

6、自定义函数

语法
create function 函数名称(参数列表) return 返回类型
begin 
sql语句
end 

例子:
create function my_trim(str varchar(100)) returns varchar
begin 
return ltrim(rtrim('100'));
end 

select my_trim('       abc           ')

delimiter  $$ 把分号替换成$$,方便在命令行中创建函数使用,分号就可以正常使用,结束运行的haul需要输入$$

7、存储过程——可以写多条语句,然后使用存储过程来执行

delimiter //
create procedute 函数名称(参数列表) return 返回类型
begin 
sql语句
end 

存储过程调用是:call而不是select

8、视图

对于复杂的查询,采用视图进行查询——create view   虚拟表名 as

视图是从一个或几个基本表(或视图)中导出的虚拟的表。在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。
视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。
视图看上去非常像数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些视图可以修改对应的基表,而有些则不能(仅仅能查询)

create view v_stu as
select * from students    …             (这是一个查询语句)
	以后查询的话,就只需要select * from v_stu

9、事物

只要一个功能,多步操作。要不全部执行,要么全部不执行。
    
特点:
1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。 [1]  
2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。 [1]  
3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。 [1]  
4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
	
  例子:转账
王:500
温:100
    
过程:
update account set money=money-100 where name="王";
update account set money=money+100 where name="温";

begin;
所有操作都成功;
commit;
begin;
任何一步失败;
rollback;

10、索引——作用在某一列,进行创建索引之后,提升查询速度。缺点:修改表每次都要改变结构,则会降低更新速度。

设置时间:set profiles=1;
查询语句;
查询用了多少时间show profiles;

语法:
查看索引
show index from 表名;

创建索引
方式一:创建表时创建索引
create table create_index(
name varchar(10),
age int,
key (age)
);
方式二:已经存在的表创建索引
create index 索引名称 on 表名(字段名称,长度)
create index i_name on test(name(10))

分析查表的方式,用这个,可以查看是否用了索引。
explain
select * from test_name  where title='0011100'

11、外键

主键外键索引
定义:唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键, 外键可以有重复的, 可以是空值该字段没有重复值,但可以有一个空值
作用:用来保证数据完整性用来和其他表建立联系用的是提高查询排序的速度
个数:主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引
外键:比如学生表的班级,只能在一个范围内,这个范围就是外键另一张表的班级表
        主表——>从表(约束)
缺点:在开发中,很少用到外键,降低更新效率

12、修改密码:(md5解密)

root登陆,修改user表,使用password
进入mysql。有个user表,里面就有password
select password('123')                加密的函数
upadte user set password=password('123')这个就是修改密码
修改成功需要执行:flush privileges;

13、忘记root密码

安装目录下my.ini
[mysqld]
skip-grant-tables                     跳过密码验证。再使用上面的功能进行设置新的密码。