目录
一,MySQL的元数据库
1.1.什么是元数据库
1.2.有哪些元数据库
1.3.切换数据库
二,账户管理
2.1.设置权限
2.2.授权用户
2.3.查看权限
2.4.撤销权限
三,MySQL引擎
3.1什么是数据库引擎
3.2.查看数据引擎
3.3.MyISAM引擎
3.4.memory
3.5.InnoDB
3.6.ARCHIVE
四,数据库命令
4.1.创建
4.2.查看
4.3.删除
五,建表与约束
5.1.建表
5.2.主键约束
5.3.非空约束
5.4.外键约束
5.5.唯一约束
5.6.默认值约束
记录MySQL自身数据的数据库
information_schema:信息数据库,保存mysql所维护的其他数据库信息,例如:数据库名,数据库的表,表栏的数据类型与访问权限等
mysql:核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
performance_schema:用于mysql的监控数据的存放
-- 示例 use mysql
命令格式
grant privileges on databasename.tablename to username@'host' -- privileges -- 指定select,update等权限,全部权限使用all -- databasename -- 指定数据库,所有数据库请使用* -- tablename -- 指定数据表,所有表请使用* -- username -- 需要赋权的用户名,@带的是Host,表示赋权操作针对那些链接,详情查看【host列说明】
使用示例
GRANT SELECT, UPDATE ON bookshop.`t_book` TO test@'%'; -- 将bookshop数据库中的t_book表的select,update权限赋予test用户,并且不对ip地址限制 grant all on *.* to dba@'localhost' -- 一般用于赋予管理员最高权限,谨慎使用 grant create view on testdb.* to developer@'192.168.0.%'; -- 以192.168.0开头的账户名deveoper用户针对testdb数据库赋予创建视图的权限 grant show view on testdb.* to developer@'192.168.0.%' -- 以192.168.0开头的账户名deveoper用户针对testdb数据库赋予查看视图的权限 grant index on testdb.* to developer@'192.168.0.%'; -- 以192.168.0开头的账户名deveoper用户针对testdb数据库赋予创建索引的权限 grant create routine on testdb.* to developer@'192.168.0.%' -- 以192.168.0开头的账户名deveoper用户针对testdb数据库赋予操作存储过程与函数的权限 grant alter routine on testdb.* to developer@'192.168.0.%'; -- 以192.168.0开头的账户名deveoper用户针对testdb数据库赋予创建删除存储过程与函数的权限
命令格式
grant privileges on databasename.tablename to username@'host' with grant option
示例
grant select on testdb.* to dba@localhost with grant option
-- 查看当前用户(自己)权限 show grants
-- 查看其他 MySQL 用户权限 show grants for dba@localhost;
-- 收回test用户对于bookshop库中t_book表的update权限(ip不限) REVOKE UPDATE ON bookshop.t_book FROM test@'%';
命令格式
revoke privileges on databasename.tablename from username@'host'
示例
-- 收回test用户对于bookshop库中t_book表的update权限(ip不限) REVOKE UPDATE ON bookshop.t_book FROM test@'%';
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据, 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能
命令
show engines
命令格式
create database 数据库名
create database if not exists 数据库名 default charset utf8 collate utf8_general_ci; -- 默认的数据库编码集:utf8 -- collate表示校验规则为utf8_general_ci -- 常用排序类型 -- utf8_general_cs(区分大小写) -- utf8_genera_ci(不区分大小写)
show databases
drop database 数据库名 -- 危险操作,先备份
命令格式
CREATE TABLE 表名称( 列名称1 数据类型 NOT NULL, 列名称2 数据类型, 列名称3 数据类型, unique(列名称1[,列名称2,...,列名称N]) )
示例
create table t_student ( sid int not null comment '学号', sname varchar(60) not null comment '姓名', sex tinyint not null default 1 comment '性别:1男, 2女', age tinyint not null comment ' 年龄', icard varchar(18) not null comment '身份证,唯一约束', primary key (sid), unique key AK_Key_2 (icard) ) comment '学生信息表';
-- PRIMARY KEY -- 增加主键 ALTER TABLE 表名 ADD PRIMARY KEY(主键名称) -- 删除主键 ALTER TABLE 表名 DROP PRIMARY KEY
sid INT NOT NULL COMMENT '学号',
DROP TABLE IF EXISTS t_score; CREATE TABLE t_score ( id INT NOT NULL COMMENT '记录流水号', sid INT NOT NULL COMMENT '学号', cid INT NOT NULL COMMENT '课程ID', score FLOAT COMMENT '成绩', PRIMARY KEY (id), FOREIGN KEY (sid) REFERENCES t_student (sid) ON DELETE RESTRICT ON UPDATE RESTRICT, UNIQUE KEY AK_Key_2 (sid, cid) ); 说明: sid为本表的外键,关联t_student表中的的sid主键,ON DELETE RESTRICT ON UPDATE RESTRICT说明在本表有数据的情况下,主表的关联键不能删除或更新。
增加外键
-- 增加外键 ALTER TABLE 表名 ADD FOREIGN KEY(外键名称) REFERENCES 主表名称(主键名称)
删除外键
-- 删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 约束名
-- UNIQUE KEY 约束名 (字段) -- 创建唯一约束 ALTER TABLE 表名 ADD UNIQUE(列名称1[,列名称2,..]) create unique index UserNameIndex on 't_user' ('username') -- 删除唯一约束 ALTER TABLE 表名 DROP INDEX 唯一约束缩影名称
default