MySQL数据库(二)

数据库账号管理,建库,四大引擎

1.账号创建及密码修改

	GRANT ALL PRIVILEGES ON *.* TO 'zhangsan'@'%' IDENTIFIED BY 'zhangsan123' WITH GRANT OPTION;
	
	use mysql;
	update user set authentication_string=password('123456') where user='zhangsan';
	flush privileges;

1.1查看账号

点击Manage Users(管理用户),查看账号
目前:我的有已有三个账号,都可以用。
我们在安装mysql是只有一个账号root账号,管理员的账号。

在这里插入图片描述

1.2权限

在一些大型企业里,它们的权限划分的非常细。我们可能用的少,但是还是要了解一些。
数据库账管理作用图:

在这里插入图片描述

DDL语言的使用

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

GRANT赋权 ALL PRIVILEGES权限 IDENTIFIED BY定义密码 WITH GRANT OPTION;权限的一个选项

运行这个语句得到一个张三的账号:
在这里插入图片描述
测试一下能成功就算成功

在这里插入图片描述
随意找一个库试一下修改删除等权限。

	创建类一个Zara账号,这个账号只能看到girls数据库,
	并且这个数据库中的表操作权限只有查询和修改。
	GRANT SELECT,UPDATE
	    ON girls.*
	    TO 'zara'@'localhost'
	    IDENTIFIED BY 'zara123';

在这里插入图片描述
连一下看看没问题

在这里插入图片描述
只能看到两个,一个默认的,一个你自己定义的
在这里插入图片描述
赋了多少权限就只能用多少。
用的能看到多个数据库有的只能看到两个,有的能操作增删改查,有的只能查

安装mysql就自带了一个mysql库有几张表很重要

一、首先我们需要来看一下mysql默认数据库里面的四张表(user,db,tables_priv,columns_priv)。

		1、user表(用户层权限)
	
		因为字段太多,只截取了一部分。首先登陆的时候验证Host,User,Password也就是ip,用户名,密码
		是否匹配,匹配登陆成功将会为登陆者分配权限,分配权限的顺序也是按照上面四张表的排列顺序
		进行的,举个例子,如果user表的Select_priv为Y说明他拥有所有表的查找权限,如果为N就需要到
		下一级db表中进行权限分配了。其中的%是通配符,代表任意的意思。
		
		2、db表(数据库层权限)
		
		来到db表之后会匹配Host,User然后会根据Db字段对应的表进行权限分配,像Select_priv这些字段
		对应的权限大家应该都能看出来是对应着什么权限了吧,这里不细说了(不偷懒,举个例子Select
		_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv分别代表着查询,增加,
		更新,删除,创建,销毁)。其中Y代表这拥有此项权限,N则代表没有此项权限。
		
		3、tables_priv表(表层权限)
		
		与上面一样,这是通过Host,Db,User,Table来进行定位到表层的一个权限分配。不过它只有
		Table_priv和Column_priv两个字段来记录权限。
		
		4、columns_priv表(字段层权限)
		
		顾名思义,字段层权限,通过Host,Db,User,Table,Column来进行定位到字段层的一个权限
		分配,只有Column_priv来记录权限。
		```

2.数据库创建

		CREATE DATABASE 数据库名;
		
		#在其他数据库下执行查询是没有结果的
		select * from t_easyui_user;
		CREATE DATABASE test;
		use test;
		#此时能查出结果了
		select * from t_easyui_user;

3、四大引擎

小知识点

(我们大概只要关注两个引擎,我们大概用到的就两个,面试官问到也就两个 第一个InnoDB,第二个MyISAM存储引擎)

存储引擎的选择

不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:

功 能MYISAMMemoryInnoDBArchive
存储限制256TBRAM64TBNone
支持事物NoNoYesNo
支持全文索引YesNoNoNo
支持数索引YesYesYesNo
支持哈希索引NoYesNoNo
支持数据缓存NoN/AYesNo
支持外键NoNoYesNo

如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

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

如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能




	存储引擎查看
	MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以使用:
	SHOW ENGINES
	
	InnoDB存储引擎
	
	InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了
	,InnoDB是默认的MySQL引擎。InnoDB主要特性有:
	
	1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。In
	noDB锁定在行级并且也在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类型表的AU
	TO_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表使用的内存,应该执行DELE
	TE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)

MySQL语句操作

建库跟oracle和sql数据库差不多,就是类型不太一样

		IF NOT EXISTS:如果没有则创建,那就创建一个。
		CREATE DATABASE IF NOT EXISTS book;

删除库

		DROP DATABASE IF EXISTS book; 如果book存在就删除它,否则就创建一个再删。

查看表结构

		DESC t_lucene_crawler_blog;

在这里插入图片描述

创建一个表

		CREATE TABLE book(
			id INT,
			bname VARCHAR(20),
			price DOUBLE,
			authorID INT,
			publishDate DATETIME	
		);

复制表

		1、复制整张表
		2、复制部分数据
		3.复制字段
		create table bookk select * from book;
		create table bookk select * from book where price=10;
		create table bookk select id,bname from book;

修改表列名
1.修改表类型与约束
2. 添加新列
3. 修改表名

		ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
		ALTER TABLE book MODIFY COLUMN  pubDate TIMESTAMP;
		ALTER TABLE book ADD COLUMN  bz VARCHAR(200);

删除表
1、删除表数据,可以跟where条件
2、删除表数据,不可以跟where条件,只能全部删除
3、删除表结构

		delete from book;
		truncate table book;
		drop table book;

总结:

完了完了完了完了,反省自己。总结自己还有哪里不够好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值