MySQL基础

数据定义语言DDL(Data Definition Language)
数据操纵语言DML(Data Manipulation Language)
数据控制语言DCL(Data Control Language)

在这里插入图片描述

数据定义语言DDL

只对结构进行变更,不对表内数据做变更
用来创建数据库中的表、索引、视图、存储过程、触发器等
常用的语句关键字有:CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。truncate(删除当前表再新建一个一模一样的表结构)

create database abc;     #创建abc的库
create table t1(id int,name varchar(10), mail varchar(30));   #创建t1表第一列为id(字符串) 
create user '123'@'localhost' identified by '123abc';  #创建用户123本地登陆
alter table t1 add/drop/change 列名 (char(10);  #更改表结构
alter table 旧表名 rename 新表名;#改表名
drop database abc(库名)#删除库
drop table t1(表名);  #删除表,删除表定义及其数据
drop user zhangsan;   #删除用户
show databases;  #查询数据库
show tables;  #查询库中的表
TRUNCATE TABLE [Table Name]    #类似删除表,再重新创建这个表。删除表中的所有行,但表结构及其列、约束、索引等保持不变,不能用于参与了索引视图的表。
desc 表名;  #查看表结构
COMMENT   #注释
RENAME #重命名
select Host,User,Password from mysql.user;  #查看user表里用户(进入musql库)
FLUSH PRIVILEGES   #重新载入授权表

INTEGER等于int 整数类型

CHAR和VARCHAR类型:两者的主要区别是存储方式不同
CHAR列的长度固定为创建表时声明的长度,长度可以为0-255;VARCHAR列中的值是可变长度。同时在检索的时候,CHAR列删除尾部的空格
VARCHAR保留空格,由于CHAR是固定长度,所以它的处理速度别VARCHAR快很多,但是其缺点是浪费内存,在使用中VARCHAR被更多的使用

数据操纵语言DML

对象:只针对表内数据
数据操纵语句,用来查询、添加、更新、删除等
常用的语句关键字有:SELECT,INSERT,UPDATE,DELETE,MERGE,CALL,EXPLAIN PLAN,LOCK TABLE,包括通用性的增删改查。

select * from 表 where 列名='select 列名 from 表 列名 ' #多表查询,三个列名要相同,同库
select * from 表 order by 列名    #(默认降序) 升序在末尾添加desc
select * from t1; #查表中数据
select user();  #查看当前用户
INSERT INTO users SET id = 123, name = aaa, age = 25;   #表中插入数据
insert into t1 values(1,'zhangsan','zhangsan@qq.com');  #添加一条数据
update 表 set 要改的列名=要改的值; (更改一列)
update 表 set 要改的列名=要改的值 where 条件;(加条件后只更改匹配到的值)
delete from 表名 where 条件;  #删除表中数据,delete是一条一条删除表中的数据,DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项
CALL  #调用
EXPLAIN  #用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径,从而使我们选择最优的查询方式达到最大的优化效果。
LOCK TABLE    #锁,用于控制并发

数据控制语言DCL

对象
事务控制语句,用于控制事务
常用的语句关键字有:COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION。

grant all on *.* to root@127.0.0.1 identified by 'abc123' with grant option;
grant 权限 on 库名.表名 to 用户名;   #授权允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。
show grants for 用户名;   #(例show grants for lisi@'localhost';)查看当前用户权限 
revoke 权限 on 库名.表名 from 用户名@'%'#收回已经授予的权限
COMMIT #提交
SAVEPOINT #保存点
ROLLBACK #回滚
SET TRANSACTION    #设置当前事务的特性,它对后面的事务没有影响

#########################
修改mariadb字符集
vim /etc/my.cnf
character-set-server=utf8
systemctl restart mariadb

flush privileges; #刷新权限设置

热备份:数据库在运行的情况下采用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:持久性:事物完成后,对数据库的所有的更改都会持久的保存在数据库中。

mysql安全:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值