MySQL数据库

一. 数据库

关系型数据库 mysql(开源) oracle(付费)
非关系型数据库 redis

1.1 数据库的概念

database: 用来组织,存储,管理数据的仓库。

数据库的管理系统: DBMS
实现对数据的有效值,关系和存取的系统软件。

1.2 关系型数据库

mysql(开源)  
oracle(付费)
sql-server(没人用,windows研发)
postgresql(大象数据库)  
influsdb(开源的时序数据库)

核心是一张表格,数据存储在表格当中
表有行和列:

  • 列:列又叫字段,描述对象的属性
  • 行:描述对象的信息。

数据是保存在表里面的,关系型数据库的表于表之间是有关联的,数据之间也是有关联的。
关系型数据库可以有多个库,库里面保存的是表,表里面有数据。但是,每个库是独立的。
数据库当中,多张表存储在库中,通过表与表之间的字段进行关联。

1.3 非关系型数据库

有库,库里面保存的是键值对 key------>value的形式进行保存
关系型数据库:并发量很低,一旦访问大量集中,数据库会很快崩溃

redis---->用户第一次访问数据---->redis上生成一个缓存的键值对----->访问缓存键值对

非关系数据库,可以高并发读写,对海量依旧可以保持高效的存储和访问。而且也实现高可用的架构

  • es elasttic search 索引型非关系数据库

  • redis 缓存型非关系数据库

  • prometheus 时序性的非关系数据

  • monggoDB 文档型非关系数据库

#mysql数据库的数据类型,这也是所有关系型数据库的数据类型
int(n):数据类型是整数, n,表示数据的长度显示,如int(4)
char():都是保存字符串类型的数据,保存固定长度的字符
varchar():都是保存字符串类型的数据,保存可变长度的字符
   1char的字段,无论是否有值,char都会占据4个字节(硬盘空间)
   2、varchar是按照实际的字符长度进行记录,但是在结尾会多加一个字符,多一个字节
   varchar比char节省磁盘空间
   读写速度,char比varchar要快的多。char的存储方式是连续磁盘空间,varchar多次查询之后,会产生磁盘文件的碎片
text:存储大文本数据
date:用来存储日期,YYYY-MM-DD
datetime:用来存储日期,YYYY-MM-DD HH:MM:SS
timestamp:可以自动存储当前的时间戳。YYYY-MM-DD HH:MM:SS
float(n,m):浮点数,带小数点的值,n总位数,m小数点后几位,单精度浮点数
double(n,m):双精浮点数
image:存储图盘或者是多媒体的文件

二. 数据库的存储引擎和事务

msygl: innoDB 支持事务,支持行级锁定,支持外键的存储引擎。

事务由四个特性组成:

  1. 原子性:事务是整个数据库工作的最小单位,不可分割的,要么全部执行成功,要么全部失败。
    所有的已成功的都会被失败。
  2. 一致性:事务执行前后,数据完整性约束是不能被破坏的,满足所有条件约束的情况下,事务才能被提交。
  3. 隔离性:事务之间的执行是隔离的,一个事务的执行不能受到其他事务的干扰。
  4. 数据的持久性:事务一旦被提交,将永久性的保存到数据库中,保证数据不会丢失。

事务:插入数据,更新数据,删除数据。

2.1 数据库的管理

管理数据库的语法:sql语句

数据库:database
表:table
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure

三. sql语句的规范

  1. sql语句不区分大小写,但是建议用大写
    sql可以是单行也可以是多行,默认是以“;”结尾。
    如果是多行表示一个sql语句,关键词必须要在一行。
  2. 库名,表名,列名和行的值,是严格区分大小写的。
  3. 命名规则:表,库,都必须以字母为开头,不要使用sql的保留字段,table select show database,表名和库名尽量不要使用特殊字符

3.1 sql语句的分类

  1. DDL:数据库定义语言,创建数据库,表示,索引等等的语句

create 创建
drop 删除
ALTER 修改---->只能对表修改

  1. DML:数据库操作语言,对表里面的数据进行管理

select 查
update 更新数据
insert 差输入
delete 删除数据

  1. DQL:查询语句,查询数据表中的符合条件的数据

select

  1. DCL:数据库控制语言,对数据库用户的权限进行控制

GRANT 赋权
REVOKE 取消权限

  1. TCL:事务控制语句

commit 提交
rollback 回滚
savepoin 保存点,用来回滚的

null和空值
null就是什么都没有,什么都不存在
空值:也是有数据,也是值

四. 创建数据库与表(navicat软件操作)

create database jx233;
#创建数据库

#创建表
create table jx244 (
id int not null,
#声明表中字段的名称和字段的类型,not null表示一定要写入数据
name char(10) not null,
#字段的名称是name,长度是10个字符,值一定有
address varchar(48) DEFAULT'地址不详',
#DEFAULT默认的给这一列的数据生成一个值,不写入数据,默认就是地址不详
score FLOAT(3,1)
);

select * from jx244;
#select 查
#*:所有列
#from 表名

desc jx244;
key:键 主键或者外键
default:表示如果插入数据时,没有写数据,自动添加字段
extra:提供附加的信息,自增长等等,自动加入时间

drop table jx244;
#删除表
drop database jx233;
#删除库

4.1 insert插入数据

insert into 表名 (字段1,字段2,字段3...) values(字段1的值,字段2的只值,...)

insert into jx244(id,name,address,score)values(1,'jx',' ',99);
insert into jx244(id,name,address,score)values(2,'xj',null,99);
jx244(id,name,address,score)values(3,'第三',DEFAULT,97);

在这里插入图片描述

4.2 update 更新表的数据

update jx244 set score=100 where name='xj';
#修改jx244的表的数据,scocre=90,where条件进行定位

update jx244 set name='第一' where id =1;

4.3 delete 删除表中的数据行

delete from jx244 where name='第三';
delete from jx244 where name='';

4.4 select查询语句的进阶用法

select * from xy103 limit 3,5;
#查看4到6行
select distinct 列名 from jx244;
#distinct去重查询

#模糊查询
select * from jx244 where address like '%4%';
select * from jx244 where address like '4%';#表示以什么结尾
select * from jx244 where address like '%4';#表示以什么为开头

4.5 对表结构进行修改

1、修改表名:
Alter table xy103 rename jx104;

2、增加字段:
Alter table jx244 add birday date not null;

3、修改字段的类型:
alter table jx104 modify column birday varchar(20);

4、修改列的名称:
alter table jx104 change birday birtehday char(20);

5、删除字段
alter table jx104 drop birtehday;


create table if not exists jx105 (
#if not exists,只有当前的库中,没有xy105这张表才会进行创建
id int(4) primary key not_increment,
#auto_increment;该字段的價会自增长,必须是唯一的。主键或者是唯一约束
name char(20) not null
);

4.6 mysql当中的六个约束

  1. 主键约束:primary key ,用于标识表中的每一行,主键的字段的值必须是唯一的,且不能为空,而且一个表只能有一个主键
alter table xy106 drop PRIMARY key;
#删除主键
  1. 外键约束:foreign key ,用来建立表于表之间的关系。-张表的外键和另一张表的主键的值要
    匹配,保证数据的引用完整性
  2. 非空约束:not null,插入或者是更新的操作这个字段必要有值
  3. 唯一性约束:unique key ,类似于主键的唯一性,但是一个表可以有多唯一性约束
  4. 默认值约束:default
  5. 自增约束:auto_increment,一般都是和主键一起使用,唯一性和数据类型都有要求

4.7 多表联合查询

在这里插入图片描述
在这里插入图片描述
多表联合查询时,表与表之间的关联不要超过3张表,超过之后速度会下降。

五. 练习

创建一个jx404表格

create table jx404 (
id int not null,
name char(10) not null,
address varchar(48) DEFAULT'地址不详',
score FLOAT(3,1)
);

select * from jx404;

在这里插入图片描述

1、只看前2行
在这里插入图片描述

select * from jx404 limit 2;
在这里插入图片描述
2、查询2-4行
select * from jx404 limit 1,3;
在这里插入图片描述
3、根据name和score进行去重查询
在这里插入图片描述

select distinct name,score from jx404;
在这里插入图片描述
4、查看表的结构
desc jx404;
在这里插入图片描述

5、修改name列的数据类型,更改为varchar(15)
alter table jx404 modify column name varchar(15);
在这里插入图片描述

6、添加新的colunm,名字为birth 类型为date
alter table jx404 add birth date;
在这里插入图片描述

7、birth为当前时间,自动生成。

insert into jx404 values(7,'日期',DEFAULT,7,now());
在这里插入图片描述

8、修改birth列的名称,改为birthday。类型为char(15).
在这里插入图片描述

alter table jx404 change birth birthday char(15);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值