MySQL权限设置及四大引擎和DDL操作

MySQl

  • 用户权限限制
  • 四大引擎
    • 什么是数据引擎
    • 常用的InnoDB引擎与MYISA擎
    • 数据引擎的选用
  • DDL操作
  • 约束及标识列
    • 约束
      • 什么是约束及mysql中的约束
    • 标识列
      • 什么是标识列

用户权限限制

mysql的用户权限,是在mysql.user表中控制的。 查看mysql.user的表结构,如图:

MySQL权限设置及四大引擎和DDL操作_第1张图片

案例:
#mysql用户权限管理
GRANT ALL PRIVILEGES ON *.* TO 'ss1'@'%' IDENTIFIED BY '1111' WITH GRANT OPTION;
#查看某个用户的权限
SHOW GRANTS FOR 'root'@'%';
只给账号查询修改权限,并且只能操作tb_ss数据库
GRANT SELECT,UPDATE
 ON tb_ss.*
 TO's2'@'localhost'
 IDENTIFIED BY '1111';

效果如下;
MySQL权限设置及四大引擎和DDL操作_第2张图片
创建连接后只能看到tb_ss这个表
在这里插入图片描述

对表中的数据进行删除时没有权限
MySQL权限设置及四大引擎和DDL操作_第3张图片

四大引擎

什么是数据引擎

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。 现在许多不同的数据库管理系统都支持多种不同的数据引擎。 Mysql的核心就是存储引擎。

常用的InnoDB引擎与MYISA擎

InnoDB引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。

InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

InnoDB被用在众多需要高性能的大型数据库站点上

MYISA擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。

查看数据引擎语句

show engines

MySQL权限设置及四大引擎和DDL操作_第4张图片

数据引擎的选用

不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:
MySQL权限设置及四大引擎和DDL操作_第5张图片
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

DDL操作

SQL语言包括四种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言。
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。数据库模式定义语言并非程序设计语言,DDL数据库模式定义语言是SQL语言(结构化程序设计语言)的组成部分。
语法:
#库的创建
CREATE DATABASE IF NOT EXISTS books;


#库的删除
DROP DATABASE IF EXISTS books;


#使用数据库
use tb_ss;

#查看该数据库的表
 show tables;

create table 表名(

列名  列的类型【(长度)约束】,
列名  列的类型【(长度)约束】,
列名  列的类型【(长度)约束】,
.........

列名  列的类型【(长度)约束】
)

#案例表的创建
CREATE TABLE tb_e(
id INT,
numb INT,
name VARCHAR(20)
)

#查看表结构
DESC tb_e;


#增加数据
INSERT INTO tb_e
select 2,4,'b' 


#表的修改
修改表结构
添加列
alter table 表名 add 列名 类型(长度) 约束;
修改列的属性
alter table 表名 modify 列名 类型(长度) 约束;
修改列的名称和属性
alter table 表名 change 列名 列名 类型(长度) 约束;
删除列
alter table 表名 drop 列名;
修改字符集
alter table 表名 character set 字符集;
重命名表
rename table 表名 to 新名字;



# 表的修改案例

#修改列名
alter table tb_e change column publishdate pubDate datetime;

#修改列的类型或约束
alter table tb_e modify column pubdate timestamp;

#添加新列
alter table author add column annual double;

#删除列 
alter table namedrop column annual;

#修改表名
alter table tb_e rename to book_author;


desc tb_e;





约束及标识列

约束

什么是约束及mysql中的约束

是一种限制,对某一个东西的限制。例如宪法规定了你违反的事情你是不能做的。这就是一种约束

​ 数据库的约束,是对数据的安全性,完整性的保证

mysql里的约束

1. unique key 唯一性约束,表示这个不能出现重复的值
2. not null 非空约束,表示这个字段的值不能为空例如:账户名、密码等
3. default 默认值,用于给某一个字段设置默认值
4. foreign key 外键约束 一. 数据出现了大量的重复 ,二. 数据结构环混乱(耦合度高)
5. primary key 主键约束 主键约束,从约束角度来看,主键等同于非空 + 唯一

案例:

#添加主键约束
 alter table tb_e modify id int primary key;
 #添加唯一约束,即不允许出现重复值
 alter table tb_e modify name varchar(255) unique;
 
 #建表并添加主键、外键约束
 create table tb2
 (
 id int primary key auto_increment,
 fid int,
 name varchar(255) default 'anonymity' not null,
 info text,
 #建立外键约束,约束名为tb2_fk,
 constraint tb2_fk foreign key(fid) references tb_e(id)
 );
 #删除外键约束
 alter table tb2 drop foreign key tb2_fk;
#添加外键约束
 alter table tb2 add foreign key(fid) references tb1(id);

标识列

什么是标识列

又称为自增长列
含义:可以不用手动的插入值,系统提供默认的序列值

特点:
1、标识列不一定要与主键搭配,但要求是一个key(也可以是unique) 2、一个表只能有一个标识列 3、标识列的类型只能是数值型 4、标识列可以通过 SET auto_increment_increment=3;设置步长 可以通过 手动插入值,设置起始值
DROP TABLE IF EXISTS tab_identity;
CREATE TABLE tab_identity(
    id INT  ,
    NAME FLOAT UNIQUE AUTO_INCREMENT,
    seat INT 
);
TRUNCATE TABLE tab_identity;

INSERT INTO tab_identity(id,NAME) VALUES(NULL,'john');
INSERT INTO tab_identity(NAME) VALUES('lucy');
SELECT * FROM tab_identity;


SHOW VARIABLES LIKE '%auto_increment%';

SET auto_increment_increment=3;

你可能感兴趣的:(MySQL权限设置及四大引擎和DDL操作)