MySql相关知识

一,mysql的元数据库

1.1,什么是元数据库?

记录MySQL自身数据的数据库

1.2,元数据库的分类:

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

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

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

切换数据库:use 数据库名

use mysql

二,账户管理

2.1,创建账户

命令格式:create user 用户名 identified by ’密码‘

说明:indentified by 会将纯文本密码加密作为散列值存储

示例:create user testindentified by’123456‘

2.2,查看账户

命令格式:select host,user,password from user;

host列说明:localhost不会被解析成ip地址,直接通过unixsoket连接

127.0.0.1:会通过tcp/ip协议连接,并且只能在本机访问

::1 :兼容支持ipv6的,表示同ipv4127.0.0.1

%:匹配所有主机

localhost:localhost不会被解析成IP地址,直接通过UNIXsocket连接

2.3,删除账户

命令格式:drop user 用户名

示例:drop user test

一般不用,用时需要谨慎!

2.4,修改密码

命令格式:set password for 用户名=password(‘新密码’)

示例:set password for test = password(‘123456’)

2.5,刷新配置

命令格式:flush privileges

2.6,设置权限

命令格式:grant privileges on databasename.tablename to username@‘host’

privileges:指定select,update等权限,全部权限用all

databasename:指定数据库,所有数据库请使用*

tablename:指定数据表,所有表请使用*

username:需要赋权的用户名,@带的是host,表示赋权操作针对那些链接

使用示例:

··将bookshop数据库中的t_book表的select,update权限赋予test用户,并且不对ip地址限制
GRANT SELECT, UPDATE ON bookshop.`t_book` TO test@'%';

--一般用于赋予管理员最高权限,谨慎使用
grant all on *.* to dba@'localhost'

--以192.168.0开头的账户名deveoper用户针对testdb数据库赋予创建视图的权限
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.%';

授权用户可以将拥有的权限再赋予其他用户

命令格式:grant privileges on databasename.tablename to username@'host' with grant option

示例:grant select on testdb.* to dba@localhost with grant option

说明:一般不用,建议与数据库管理员(DBA)统一管理

2.7,查看权限

show gants:查看当前用户(自己)权限

show grants for dba@localhost:查看其它mysql权限

8,撤销权限

命令格式:revoke privileges on databasename.tablename from username@'host'

示例:REVOKE UPDATE ON bookshop.t_book FROM test@'%';

三,MySQL引擎

什么是数据库引擎?

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

查看数据引擎:

命令:show engines

Support字段说明:

默认的引擎DEFAULT

为YES表示可以使用

为NO表示不能使用

MyISAM引擎

MYISAM强调了快速读取操作

使用场景: 大量查询,很少修改的场景

存储限制:256TG

事务支持:不支持事务

memory:

所有的数据都保存在内存中,一旦服务器重启,所有Memory存储引擎的表数据会消失但是表结构会保存下来

使用场景:由于易失性,可以用于存储在分析中产生的中间表

存储限制:取决与RAM

事务支持:不支持事务

InnoDB:

后者修改快,支持事务

使用场景:一般事务性,均使用该引擎,用途最广,如果把握不准使用何种引擎,就使用该引擎

存储限制:64TG

事务支持:支持事务

ARCHIVE:

只允许插入和查询,不允许修改和删除,压缩存储,节约空间,可以实现高并发的插入,支持在自增id上建立索引

使用场景:在日志和数据采集的时候可以使用

特点:

Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%

不支持索引(自增id列除外)

支持insert,select操作,但不支持delete,update操作

数据库的命令

创建:

命令格式:create database 数据库名

create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;

默认的数据库编码集:utf8

collate表示校验规则为utf8_general_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

非空约束NOT NULL COMMENT

 sid                  INT NOT NULL COMMENT '学号',

外键约束FOREIGN KEY

示例:

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

表示:UNIQUE KEY 约束名 (字段)

创建唯一约束:ALTER TABLE 表名 ADD UNIQUE(列名称1[,列名称2,..])

示例:create unique index UserNameIndex on 't_user' ('username')

删除唯一约束:ALTER TABLE 表名 DROP INDEX 唯一约束缩影名称

默认值约束:default 

五,常用函数

5.1,字符串函数:

UPPER()

作用:转换成大写字符

示例:

SELECT UPPER('faafafa')

LOWER()

作用:转化成小写字符

示例:

SELECT LOWER('FEFEFF')

REPLACE()

作用:搜索并替换字符串中的子字符串

示例:

SELECT REPLACE('www.google.net','w','n')

SUBSTRING()

作用:从具有特定长度的位置开始的最一个子字符串

示例:

SELECT SUBSTRING('abcdefghijk', 1, 3)
SELECT SUBSTRING('abcdefghijk', 4);
SELECT SUBSTRING('abcdefghijk', -3);

TRIM()

作用:去除首尾空格

示例:

SELECT TRIM('    fdfdfdfd    ');

LENGTH()

作用:获取字符串长度

示例:

SELECT LENGTH('abcdef');

5.2,数字函数:

FLOOR()

作用:向下取整

示例:

SELECT FLOOR(123.8934);

CEIL()

作用:向上取整

示例:

SELECT CEIL(123.8934)

ROUND()

作用:四舍五入

示例:

SELECT ROUND(123.8934, 2);

5.3,聚合函数:

特点:常用group by一同使用,也可单独使用,如需求过滤,可以使用having子句

sum:求和

count:统计记录数

avg:求平均值

max:求最大值

min:求最小值

5.4,合并

合并的前提:

结果集列数个数相同

使用场景:在项目统计报表模块,用来合并数据

UNION

作用:将所有的查询结果放在一起,并去掉相同的记录

示例:

SELECT 'abc', 123
UNION 
SELECT 'def',456
SELECT 'abc', 123
UNION 
SELECT 'abc', 123

UNION  ALL

作用:将所有的查询结果合并在一起,不去掉相同的记录

示例:

SELECT 'abc', 123
UNION ALL
SELECT 'def', 456
SELECT 'abc', 123
UNION ALL
SELECT 'abc', 123

六,视图

概念及特点

视图是一种虚拟表,是从数据库中的一个或多个表中导出的表

数据库中存放视图的定义,而不会存放视图的数据,数据依然存放在原来的表中。

使用视图查询数据时,数据库会从原来的表中获取数据

(注意:此处并没有包括物化视图,目前mysql默认不支持物化视图)

作用

1)简化操作

2)增加数据的安全性

3)提高表的逻辑独立性

基本语法

CREATE VIEW 视图名 AS SELECT 语句

示例:

CREATE VIEW stu_score_statistics AS
 SELECT t1.sid, t1.sname, t1.ssex, t2.courses, t3.total total_score
  FROM t_student t1 
  LEFT JOIN (SELECT sid, COUNT(*) courses FROM t_score GROUP BY sid) t2 ON t1.sid=t2.sid
  LEFT JOIN (SELECT sid, SUM(score) total FROM t_score GROUP BY sid) t3 ON t1.sid=t3.sid

七,索引

概念

索引是由数据库表中一列或多列组合而成,其作用是提高对表中数据的查询速度

可以理解为书本的目录的作用

优点和缺点

优点:对于中型或大型表,恰当的使用索引可以显著提高查询性能

缺点:增加了索引维护的工作,使的插入,修改,删除操作变慢

分类

普通索引:基本索引,目的就是提高查询性能

唯一索引:除提高查询性能外,还可起到避免列值出现重复

主键索引:特殊的唯一索引,一个表只能有一个主键,不允许有空值

组合索引:由多列组合生成的索引,使用是需要注意索引顺序

全文索引:用于支持全文搜索(FULLTEXT)

索引维护

创建:

语法:CREATE [UNIQUE|FULLTEXT] INDEX 索引名 ON 表名(字段名[(长度)][ASC|DESC])

示例:

CREATE INDEX sname_inx ON t_student(sname);

修改:

语法:ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名(字段名[(长度)][ASC|DESC])

示例:

ALTER TABLE t_student ADD INDEX birthday_inx(birthday);

删除:

语法:DROP INDEX 索引名 ON 表名

示例:DROP INDEX birthday_inx ON t_student;

常见错误代码

1075:有自增键,但不是未将其设置为主键

1142:操作被拒绝,一般是没有权限

1064:一般是存在语法错误,如关键字错误,缺少空格,sql脚本中sql语句后缺少;等原因

1048:列不能为空

1055:不在GROUP BY中

1265:保存数据的格式与定义是不同

1366:数据编码

1451:违反外键约束

关于数据库的一些题目参考博客:

https://blog.csdn.net/m0_74229802/article/details/136454770?spm=1001.2014.3001.5501

嘿嘿,数据库基础大概就这么多啦!

相关推荐

  1. MySql相关知识

    2024-03-16 21:04:01       40 阅读
  2. mysql相关知识

    2024-03-16 21:04:01       26 阅读
  3. mysql相关知识总结

    2024-03-16 21:04:01       34 阅读
  4. 学习mysql相关知识记录

    2024-03-16 21:04:01       33 阅读
  5. Mysql相关

    2024-03-16 21:04:01       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 21:04:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 21:04:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 21:04:01       87 阅读
  4. Python语言-面向对象

    2024-03-16 21:04:01       96 阅读

热门阅读

  1. 关于uni-app 外部系统联登遇到的坑

    2024-03-16 21:04:01       43 阅读
  2. Elasticsearch(11) intervals的使用

    2024-03-16 21:04:01       44 阅读
  3. 分布式搜索引擎Elasticsearch中各种类型节点的作用

    2024-03-16 21:04:01       42 阅读
  4. Go 语言中的 Cond 机制详解

    2024-03-16 21:04:01       41 阅读
  5. xxl-job

    xxl-job

    2024-03-16 21:04:01      39 阅读
  6. 小程序配置服务器域名

    2024-03-16 21:04:01       38 阅读
  7. 简单了解跨域问题如何解决

    2024-03-16 21:04:01       46 阅读
  8. Qt内存管理与对象树:正确管理控件内存的关键

    2024-03-16 21:04:01       43 阅读
  9. Linux运维_Bash脚本_编译安装Glibc-2.38

    2024-03-16 21:04:01       35 阅读
  10. GlusterFS分布式文件系统群集

    2024-03-16 21:04:01       41 阅读