MySQL基本知识

目录

一,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的元数据库

1.1.什么是元数据库

记录MySQL自身数据的数据库

1.2.有哪些元数据库

**information_schema:**信息数据库,保存mysql所维护的其他数据库信息,例如:数据库名,数据库的表,表栏的数据类型与访问权限等

**mysql:**核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息

**performance_schema:**用于mysql的监控数据的存放

1.3.切换数据库
sql 复制代码
-- 示例 
use  mysql

二,账户管理

2.1.设置权限

命令格式

sql 复制代码
grant privileges on databasename.tablename to username@'host'
	-- privileges
		-- 指定select,update等权限,全部权限使用all
	-- databasename
		-- 指定数据库,所有数据库请使用*
	-- tablename
		-- 指定数据表,所有表请使用*
	-- username
		-- 需要赋权的用户名,@带的是Host,表示赋权操作针对那些链接,详情查看【host列说明】

使用示例

sql 复制代码
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数据库赋予创建删除存储过程与函数的权限
2.2.授权用户

命令格式

sql 复制代码
grant privileges on databasename.tablename to username@'host' with grant option

示例

sql 复制代码
grant select on testdb.* to dba@localhost with grant option
2.3.查看权限
sql 复制代码
-- 查看当前用户(自己)权限
show grants
sql 复制代码
-- 查看其他 MySQL 用户权限
show grants for dba@localhost;
2.4.撤销权限
sql 复制代码
-- 收回test用户对于bookshop库中t_book表的update权限(ip不限)
REVOKE UPDATE ON bookshop.t_book FROM test@'%';

命令格式

sql 复制代码
revoke privileges on databasename.tablename from username@'host'

示例

sql 复制代码
-- 收回test用户对于bookshop库中t_book表的update权限(ip不限)
REVOKE UPDATE ON bookshop.t_book FROM test@'%';

三,MySQL引擎

3.1什么是数据库引擎

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

3.2.查看数据引擎

命令

sql 复制代码
show engines
  • Support字段说明
  • DEFAULT的为默认的引擎
  • 为YES表示可以使用
  • 为NO表示不能使用
3.3.MyISAM引擎
  • MYISAM强调了快速读取操作
  • 使用场景: 大量查询,很少修改的场景
  • 存储限制:256TG
  • 事务支持:不支持事务
3.4.memory
  • 所有的数据都保存在内存中,一旦服务器重启,所有Memory存储引擎的表数据会消失但是表结构会保存下来
  • 使用场景:由于易失性,可以用于存储在分析中产生的中间表
  • 存储限制:取决与RAM
  • 事务支持:不支持事务
3.5.InnoDB
  • 后者修改快,支持事务
  • 使用场景:一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引擎
  • 存储限制:64TG
  • 事务支持:支持事务
3.6.ARCHIVE
  • 只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增id上建立索引
  • 使用场景:在日志和数据采集的时候可以使用
  • 特点
  • Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%
  • 不支持索引(自增id列除外)
  • 支持insert,select操作,但不支持delete,update操作

四,数据库命令

4.1.创建

命令格式

sql 复制代码
create database 数据库名
sql 复制代码
create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;

    -- 默认的数据库编码集:utf8
    -- collate表示校验规则为utf8_general_ci
	-- 常用排序类型
		-- utf8_general_cs(区分大小写)
		-- utf8_genera_ci(不区分大小写)
4.2.查看
sql 复制代码
show databases
4.3.删除
sql 复制代码
drop database 数据库名
-- 危险操作,先备份

五,建表与约束

5.1.建表

命令格式

sql 复制代码
CREATE TABLE 表名称(
        列名称1 数据类型 NOT NULL,
        列名称2 数据类型,
        列名称3 数据类型,
        unique(列名称1[,列名称2,...,列名称N])
    )

示例

sql 复制代码
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 '学生信息表';
5.2.主键约束
sql 复制代码
-- PRIMARY KEY
-- 增加主键
	ALTER TABLE 表名 ADD PRIMARY KEY(主键名称)
-- 删除主键
	ALTER TABLE 表名 DROP PRIMARY KEY
5.3.非空约束
sql 复制代码
 sid                  INT NOT NULL COMMENT '学号',
5.4.外键约束
sql 复制代码
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说明在本表有数据的情况下,主表的关联键不能删除或更新。

增加外键

sql 复制代码
-- 增加外键
ALTER TABLE 表名 ADD FOREIGN KEY(外键名称) REFERENCES 主表名称(主键名称)

删除外键

sql 复制代码
-- 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
5.5.唯一约束
sql 复制代码
-- UNIQUE KEY 约束名 (字段)
-- 创建唯一约束
	ALTER TABLE 表名 ADD UNIQUE(列名称1[,列名称2,..])
	create unique index UserNameIndex on 't_user' ('username')
-- 删除唯一约束
	ALTER TABLE 表名 DROP INDEX 唯一约束缩影名称
5.6.默认值约束
sql 复制代码
default 
相关推荐
xoxo-Rachel6 分钟前
(超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
java·数据库·mysql
JH307340 分钟前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle
蓝染-惣右介42 分钟前
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
java·数据库·tomcat·mybatis
冷心笑看丽美人43 分钟前
Spring框架特性及包下载(Java EE 学习笔记04)
数据库
武子康2 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
代码吐槽菌2 小时前
基于SSM的毕业论文管理系统【附源码】
java·开发语言·数据库·后端·ssm
路有瑶台2 小时前
MySQL数据库学习(持续更新ing)
数据库·学习·mysql
数字扫地僧3 小时前
WebLogic 版本升级的注意事项与流程
数据库
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
Viktor_Ye3 小时前
高效集成易快报与金蝶应付单的方案
java·前端·数据库