MySQL基础

MYSQL: DML数据操作语音 DDL数据定义语言 DCL数据控制语言
在这里插入图片描述
linux6:包名mysql-server 服务名:mysql
linux7:包名mariadb*
安装:yum install -y mariadb*
上墙:firewall-cmd --permanernt --add-service=mysql
firewall-cmd --reload
启动:systemctl restart mariadb
systemctl enabled mariadb
创建:建库 create database abc;
建表 create tables t1(id int,name varchar(10), mail varchar(30));
添加记录:insert into t1 values(1,‘zhangsan’,‘zhangsan@qq.com’);
查:进入库:use 库名;
查看mariadb属性:status;
查询数据库:show databases;
查询库中的表:show tables;
多表查询:(同库)select * from 表 where 列名=‘select 列名 from 表 列名 ’ 三个列名要相同
查看表中数据(排序):select * from 表 order by 列名 (默认降序) 升序在末尾添加desc
查表中数据:select * from t1;
查看当前用户:select user();
查看表结构:desc 表名;
删:
删除表中数据:delete from 表名 where 条件;
删除表:drop table t1(表名)
删除库:drop database abc(库名);
删除用户:drop user zhangsan;
改:
1:update 表 set 要改的列名=要改的值; (更改一列)
2:update 表 set 要改的列名=要改的值 where 条件;(加条件后只更改匹配到的值)
修改mariadb字符集
vim /etc/my.cnf
character-set-server=utf8
systemctl restart mariadb
3:改表结构:alter table t1 add/drop/change 列名 (char(10));
该表名:alter table 旧表名 rename 新表名;
刷新权限设置:flush privileges;

更改登录密码:
一: 在mysql中:set password=password(‘redhat’); 修改当前用户密码
二:不在mysql中:mysqladmin -u root -p password’123456’
破解密码:
1:system stop mairadb
vim /etc/my.cnf
[mysqld]
skip-grant-tables
systemctl start mariadb
2:mysql 空密码进入
use mysql;
update user set password=password(‘redhat’) where user=‘root’ and host=‘localhost’;
exit
改完后:vim /etc/my.cnf
删除skip-grant-tables
3:重启服务:systemctl restart mariadb
改密:mysql_secure_installation
权限: DCL
授权:grant 权限 on 库名.表名 to 用户名;
权限:create 创建 drop 丢弃 alter 改变 delete 删除 index 索引
insert 插入 select查找 update 更新
查看当前用户权限:
show grants for 用户名;(例show grants for lisi@‘localhost’;)
收回权限:revoke 权限 on 库名.表名 from 用户名@‘%’;

热备份:数据库在运行的情况下采用archive log mode 方式
冷备份:将数据库关闭后备份所有关键性文件 数据文件,控制文件,联机文件 拷贝到另外位置(完全的数据备份)

索引:作用于表中的列,加快查询
语法:create index 索引名 on 表名(列名);
看创建过程:show create table 表名 \G;
查看索引:show index from 表名 \G;
删除索引:drop index id(索引名) on t1(表名);

约束:主键约束,唯一约束,外键约束,非空约束,默认值约束。
主键 : 非空且唯一:Primary key每个表都应当有一个主键,没有实际意义,可以唯一的表示一条记录
alter table 表名 add primary key;
唯一 :unique 一个字段中的所有值不可重复
alter table 列名 add unique(列名称)
外键 :Foreign key 体现表和表的关系,一个字段引用了另一个表中的字段值,何为外键,当建表时需要用到另外一个表的主键作为本表的的主键时,需要设置外键。设置外间后,若想在删除本表数据时会级联删除或者默认删除其他方式。
alter table 表名称 add foreign key (列名称) references 关联表名称(列名称);
非空:当插入新数据时对应的列为不能空。非空约束是相对于默认值约束而说的。
alter table 表名 modify 列名 列类型 not null;
默认值 :当插入时没有插入值时,会自动插入默认值。
alter table 表名 add 列名 列类型 not null default ‘默认值’;
自增 :系统会从当前字段中已有的最大值进行+1操作,得到一个新的不同的字段,作为下一次插入数据是自增长字段的值。
① 任何一个字段要做自增长前提必须是一个索引;
② 自增长字段必须是整型数字;

无字符 auto-increment

外键:inodb,mysql5.6引擎关联字段数据类型相同,在外键上建索引 必须依赖主键或唯一索引
级联删除:on delete cascade
级联更新:on update cascade
创建外键:create table t1 (id int,name char(10),foreign ke (id) references t2 (id) on delete cassad on update (ascad);
视图:create view 视图名 as selecte * from 表 where name is null show full tables; (看那个表是虚表)
事物:可以回滚和提交,事件从开始前,和结束后要么直接完成,要么失败。
主从:读写分离
视图:保护数据安全,方便他人查询,(虚拟存在)实现你想让别人看到,你想让别人看到的信息。

三层模型:
1:物理层:系统管理员——提供分布式存储
2:逻辑层:DBA——优化 索引 建表 设计视图 备份 恢复
3:视图层:应用——增删改查

SHOW ENGINES 查看引擎
单进程,多线程,链接线程,守护线程
InnoDB支持事物,满足4个特性:ACID
A:原子性:一个事物是一个整体,它里面的所有操作要么都做,要么都不做,不可分割
C:一致性:事物开始前和结束后,数据库的完整性约束是一致的
I:两个事物之间互不相干
D:持久性:事物完成后,对数据库的所有的更改都会持久的保存在数据库中。

安全:1为所有管理员设定密码
2 删除所有匿名用户
3关闭主机反解功能
元数据库:mysql user host 等表
客户端程序:mysql :交互式的cli工具

mysql登录不上了,service mysqld restart先报正确再报失败,报的错误就是Another MySQL daemon already running with the same unix socket.
直接干死这个:rm var/lib/mysql/mysql.sock
然后起服务:service mysqld start
重头来:reboot
进来之后:mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak;
然后service mysqld start

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值