目录
远程连接的方式
修改数据库uuid流程
数据库的概念
关系型数据库
非关系型数据库
关系型数据和非关系型数据库优缺点
mysql的数据类型
数据库的管理
sql中的名词
sql语言的分类
1.DDL:创建库和表的语句 create
2.DML: 插入数据 insert
修改和更新 update
delete删除表的数据
3.DQL:查询语句 select
查看指定行查询 limit
去重查询 distinct
where 语句 条件的筛选
模糊查询 like
alter 修改表名和修改表结构
修改表名
给表添加一个列
修改字段的数据类型
删除列
修改列的名称
sql语句 数据库用来增删改查的语句
备份 数据库的数据进行备份
主从复制,读写分离 (高可用)
远程连接的方式
drop user root@'%';
flush privileges;
清空用户信息(如果下面设置不行清空再操作即可)
mysql -u root -p123456
#进入数据库交互界面
show databases;
create user 'root'@"%" identified by '123456';
#创建用户并设置密码
grant all privileges on *.* to 'root'@'%';
#赋予远程连接的权限
flush privileges;
#刷新生效
alter user 'root'@'%' identified with mysql_native_password by "123456";
#修改加密方式,可以进行远程连接
修改数据库uuid流程
启动MySQL服务
systemctl restart mysqld
进入数据库
mysql -u root -p123456
我们的数据库都一样,用户root,密码123456
#进入数据库操作
select uuid();
#使用uuid函数生成新的uuid,在下方框里会生成新的uuid,把它复制下来保存,就是很长的那一段
show variables like 'datadir';
#查看auto.cnf文件存放的目录,在下方框里显示
#这一步可以不用做,因为我们源码安装的MySQL
#我们的auto.cnf存放的目录都是/usr/local/mysql/data/
quit
#退出数据库
修改auto.cnf文件
vim /usr/local/mysql/data/auto.cnf
server-uuid=(填入刚才生成的新的uuid)
重启MySQL服务
systemctl restart mysqld
数据库uuid修改完成
数据库的概念
数据库:组织,存储,管理数据的仓库
数据库的管理系统(DBMS):实现对数据有效组织,管理和存取的系统软件
软件:mysql、oracle、sql-server、MariaDB、postgreSQL大象数据库
关系型数据库
关系型数据库:mysql 、oracle、postgreSQL
关系型数据存储的结构:是一张二维的表格,表里有行和列
列是对象,字段
行是对象的信息,字段的属性
行+列组成一张表
非关系型数据库
缓存型数据库:redis
索引型数据库:ES
文档型数据库:MongoDB
以键值对形式存储的结构:key value
关系型数据和非关系型数据库优缺点
关系型数据库的优点:表的结构清晰,逻辑容易整理,记录的数据比较完整
缺点:读写速度比较慢,并发量差,数据迁移比较麻烦
非关系型数据库的优点:高并发速写,对海量数据依旧可以保持高效率的存储和访问,架构可拓展
缺点:键值对形式存储,数据逻辑比较复杂,数据是保存在缓存(内存)当中 (尤其是redis),如果意外重启所有数据就会丢失
mysql的数据类型
char:固定长度的自读类型,用于存储固定长度的字符串
varchar:可变长度的字符类型,存储的是可变长度的字符串
char和varchar的区别:
char定义好了长度之后,不论写的值是多少,都会占用固定长度的字节大小,保存在磁盘上都是4字节
varchar在保存字符串时,多少就保存多少,在保存的字符串结尾默认有一个隐藏的结束符,会多占一个字节
varchar比char要节约磁盘空间
char的读写速度性能要高于varchar。char是连续的磁盘空间,保存的内容是连续的;varchar在增删改查之后,会产生一个磁盘空间的碎片文件,影响读写性能
int 存储的数据类型为整数
float 存储的是单精度浮点数,小数点 格式:float(m,d); m表示总位数,d表示小数位数
double 存储的是双精度浮点数 格式:double(m,d);
date 用于存储日期 格式 YYYY-MM-DD
datetime 用于存储日志和时间 格式 YYYY-MM-DD HH:MM:SS
timestamp :和datetime类似,但是它可以自动记录当前时间
smallint 存储小整数
bigint 存储大整数
decimal(5,2);存储精度的浮点数 5表示总位数,2表示小数位
数据库的管理
增删改查——sql语句
sql中的名词
数据库:database
表:table
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure
存储函数:funcrion
调度器:exent
sql的语言规范:
在数据库系统中,sql语句不区分大小写,但是建议用大写;sql语句可以分单行和多行,但是必须要以“;”结尾
命令规范:库名、表名、列的名字,都必须以字母开头,后面可以用数字,也可以跟上特殊符号,不要使用mysql的保留字(table,select,show databases);数据库名,表名,用户名严格区分大小写
sql语言的分类
1.DDL 数据库定义语言:创建数据库的对象语言,比如库、表和索引等等比如create drop
2.DML 数据库操作语言:对表里的数据进行管理 比如 select update insert delete
3.DQL 数据库查询语言:数据库的查询语言 select
4.DCL 数据控制语言:控制和管理数据库用户的角色和权限 grant 赋权 revoke 取消权限
5.TCL 事务控制语言:用来管理数据库的事务,用于脚本开发,存储过程等等,比如commit rollback savepoint
1.DDL:创建库和表的语句 create
desc test01\G;查询表
create 创建 create database xy102 创建库 create table test 创建表
drop 删除 drop databases xy102
xshell里面查看表
key:表示是否是主键或者外键
default:如果没有数据的默认展示结果
extra:提供列的附加信息,比如自增长等等
2.DML: 插入数据 insert
insert into 表名(字段1,字段2,字段3) values(1,2,3);
null和空值之间的区别:
null就是啥也没有,就是为空;空值也是值,只是值是空
insert into test01 values(4,' ',null); 空格也是值,但是null不是值就是空的
修改和更新 update
update 表名 set 列名=值 where 条件;
update test01 set score=90 where id = 4;
delete删除表的数据
delete from 表名 where 条件;
delete from test01 where id=2;
3.DQL:查询语句 select
select score from test01;
select name,score from test01;
查看指定行查询 limit
select * from test01 limit 2,3; 第二行后面的三行
select * from test01 limit 0,3; 第一行到第三行
去重查询 distinct
select distinct name from test01;
where 语句 条件的筛选
and 逻辑且 or 逻辑或
select * from test01 where id=7 and score=71;
模糊查询 like
select * from test01 where name like '顾%'; 顾% 以什么为开头 %顾 以什么为结尾
select * from test01 where name like '%顾%'; 包含内容
alter 修改表名和修改表结构
修改表名
alter table test01 rename test02; 修改表名改为test02
给表添加一个列
alter table test01 add address varchar(50) default '地址不详';
修改字段的数据类型
alter table test01 modify column address char(10);
删除列
alter table test01 drop address;
修改列的名称
alter table test01 change name username char(10);