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):

 定义:让当前字段的值在另一个表的范围内选择

  语法:

       foreign key(参考字段名)

       references 主表(被参考字段名)

       on delete 级联动作

       on update 级联动作

    使用规则:

主表从表字段数据类型要一致

主表被参考字段一般是:主键

删除外键:

      alter table 表名 drop foreign key 外键名;

      外键名查询:show create table 表名;

  级联动作:

 cascade

级联删除、更新(只限于参考字段)

restrict(默认)

从表有相关记录不允许主表操作

 set NULL

主表删除、更新从表关联记录字段值为NULL

    已有表添加外键:

       alter table 表名 add

       foreign key(参考字段)reference主表(被参考字段)

       on delete ...

       on update ...

表的复制

复制表:

create table 表名 select... from where 表名;

表结构:

create table 表名 select * from 表名 where false;

注意:

复制表的时候不会把原表的 键(key)属性复制过来

SQL 查询(高级)

嵌套查询(子查询):

   定义内层查询结果作为外层的查询条件

 语法格式:

select ...from 表名 where 条件(select...);

多表查询:

  两种方式

1.

      select 字段名列表 from 表名列表;(笛卡尔积)

      select * from t1,t2

      select t1.name,t2.name from t1,t2;

2.

     select t1.name,t2.name from t1,t2

      where 条件

链接查询:

   1.内链接

     select 字段名 from 表1 

     inner join 表2 on 条件

     inner join 表3 on 条件...;

   2.外链接

      1.左链接

        以左表为主显示查询结果

select 字段名 from 表1 

left join 表2 on 条件

left join 表3 on 条件...;

     2.右链接

        以右表为主显示查询结果

select 字段名 from 表1

right join 表2 on 条件

right join 表3 on 条件...;

数据备份:

 mysqldump  在Linux终端操作

    完全备份:

       mysqldump -u用户 -p源库名 > ~/xxx.sql

       --all-databases  备份所有库

       库名             备份单个库

       -B 库1 库2..     备份多个库

       库名 表1 表2...  备份指定库指定表

数据恢复:

    恢复单个库

          mysql -uroot -p < 目标库名 xxx.sql

    从所有库备份中恢复某一个库(-one-database)

          mysql -uroot -p --one-database 目标库名 < xxx.sql

注意:

1.恢复如果恢复到原库会将表中数据覆盖新增表不会删除

2.数据恢复时如果恢复库不存在,则必须先创建空库

MySQL的账户管理:

      1.开启mysql的远程连接

        sudo -i

cd /etc/mysql/mysql.conf.d/

subl mysql.cnf

        #bind-address = 127.0.0.1  注释掉

        /etc/init.d/mysql restart

    2.添加授权用户

        用root用户登录mysql

   mysql -uroot -p123456

        授权:

 grant 授权列表 on 库.表 to “用户名“@”%”

 identified by “密码” with grant option

         权限列表:

    all privileges、select、insert

    库.表: *.*  所有库所有表

示例:

    1、添加授权用户tiger,密码123,对所有库的所有表有所有权限

      grant all privileges on *.* to "tiger"@"%" identified by "123" with grant option;

 

综合性练习:

综述:两张表,一张顾客信息表customers,一张订单表orders
1、创建一张顾客信息表customers,字段要求如下:
c_id 类型为整型,设置为主键,并设置为自增长属性
c_name 字符类型,变长,宽度为20
c_age 微小整型,取值范围为0~255(无符号)
c_sex 枚举类型,要求只能在(‘M‘,‘F‘)中选择一个值
c_city 字符类型,变长,宽度为20
c_salary 浮点类型,要求整数部分最大为10位,小数部分为2位

在表中任意插入3条记录,c_name为"Zhangsan","Lisi","Wangwu", c_city尽量 写"Beijing","Shanghai" ......

insert into customers values
(1,"Zhangsan",25,"M","Beijing",8000),
(2,"Lisi",30,"F","Shanghai",10000),
(3,"Wangwu",27,"M","Shenzhen",3000);

2、创建一张订单表orders,字段要求如下:
o_id 整型
o_name 字符类型,变长,宽度为30
o_price 浮点类型,整数最大为10位,小数部分为2位
设置此表中的o_id字段为customers表中c_id字段的外键,更新删除同步

在表中任意插入5条记录(注意外键限制)
o_name分别为"iphone","ipad","iwatch","mate9","r11",其他信息自己定
insert into orders values
(1,"iphone",5288),
(1,"ipad",3299),
(3,"mate9",3688),
(2,"iwatch",2222),
(2,"r11",4400);

3、返回customers表中,工资大于4000元,或者年龄小于29岁,满足这样条件的前2条记录

4、把customers表中,年龄大于等于25岁,并且地址是北京或者上海,这样的人的工资上调15%

5、把customers表中,城市为北京的顾客,按照工资降序排列,并且只返回结果中的第一条记录

6、选择工资c_salary最少的顾客的信息

7、找到工资大于5000的顾客都买过哪些产品的记录明细

8、删除外键限制

9、删除customers主键限制
1、删除自增长属性
2、删除主键限制

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

时间: 2024-10-29 15:06:30

Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)的相关文章

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

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

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之后的字段

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

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

mysql数据库.sql备份文件的恢复方法

这里介绍两种方法: 1. mysqldump mysqldump不需要登录到数据库中就可以备份和恢复库和表: (1)备份 mysqldump -uroot -p‘123123’ mytest > /mnt/mytest_bak_$(date +%F).sql #注意这里是在命令行操作的,不是在mysql数据中,所以也不会有冒号 (2)恢复 mysql -uroot -p'123456' mytest < /mnt/mytest_bak_2019-10-10.sql 2. source (1)如

使用宝塔面板进行mysql数据库的创建备份恢复管理

MySQL的管理维护工具非常多,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,MySQL是一个非常流行的小型关系型数据库管理系统,2008年1月16号被Sun公司收购.目前MySQL被广泛地应用在Internet上的中小型 网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 在我的三 丰 免 费 云主 机上 安装了CentOS系统,并默认安装了宝塔管理面板,为了安全起见,在服务器在正常服

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

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

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事件只要你在绑定该事件的对象上移动

mysql数据库sql语句调优 、

mysql数据库sql语句调优 . 索引设计原则: 索引列一般为where子句中的列或连接字句中的列 尽量不对基数小的列做索引,如性别列 尽可能使用短索引:如果对字符列索引尽量指定最小长度. (short Keys are better,Integer best) create index cityname on city(city(10)); 复合索引前缀特性,索引的顺序很重要. key(a,b,c)联合索引: 可以走索引的组合:key(a),key(a,b ),key(a,b,c) 下列索引