数据库 -- MySQL

1.1 数据库简介

数据库就是存放数据的仓库,常用的数据库模型主要分为两种:关系型数据库和非关系型数据库

关系型数据库模型就是把复杂的数据结构归结为简单的二元关系(即二维表格形式)

非关系型数据库也被称为NoSQL数据库,NoSQL的产生并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有

效补充。NoSQL数据库在特定的场景下可以发挥难以想象的高效和高性能

1.2 MySQL命令

1.2.1 连接命令

使用命令连接

打开终端,运行命令(前提需要配置mysql环境变量)

mysql -uroot -p
# 回车后输入密码,当前设置的密码为mysql
# 完整命令 
mysql -h 192.168.10.123 -P 3306 -u root -p 
# 其中-h参数为主机地址 -P为端口值

退出登录

quit
# 或者exit

1.2.2 数据库操作

显示数据库列表:

show databases;

创建数据库:

create database 数据库名 charset=utf8;

删除数据库:

drop database 数据库名;

切换数据库:

use 数据库名;

查看当前选择的数据库:

select database();

1.2.3 表操作

查看当前数据库中所有表:

show tables;

创建表:

create table 表名(列及类型);
create table students(
    id int auto_increment primary key not null,
    sname varchar(10) not null,
);

修改表:

alter table 表名 add|change|drop 列名 类型;
alter table 表名 add 列名 类型;--添加某一列
alter table 表名 change 原列名 新列名 类型; --修改表的列属性名
alter table 表名 drop 列名; --删除表的某一列
alter table 表名 rename 新表名; --修改表名

删除表:

drop table 表名;

查看表结构:

desc 表名;

1.2.4 数据操作CURD

查询:

select * from 表名

增加:

全列插入:insert into 表名 values(...)
缺省插入:insert into 表名(列1,...) values(值1,...)
缺省插入:insert into 表名 set field1=value1,field2=value2
同时插入多条数据:insert into 表名 values(...),(...)...;

修改:

update 表名 set 列1=值1,... where 条件

删除:

delete from 表名 where 条件

1.2.5 外键

MySQL创建关联表可以理解为是两个表之间有个外键关系,但这两个表必须满足三个条件

1.两个表必须是InnoDB数据引擎

2.使用在外键关系的域必须为索引型(Index)

3.使用在外键关系的域必须与数据类型相似

外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

定义外键:

constraint FK_TEAID foreign key (teaid) references tea (id) ON DELETE RESTRICT ON UPDATE RESTRICT;

添加外键:

alter table stu add constraint FK_TEAID foreign key(teaid) references tea(id);

删除外键:

alter table stu drop foreign key FK_TEAID;

1.3 数据备份与恢复

进入mysql库目录:

# 运行mysqldump命令
mysqldump –uroot –p 数据库名 > ~/Desktop/备份文件.sql;
# 按提示输入mysql的密码

数据恢复:

# 连接mysqk,创建数据库
# 退出连接,执行如下命令
mysql -uroot –p 数据库名 < ~/Desktop/备份文件.sql
# 根据提示输入mysql密码

1.4 数据的授权

grant all on *.* to zzy@localhost identified by '1234';
grant select on db.stu to zzy@localhost identified by '1234';

删除用户:

use mysql
delete from user where user ='zzy';

修改密码:

use mysql
update user set password=password('新密码') where User="zzy" ;

1.5 知识进阶

1.5.1 as

在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中

1.5.2 distinct

消除重复行

在select后面列前使用distinct可以消除重复的行

select distinct gender from students;

1.5.3 where

select * from 表名 where 条件;

比较运算符:

等于=、 大于>、大于等于>=、小于<、小于等于<=、不等于!=或<>

# 查询编号大于3的学生
select * from students where id>3;
# 查询编号不大于4的科目
select * from subjects where id<=4;
# 查询姓名不是“黄蓉”的学生
select * from students where sname!='黄蓉';
# 查询没被删除的学生
select * from students where isdelete=0;

逻辑运算符:

and、or、 not

# 查询编号大于3的女同学
select * from students where id>3 and gender=0;

模糊查询:

like

%表示任意多个任意字符

_表示一个任意字符

# 查询姓黄的学生
select * from students where sname like '黄%';
# 查询姓黄并且名字是一个字的学生
select * from students where sname like '黄_';
# 查询姓黄或叫靖的学生
select * from students where sname like '黄%' or sname like '%靖%';

范围查询:

in表示在一个非连续的范围内

# 查询编号是1或3或8的学生
select * from students where id in(1,3,8);

between ... and ...表示在一个连续的范围内

# 查询学生是3至8的学生
select * from students where id between 3 and 8;
# 查询学生是3至8的男生
select * from students where id between 3 and 8 and gender=1;

空判断:

注意:null与""是不同的

# 判空is null
# 查询没有填写地址的学生
select * from students where hometown is null;
# 判非空is not null
# 查询填写了地址的学生
select * from students where hometown is not null;
# 查询填写了地址的女生
select * from students where hometown is not null and gender=0;

1.5.4 聚合

# count(*)表示计算总行数,括号中写星与列名,结果是相同的
# 查询学生总数
select count(*) from students;
# max(列)表示求此列的最大值
# 查询女生的编号最大值
select max(id) from students where gender=0;
# min(列)表示求此列的最小值
# 查询学生最小编号
# sum(列)表示求此列的和
# 查询男生的编号之和
select sum(id) from students where gender=1;
# avg(列)表示求此列的平均值
# 查询女生的编号平均值
select avg(id) from students where gender=0;

1.5.5 分组

#可以对分组后的数据进行统计,做聚合运算
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
# 查询男女生总数
select gender as 性别,count(*) from students group by gender;
# 查询各城市人数
select hometown as 家乡,count(*) from students group by hometown;

1.5.6 排序

select * from 表名 order by 列1 asc|desc,列2 asc|desc,...

asc从小到大排列,即升序

desc从大到小排序,即降序

# 查询男生学生信息,按学号降序
select * from students where gender=1 order by id desc;

1.5.7 事物

事务: 为了保证数据的完整性,成批的SQL要么全部执行,要么全部不执行。

MySQL中只有使用innerDB引擎才支持事务

ACID特性 原子性:要么全部执行,要么全部不执行

一致性 :事务开始前结束后对数据的完整性不会破坏

隔离性 :允许多个并发事务同时对数据的读写,防止多个并发执行引起的不一致

持久性:事务处理结束后,对数据的修改是永久的

常用操作

begin 开始事务

rollback 回滚

commit 结束事务

想要使用事务必须使用INNODB引擎

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值