Mysql数据库知识点总结

Posted immkoy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库知识点总结相关的知识,希望对你有一定的参考价值。

  • 一、基本概念
    • 1、数据库服务器
      • 我们可以理解为数据库服务器即是一台内存较高的计算机,可以在上面运行数据库管理软件
    • 2、数据库管理系统
      • mysql,是一个软件,用来管理数据库的软件
    • 3、数据库
      • 即文件夹,用来组织文件
    • 4、表
      • 即文件,用来存放多条记录,每条记录为多个字段组成的一行数据
  • 二、Mysql基本介绍
    • Mysql是目前WEB应用最好的RDBMS(Relation Database Mangement System)关系数据库管理系统之一
      • 关系型数据库是将数据保存到不同的表里面,而不是将数据放到一个大仓库内
      • 关系型数据库与非关系型数据库的区别是:关系型数据库有表结构,非关系型数据库是通过key-value存储,无表结构
      • Mysql使用的是标准的SQL数据语言形式,支持多种语言,支持5000万条的数据仓库,32位系统表文件最大支持4GB,64位系统最大支持表文件为8TB
      • 通俗的讲:Mysql就是一个基于socket编写的C/S架构的软件
      • 储存引擎
        • mysql默认的查询引擎为innodb,可以自行进行更改
      • 语法:
        • win:
          • 启动mysql服务端,在cmd窗口运行mysqld
          • 数据库初始化命令:mysql-initialize-insecure
          • 启动mysql客户端,并连接服务端mysql -uroot -p
          • 连接其他ip数据库,mysql -u账号 -hIP地址 -P端口号 -p密码
          • 查看当前登陆用户:select user( )
          • 刷新权限,执行命令:flush privileges;
          • 查看进程:tasklist | findstr mysql
          • 杀死进程:tasklist /F /PID 进程号
        • mac:
          • 设置新密码:set password for ‘用户名‘@‘IP地址‘=password(‘‘);
          • 查看系统进程:ps -A
          • 杀死系统进程:sudo kill -9 PID
        • 操作文件夹(库):
          • 增加一个库:create database db1 charset utf8;
          • 查看所有库: show databases;
          • 查看特定库: show create database db1;
          • 删库跑路: drop database db1;
        • 操作文件(表):
          • 切换进数据库:use db1;
          • 查看当前所在文件夹;select database( );
          • 增加表:create table t1(id int,name char(6));
          • 查看特定表:show create table t1;
          • 查看所有表:show tables;或者desc t1;
          • 改:
            • alter table t1 modify name char(10);name字段改为10字节;
            • alter table t1 modify name NAME char(10);name字段名改成NAME
          • 复制表
            • 即复制表数据也复制表结构:create table t1 select * from db1.t1;
            • 只复制表结构create table a1 like db1.t1;
          • 清空表
            • delete from t1;但是这种方法会保留自增的ID
            • truncate table t1;这种方法不会保留自增ID
        • 操作文件内容
          • 增加内容:insert into (id,name) values(1,‘aa‘),(2,‘bb‘),(3,‘cc‘);
          • 查看内容:select * from db1.t1;
          • 删除内容:delete from t1 where id =1;
          • 查看用户权限:select * from mysql.user where user=‘root‘G;
  • 三、SQL数据类型
    • SQL之中没有bool值,tinyint[1]表示true;tinyint[0]表示fasle.
    • int数据类型后面存储的是显示宽度,而不是存储宽度,其他的数据类型则表示的是存储宽度
    • now()sql中的内置函数,根据数据类型生成相对应的时间模式
    • char( )定长字符串,存储速度快,但是浪费空间
    • varchar( )变长字符串,存储速度慢,可是节省空间
    • enum() 表示枚举 多选一
    • set( )表示集合 多选多
  • 四、约束:作用是保证数据的完整性和一致性
    • not null 表示该字段数据不能为空
    • default 表示该字段的默认值
    • unique 唯一(列唯一,组合唯一)
    • primary key 主键 一张列表中只允许出现一个主键(not null + unique)
    • auto-increment 自增长
  • 五、查询:
    • 单表查询的关键字执行顺序
      • from 说明是来自那一张表
      • where 条件 后面可以跟比较运算符 between and in(. ). like(%表示任意字符 _表示一个字符)逻辑运算符 
      • group by 以某个字段的值进行分组,发生在where之后,查看组类信息依赖于聚合函数max min avg sum count
      • having 过滤,在group by 后面的条件筛选
      • order by 排序 asc升序 desc降序
      • limite 限制查询 记录数 limte a, b. a表示从第a个开始,b表示查询b条
    • 多表连接查询
      • 语法:select 字段 from t1 inner/left/right join t2 on t1.字段=t2.字段;
        • inner 表示只显示连接匹配的行
        • left:优先显示左表的全部记录
        • right:优先显示右表的全部记录
      • 子查询中的关键字
        • in/not in:查询的结果是否在子表中
        • 运算符:= < > !=
        • exits:表示存在,使用此关键字时,内层查询语句不返回查询的记录,而是返回一个布尔值,当此布尔值为真时外层语句进查询,反之不进行查询
  • 六、pymysql简单使用
    • 连接:conn=pymysql.connect(host=‘IP‘,port=端口号,user=‘root‘,password=‘‘,db=db1,charset=‘utf8‘)
    • 创建游标:cursor=conn.cursor( )
    • 写sql语句:sql=‘’
    • 执行sql语句,返回在数据库中查询成功的记录行数,result=cursor.execute(sql);在result中可以进行字符的拼接,execute(sql,[user,pwd]),即execute注入,防治恶意语法
    • 使用mysql模块进行增删改操作时需使用commit( )方法进行提交,否则数据库更改不生效;conn.commit( )
    • 查询操作:fetchone( )获取下一行数据,从第一行开始;fetchall( )获取所有行数据,;fetchany(n),获取n行数据
    • 查询操作默认返回的是元组,使用如下语句获取游标,改变cursor属性,会返回字典:cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
    • 移动指针:
      • cursor.scroll(1,mode=‘relative‘)相对定位,相对当前位置向下移动
      • cursor.scroll(1,mode=‘abusolute‘绝对定位,相对左上角向下移动
    • 关闭连接,游标和连接都需要关闭:cursor.close( ). conn.close( )
  • 七、索引
    • 索引的作用:约束和加速查找
      • 无索引的时候一般会 从前至后一条条查找
      • 有索引的时候:创建索引的本质就是创造额外的文件,查询时先去额外的文件找,定好位置,再去原始表直接查询,提高查询速度,但是增删改的速度依然慢,创建索引后必须命中索引才有效
    • 索引的分类
      • 1、普通索引:加速查询
        • 加入索引:create index 索引名 on 表名(列名)
        • 删除索引: drop index 索引名 on 表名
        • 查看索引:show index from 表名
      • 2、唯一索引:加速查找和唯一约束(可含null)
        • 加入索引:create unique index 索引名 on 表名(列名)
        • 删除:drop index 索引名 on 表名
      • 3、主键索引
        • 加入索引:alter table 表名 add primary key(列名)
        • 删除索引:alter table 表名 drop primary key(列名)和alter table 表名 modify 列名 int,drop primary key
      • 4、组合索引:将多个列组合成一个索引
        • 创建组合索引:create iindex 索引名 on 表名(列1,列2)
        • 在使用组合索引时,若组合索引为(name,email),单独索引email时不走索引,这称为最左前缀匹配原则,最左匹配原则中,mysql会一直向右匹配知道遇到(< > between like)这一类的范围查询时停止
      • explain + sql查询语句,用于查询sql执行信息参数
      • 在使用关键字‘like’查询时:like ‘n%’ 走索引;但是like ‘%n%’不走索引,即有且仅只有后面带上%时走索引
      • 使用函数时索引不生效

以上是关于Mysql数据库知识点总结的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库知识点总结

MySQL知识总结

Mysql 知识点总结

Mysql数据库知识点总结

MySQL 必知必会知识点总结

MYSQL数据库知识点总结