MySQL基础

什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database
3.基础使用
(1)启动服务、登录、退出
①配置环境变量
②登录
1)cmd> mysql -h主机 -u用户名 -p密码
2)cmd> mysql -h127.0.0.1 -uroot -proot
3)cmd> mysql -uroot -p
③ Commands end with ; or \g.每句话已;或\g结尾
④ Type ‘help;’ or ‘\h’ or ‘?’for help.用 help; 或 \h 寻求帮助
⑤ Type ‘\c’ to clear the current input statement. 用\c 来 清除已输入的语句
⑥\T 开始记录sql语句及结果 到 文件中 ,\t 结束记录
⑦\W 显示最近的警告信息,\w不显示警告信息
⑧quit、exit、\q 退出MySQL
⑨\d分隔符: 修改分隔符
⑩\G 按每行去输出结果
⑪\r 数据库 主机 :切换某个服务器的某个数据库
⑫use 数据库名 或者 \u 数据库名:切换数据库
⑬\s 查看当前服务器信息(字符集、端口号,所在数据库等)
⑭source 或 . 导入恢复数据库
⑮\C 字符集 切换客户端字符集
(2)对数据库的CRUD
①新建数据库 create database 数据库名 character set 字符集;
②查看已有的数据库 show databases;
③查看建库语句 show create database 库名;
④修改数据库 alter database 原数据库名 character set 字符集;
1)修改库名 https://blog.csdn.net/tjcwt2011/article/details/79451764

⑤删除数据库 drop database 数据库名;
⑥使用数据库 use 数据库名;
(3)对表的CRUD
①数据库的数据类型
1)int
2)double
3)date
4)datetime
5)timestamp
6)char
7)varchar
②创建表
1)create table 表名(
列名1 类型(长度) 【约束】,
列名2 类型(长度) 【约束】,

)engine=存储引擎 default charset=字符集;

create table food(
id int,
name char(20),
price double
)engine=MyISAM default charset=utf8;

engine=InnoDB

③查看表结构 desc 表名;
④查看已有的表 show tables;
⑤查看建表语句 show create table 表名;
⑥修改表
1)修改表名
a.alter table 原表名 rename to 新表名;
b.alter table food rename to foods;
2)修改字段
a.alter table 表名 change列名 新列名 新类型(新长度);
b.alter table foods change id num int(8);
c.alter table 表名 modify 列名 新类型(新长度);
d.alter table foods modify num int(10);
3)修改字符集
a.alter table 表名 charset=gbk;
4)修改存储引擎
a.alter table 表名 engine=InnoDB;
⑦删除表
1)drop table 表名;
(4)对数据的CRUD
①插入数据
1)insert into 表名(列名1,列名2) value(值1,值2);
2)insert into food(name,price) value(‘卫龙’,2.5);
3)insert into food(name,price) values(‘卫龙’,2.5),(‘薯条’,1.5),(‘雪饼’,0.5);
4)insert into food value(10001,‘卫龙’,2.5);
5)insert into food values(10001,‘卫龙’,2.5);
②设置字符集
1)\C gbk
2)set names utf8;
③修改数据
1)Update 表名 set 列名1=值1,列名2=值2 条件;
2)update food set id=10003 where price=2.5;
④删除数据
1)delete from 表名 条件;
2)截断表 truncate table 表名;
⑤查询数据
1)select * from 表名;
4.单表查询
(1)基础查询
①语法
select字段列表from表名列表where条件列表group by分组字段having分组之后的条件order by排序limit分页限定;

②查询所有字段
select * from food;
③查询指定字段
select name,price from food;
④去除重复数据
select distinct id, name, price from food;
⑤计算列
1)ifnull(字段名,为null后替换的值 )
select ifnull(id,10000), name from food;
⑥起别名
1)select ifnull(id,10000) as idd, name from food;
2)select ifnull(id,10000) idd, name from food;
3)select ifnull(id,10000) 序号, name 名字 from food;
(2)条件查询
①where子句
②运算符
1)比较查询
a.> 、< 、<= 、>= 、= 、<>、!=
b.IS NULL
2)范围查询
a.BETWEEN…AND
a)select * from food where id between 10001 and 10003;
b.IN(…)
a)select * from food where id in(10001,10002,10004);
3)模糊查询
a.LIKE:模糊查询
占位符:
_ : 单个任意字符
% : 零个或多个任意字符
select* from food where id like ‘%004%’;
select* from food where name like ‘__牛%’;
select* from food where name like ‘%牛%’;
4)逻辑条件
a.AND 或 &&
b.OR 或 ||
c.NOT 或 !
(3)排序查询
①单列排序

  1. select * from food order by price;
  2. select * from food order by price asc;
  3. select * from food order by price desc;
    ②组合排序
    1)select * from food order by price desc,id asc;
    2)select * from food order by price desc,id desc;
    (4)分组查询
    ①聚合函数
    1)max()
    2)min()
    3)avg()
    4)count()
    5)sum()
    ②having子句
    1)与where子句的区别
    a.Where 是分组前的筛选
    b.Having是分组后的筛选
    2)select price,count(id),max(id),min(id),avg(price),sum(price) from food group by price having count(id)>2;
    (5)限制查询
    ①limit n
    1)select * from food order by price desc limit 1;
    ②limit n,m
    1)n偏移量 offset,m分页量
    2)select * from food order by id asc limit 5,5;
    5.多表查询
    (1)内连接
    ①隐式内连接
    ②显示内连接
    (2)外连接
    ①左外链接
    ②右外链接
    (3)子查询
    6.数据约束
    (1)主键
    ①Primary key: 唯一、不能为null
    ②Auto_increment:默认是从1开始。
    (2)默认
    ①Default: 当你没有指定值的时候,给默认值
    (3)非空
    ①Not null:不填,或 填 null 都不行。
    ②默认 允许为 null
    (4)唯一
    ①Unique:唯一索引,索引 理解为 目录。可以为null

(5)外键
①级联操作
1)on update cascade
2)on delete cascade
7.多表之间关系
(1)一对多:主外键
(2)多对多:中间表,俩个一对多
(3)一对一:
①处理为一对多,多方加唯一约束
②从表的主键同时又是外键
8.三大范式
(1)第一范式1NF:
原子性:表中每列不可再拆分。
(2)第二范式2NF:
不产生局部依赖,一张表只描述一件事情。
(3)第三范式3NF:
不产生传递依赖,表中每一列都直接依赖于主键。而不是通过其他列间接依赖于主键。
9.事务
(1)概念
①事务的特性ACID
1)原子性
2)一致性
3)隔离性
4)持久性
(2)手动开启事务
①start transaction;
②commit;
③rollback;
(3)设置自动提交事务
①select @@autocommit;
②set @@autocommit = 0;
③commit;
(4)回滚点
①savepoint 名字
②rollback to 名字
(5)事务的隔离级别
①脏读: 一个事务读取到了另一个事务中尚未提交的数据
②不可重复读:一个事务中俩次读取的数据内容不一致。update引发的问题。
③幻读:一个事务中俩次读取的数据的数量不一样。insert和delete引发的问题。
(6)MySQL的隔离级别
级别 名字 隔离级别 脏读 不可重复读 幻读 默认级别
1 读未提交 read uncommitted 是 是 是
2 读已提交 read committed 否 是 是 Oracel和SQL Server
3 可重复读 repeatable read 否 否 是 MySQL
4 串行化 serialization 否 否 否
(7)设置事务隔离级别
①select @@tx_isolation;
②set global transaction isolation level 级别;
③重写登陆才生效
10.用户及授权管理
(8)创建用户
(9)授予权限
(10)撤销权限
(11)查看权限
(12)删除用户
(13)修改用户密码
(14)修改管理员root密码
(15)忘记管理员root密码
11.数据的备份与恢复
(16)备份
①cmd> mysqldump -u用户 -p密码 数据库 > 文件路径
(17)恢复
①mysql> use 数据库;
②mysql> source 文件路径;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值