MySQL账号管理&&DDL语言

一、数据库账号管理
二、四大引擎的作用和区别
三、表的管理
四、常见约束

1、数据库账号管理
a、创建账号

GRANT ALL PRIVILEGES ON *.* TO 'zhangsan'@'%' IDENTIFIED BY 'zhangsan123' WITH GRANT OPTION;

修改密码

update user set authentication_string=password('123456') where user='zhangsan'

2、引擎
a、什么是数据库引擎

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

b、4大引擎分别是
InnoDB存储引擎

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

(1)、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合

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

(3)、InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上

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

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

InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件

MyISAM存储引擎

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

(1)、大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持

(2)、当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成

(3)、每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16

(4)、最大的键长度是1000字节,这也可以通过编译来改变,对于键长度超过250字节的情况,一个超过1024字节的键将被用上

(5)、BLOB和TEXT列可以被索引

(6)、NULL被允许在索引的列中,这个值占每个键的0~1个字节

(7)、所有数字键值以高字节优先被存储以允许一个更高的索引压缩

(8)、每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE操作的时候该列被更新,同时AUTO_INCREMENT列将被刷新。所以说,MyISAM类型表的AUTO_INCREMENT列更新比InnoDB类型的AUTO_INCREMENT更快

(9)、可以把数据文件和索引文件放在不同目录

(10)、每个字符列可以有不同的字符集

(11)、有VARCHAR的表可以固定或动态记录长度

(12)、VARCHAR和CHAR列可以多达64KB

使用MyISAM引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)

MEMORY存储引擎

MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。MEMORY主要特性有:

1、MEMORY表的每个表可以有多达32个索引,每个索引16列,以及500字节的最大键长度

2、MEMORY存储引擎执行HASH和BTREE缩影

3、可以在一个MEMORY表中有非唯一键值

4、MEMORY表使用一个固定的记录长度格式

5、MEMORY不支持BLOB或TEXT列

6、MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引

7、MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)

8、MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享

9、当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

MERGE存储引擎

Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。

DDL数据语言
3、表的管理
(1)、创建表

create table 表名(
列名 列的类型[(长度) 约束],
列名 列的类型[(长度) 约束],
列名 列的类型[(长度) 约束],
)

(2)、查看表

desc 表名;

(3)、增加列

alter table 表名 add column 列名 varchar;

(4)、修改列名

alter table change column publishdate 列名 DATETIME;

(5)、删除列

alter table 表名 drop column 列名;

(6)、复制表

create table 新的表名
select * from 表名

(7)、只复制表的结构

create table 新的表名 like 表名

(8)、删除表

drop table if exists 表名;

(9)、只复制部分数据

create table 新的表名
select 要复制的列名
from 表名
where 判断条件;

(10),仅仅复制某些字段

create table 新的表名
select 要复制的列名
from 表名
where 0;

4、六大约束

(1)、NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。
(2)、DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别
(3)、PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。
(4)、UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。
(5)、CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。
(6)、FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。例如学生表的专业编号

(1)、约束时机:

1、创建表
2、修改表

(2)、表级约束

除了非空、默认,其他都支持

(3)、列级约束

六大约束语法上都支持,但外键约束没有效果

(4)、主键和唯一的区别

相同点:都是唯一的、可以组合
不同点:唯一可以有多个,主键在单个表里只能有一个
主键不允许为空、唯一可以为空

(5)、外键

1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key
4、插入数据是,先插入主表,再插入从表
5、删除数据时,先删除从表,再删除主表

(6)、添加列级约束

语法:alter table 表名 modify column 字段名 字段类型,新约束
非空约束:alter table 表名modify column 列名 varchar(50) not null;
默认约束:alter table 表名modify column 列名 int default 50;

(7)、添加表级约束

语法:alter table 表名 add【constraint 约束名】约束类型(字段名)【外键的引用】
添加唯一约束:alter table book add unique(bb);

(8)、删除约束

删除非空约束:alter table 表名 modify column 列名 varchar(100);
删除主键: alter table 表名 drop primary key;
删除唯一:alter table 表名 drop index 列名;

(9)、标识列

又称为自增长列,就字面意思而言,就是可以自己增加的值,不用手动增加

特点:
1、标识列的要求是一个key
2、一个表最多只能有一个标识列
3、标识列的类型只能是数值型
4、标识列可以通过set auto_increment=3;
设置步长,手动插入值,设置起始值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值