Python全栈 MySQL 数据库 (索引、数据导入、导出)

ParisGabriel

每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰

  开局一张图

表字段重命名(change)

 alter table 表名 change 原名 新名 数据类型;

SQL查询

执行顺序:

3. select ...聚合函数 from 表名

1. where ...

2. group by...

4. having...

5. order by...

6. limit...

group by 语句

作用:给查询结果进行分组

注意:

1.group by之后字段必须要select之后字段

2.如果select之后的字段和group by 之后的字段不一致,则必须

字段进行聚合处理(聚合函数)

having 语句

作用:对查询结果进一步筛选

注意:

1.having语句通常和group by联合使用过滤group by语句返回的记录集

2.where只能操作表中实际存在的字段having by可操作由聚合函数生成的显示列

distinct

作用:不显示字段重复值

注意:

1.distinct和from之间所有字段都相同 才会去重

2.distinct不能对任何字段做聚合处理

 运算符:

      +     -    *    /    %

   ## sudo apt-get install python3-pip     安装pip3

   ## sudo pip3 install pymysql                安装mysql

  约束:

1.作用保证数据完整性、一致性、有效性

2.约束分类

1.默认约束(default)

  插入字段给该字段赋值 则使用默认值

2.非空约束(not NULL)

不允许该字段值有NULL记录

 sex enum(“M”,"F","S") not null defaulf "S"

索引

定义:

对数据库表色一列或多列的值进行排序的一种结构

(Btree方式)

 


 

  优点:

加快数据的检索速度

  缺点:

1.需要占用物理存储空间

2.当对表中数据更新时,索引需要动态维护降低

数据维护速度 占用系统资源

运行时间检测:

开启:set profiling=1;

关闭:set profiling=0;

查询MySQL变量:show variables like profiling;

查询执行记录:show profilings;

字段创建索引:

create index name on t1(字段名);

索引的分类:

1.普通索引(index)

使用规则:

1.可设置多个字段

2.字段值无约束

3.key标志:MUL

创建index

创建表时创建

create table(....

...

index(字段名),

index(字段名2)...)

已有表添加index

create index 索引名 on 表名(字段名);

查看索引:

1.desc 表名;   key:MUL

2.show index from 表名

3.show index from\G;

删除索引:

drop index 索引名 on 表名;

 2.唯一索引(unique)

使用规则:

1.可以设置多个字段

 2.约束:字段值不允许重复,但可以为NULL

3.key标志:UNI

创建unique:

1.创建表时创建

unique(字段名),..

2.已有表

create unique index 索引名 on 表名(字段名);

查看、删除 和普通索引一致

3.主键索引(primary key)

自增属性(auto_increment,配合主键一起使用

使用规则:

1. 只能有一个主键字段

2. 约束:不允许重复,且不能为NULL

3.key标志:PRI

4.通常设置记录编号字段id,能唯一锁定一条记录

 创建primary key

创建表时:

1.id int primary key auto_increment,

2.起始值:表()auto_inctement=10000;

已有表:

alter table 表名 add primary key(id);

添加:alter table 表名 modify id int auto_inctement;

  删除:

1.删除自增属性(modify)

alter table 表名 modify id int;

2.删除主键索引

alter table 表名 drop primary key;

4.外键索引........

算法全是btree 节省时间都一样  不同的是约束不同

这里btree 算法 有人说btree就是btree 不是二叉树  但是我觉得就是二叉树 没什么区别

根据数据量的大小 提升速度  快能达到几百倍的提速

数据导入:

作用:

把文件系统的内容导入到数据库

 语法:

     load data  infile “文件名”

     into table 表名

     fields terminated by “分隔符”

     lines terminated by “\n”;

步骤:

1.数据库创建对应

2.把文件拷贝到数据库的默认搜索路径

1.查看默认路径 

show variables like “secure_file_priv”;

              /var/lib/mysql-files/

2.拷贝文件

              sudo cp ~/scoretable.csv /var/lib/mysql-files/

3.把表导入到数据库

数据导出:

 作用:

 数据库中表的记录导出到系统文件里

语法:

      select ... from 表名

      into outfile “/var/lib/mysql-files/文件名”

      fields terminated by “分隔符”

      lines terminated by “\n”;

步骤:

    1.直接执行导出命令

    2.自动创建文件

    3.默认导出到默认搜索路径

 

 

  文件权限:

rwxrw-rw- 1 tarena tarena

所有者 所属组

rwx:tarena用户

rw-:同组其他用户

rw-:其他组的用户(mysql)

r:  4

w:  2

x:  1

最高权限:7

查看权限:ls -l 文件名

修改文件权限:chmod  644 文件名

Excel表格如何化为CSV文件

打开Excel文件 -> 另存为 -> CSV(逗号分隔)

更改文件编码格式

用记事本/编辑器 打开,文件->另存为->选择编码

 

导入示例:

 

将scoretable.csv文件导入到数据库的表中
    1、在数据库中创建对应的表
      create table scoretab(
      id int,
      name varchar(15),
      score float(5,2),
      number bigint,
      class char(7)
      );
    2、把文件拷贝到数据库的默认搜索路径中
      1、查看默认搜索路径
        show variables like "secure_file_priv";
        /var/lib/mysql-files/
      2、拷贝文件
       sudo cp ~/scoretable.csv /var/lib/mysql-files/
    3、执行数据导入语句
      load data infile "/var/lib/mysql-files/scoretable.csv"
      into table scoretab
      fields terminated by ","
      lines terminated by "\n";

导出示例:

把MOSHOU库下的sanguo表英雄的姓名、攻击值、国家导出来,sanguo.txt

    select name,gongji,country from MOSHOU.sanguo
    into outfile "/var/lib/mysql-files/sanguo.txt"
    fields terminated by "   "
    lines terminated by "\n";

  将mysql库下的user表中 user、host两个字段的值导出到 user.txt

    select user,host from mysql.user
    into outfile "/var/lib/mysql-files/user.txt" fields terminated by "   "
    lines terminated by "\n";

查询
    $ sudo -i
    $ cd /var/lib/mysql-files/
    $ ls
    $ cat sanguo.txt

原文地址:https://www.cnblogs.com/ParisGabriel/p/9404696.html

时间: 2024-08-02 15:18:23

Python全栈 MySQL 数据库 (索引、数据导入、导出)的相关文章

Python全栈 MySQL 数据库 (简述 、安装、基本命令)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 一个月的python已经结束了  下面就是数据库了   先说MySQL 这个数据库应该差不多是用户量最多的了 MySQL概述:1.什么是数据库: 存储数据的厂库2.有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站...3.提供数据库服务的软件: 1.软件的分类: MySQL.Oracle.SQL_Server.DB2.MongoDB.MariaDB 2.生产环境中,如何选择使用哪些数据

Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 今天接着昨天的说 索引有4种: 普通 索引 :index  唯一索引:unique 主键索引:primary key 外键索引:foreign key 索引查询命令: show index from 表名\G: Non_Unique:1   :index Non_Unique:0  :unique 外键索引(foreign key):  定义:让当前字段的值在另一个表的范围内选择   语法:  

Python全栈 MySQL 数据库 (表字段增、删、改)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰  开局一张图 打字 回车时不小心发布了  正在编辑中.............. 原文地址:https://www.cnblogs.com/ParisGabriel/p/9398614.html

Python全栈 MongoDB 数据库(概念、安装、创建数据)

什么是关系型数据库? 是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据, 同时也是一个被组织成一组拥有正式描述性的表格(二维表),该形式的表格作用的实 质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存 取或重新召集而不需要重新组织数据库表格(即表与表之间的联系). nosql和关系型数据库比较?    优点:        1)成本:nosql数据库简单易部署,基本都是开源软件, 不需要像使用oracle那样花费大量成本购买使用,相比关系型

docker中mysql数据库的数据导入和导出

导出数据 查看下 mysql 运行名称 docker ps 结果: ? 执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker 容器中.而我们要备份的数据库就在里面,叫做 test_db.mysql 的用户名密码均为root,我们将文件备份到宿主机/opt/sql_bak文件夹下. docker exec -it mysql_server mysqldump -uroot -proot test_db > /opt/sql_

sqoop工具介绍(hdfs与关系型数据库进行数据导入导出)

数据表 第一类:数据库中的数据导入到HDFS上 #数据库驱动jar包用mysql-connector-java-5.1.31-bin,否则有可能报错! ./sqoop import --connect jdbc:mysql://localhost:3306/erpdb --username root --password 123456 --table tbl_dep --columns 'uuid, name, tele' :<<! 输出: part-m-00000: 1,总裁办,8888 2

mysql中的数据导入导出

数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本users.txt,内容如下: 创建一个表users 使用mysqlimport将users.txt中数据导入users表 PS F:\> mysqlimport -u root -p123456 zz --default-character-set=gbk --fields-terminated-by=

Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)

断网了2天  今天补上 聚合操作: 对文档的信息进行整理统计的操作 返回:统计后的文档集合 db.collection.aggregate() 功能:聚合函数,完成聚合操作 参数:聚合条件,配合聚合操作符使用 返回:聚合后的结果 常用聚合操作符: 1.$group  分组聚合   要配合具体的统计操作符获取结果 $sum  求和 db.class1.aggregate({$group:{_id:'$gender',num:{$sum:1}}}) 分组   按照gender值统计 统计结果,求和每

巨蟒python全栈开发数据库前端8:jQuery框架2

1.事件 2.批量操作 3.事件冒泡 4.事件委托 1.事件 常用事件 click(function(){...}) hover(function(){...}) blur(function(){...}) focus(function(){...}) change(function(){...}) //内容发生变化,input,select等 keyup(function(){...}) mouseover 和 mouseenter的区别是:mouseover事件只要你在绑定该事件的对象上移动