一、数据库基本概念
1.1 数据库概述
数:数字信息
据:属性
数据:对一系列对象的具体属性的描述的集合
数据库:数据库就是用来组织(各个数据之间是有关联的,按照规则组织起来的)、存储和管理(对数据的增、删、改、查)的仓库
数据库是企业的重要信息资产,在使用数据库进行增删改查时,要注意删和改需要谨慎
1.2 数据库管理系统(DBMS)
- 实现对数据的有效组织,管理和存取的系统软件
- 用户是通过DBMS(各种数据库软件)来对数据库进行操作
- 数据库是一个系统,是一个人机系统,由硬件、os(操作系统)、数据库、DBMS和数据库用户共同组成
1.3 数据库的分类
关系型数据库
mysql(中小类型的数据并发请求)、oracle(大数据量)、sql-server、mariaDB、postgresql等
存储数据的结构是一个二维表格
表:以行+列的形式组成
行:记录,用来描述一个对象的信息
列:字段,用来描述对象的一个属性
- 关系型数据库中,表里面的数据是关联的,表和表之间的数据也是关联起来
- 多表关联,最多可以关联三张表
非关系型数据库
redis(缓存型数据库)、es(索引型数据库)、MongDB(文档型数据库)等
存储数据不以关系模型为依据,用键值对来保存数据
- 关系型数据查询速度更慢一些
- 非关系型数据库可以支持高并发读写,对海量数据依旧保持着高效率的存储和访问
1.4 Mysql数据库的存储引擎
5.5之间:MyISAM是默认的、不支持事务和外键的存储引擎。
5.6之后:默认的存储引擎为InnoDB成为默认并且可以支持事务、外键、行级锁定的存储引擎
支持高并发性能的应用
事务
事务:在数据库当中,一个或多个操作组成的数据操作的序列
这些操作要么全部成功,失败一个就全部不执行,需要确保数据一致性和完整性
事务的特点
- 原子性:数据库最小工作单元,要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚。完成的操作也会被撤销
- 一致性:事务执行前后,数据库的完整性约束不能被破坏,只有在满足所有的约束条件情况下,事务才能被提交
- 隔离性:事务的执行是相互隔离,一个事务的执行不能受到其他执行事务的干扰。并发事务之间互相隔离。防止数据不一致的情况发生。
- 持久性:事务一旦提交,他所作的所有修改会被永久的保存在数据库中。即使系统崩溃,提交的数据也不丢失。确保数据库始终处于一致性的状态,确保数据的完整和一致
1.5 Mysql的名词
- 1、数据库:database
- 2、表:table 行:row 列:column
- 3、索引:index
- 4、视图:view
- 5、存储过程:procedure
- 6、触发器:trigger
- 7、用户:user
- 8、权限:privilege
1.6 Mysql的语句规范
- 在数据库系统中,sql不区分大小写,但是建议大写。语句不区分,但是表名是严格区分大小写
- sql语句可以单行也可以多行书写,但是默认都以;结尾
- 换行时关键词不能跨行或者简写
- 子语句通常位于独立行,便于编辑,提高可读性
1.7 数据库的命名规则
- 必须以字母开头,后面可以包含数据,特殊字符
- 不要使用Mysql的保留字来命名表
- 数据库名、表名、用户名严格区分大小写
1.8 数据库的字符类型
int:4个字节,用来存储整数
char:用来存储固定长度的字符串,用来存储定长的字符串
varchar:存储可变长度的字符类型,存储可变长度的字符串(无限制的可以随便写)
float(m,d):单精度浮点,存储浮点数,m表示总位数,d表示小数位
double(m,d):双精度浮点,存储浮点数,m表示总位数,d表示小数位
text:用于存储大文本数据,文档,或者长字符串
image:二进制存储图像、图片、多媒体
decimal(m,d):用于存储固定精度的小数,
date:存储日期:yyyy-mm-dd
datetime:存储日志:YYYY-MM-DD HH:MM:SS
timestamp:和datetime格式一致,可以自动地更新为当前的时间戳
二、Sql语句
2.1 DDL数据定义语言
用于创建数据库的对象,创建库、表、索引等
数据库相关操作:
- SHOW:查看
- CREATE创建
- DROP删除
- ALTER修改
进入Mysql数据库
mysql -u root -p密码;
查看当前数据库使用端口
show global variables like 'port';
查看当前数据库
show databases;
使用某个库
use mysql 库名;
查看当前库中的表
show tables;
查看表结构
describe 表名;
缩写:
desc 表名;
纵向查看表结构:
describe user\G;
创建库
create database 库名;
创建表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型...,primary key(主键名));
例:
create table ky32 (id int(4) not null,name varchar(10) not null,score decimal(5,2),passwd char(48),primary key(id));
null和空格的区别:null是什么都没有,空格也算是字符
删除表
drop table 表名;
删除库
drop database 库名;
2.2 DML数据操纵语言
对表中的数据进行管理,包括select、update、insert、delete等
清空表中数据
truncate table 表名;
向表中添加数据
insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);
例:
insert into naruto(id,name,score,passwd) values(1,'naruto',95,111);
insert into naruto(id,name,score,passwd) values(2,'sasuke',90,222);
查看表:
select * from 表名;
给表中数据加密
例:
insert into naruto(id,name,score,passwd) values(3,'sakura',85,password('333'));
删除表中数据
例:
delete from naruto where id = 3;
2.3 DQL查询数据记录
查询表中指定行
降重查询
select distinct 字段 from 表名;
多个字段的话是所有条件都包含
修改表名
alter table 原表名 rename 新表名;
添加列
alter table 表名 add 字段 字符类型;
更新数据
例:
update uzumaki set birth=date('2020-1-1') where id = 4;
修改字段(列)名
例:
alter table uzumaki change birth birthday datetime;
删除字段(列)
例:
alter table uzumaki drop birthday;
修改列的字段类型
alter table 表名 modify column 字段 字段类型;
例:
alter table uzumaki modify column passwd varchar(52);
2.4 DCL数据控制语言
用于控制数据库用户的访问权限
GRANT:用于授权用户访问权限
REVOKE:用于取消用户的访问权限。
2.5 TCL事务控制语言
用于控制数据库事务的提交和回滚
COMMIT:用于提交事务
ROLLBACK:用于回滚事务
SAVEPOINT:用于设置保存点,以便在发生错误时回滚到该点