Day18-课堂笔记-mysql3

1.多表联合查询

  • 查询没有被购买过的商品
        select goods.name from goods left join user on goods.gid=user.gid where user.id is NULL;
  • 查询哪类商品是销量冠军
        select category, count(*) as c from user join goods on user.gid=goods.gid group by category order by c desc limit 1;
  • 查询哪个商品是销量冠军
        select goods.name, goods.price, count(*) as c from user join goods on user.gid=goods.gid group by goods.name order by c desc limit 1;
  • 可有可无的东西:针对安装时有错的人
 分组只能写分组字段和统计字段,写其它字段报错
        进入mysql执行如下指令
        SET @@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
  • 清空表
    truncate table 表名 清空表,id会从1开始
    delete from table 清空表,id从上次记录的值开始


    Day18-课堂笔记-mysql3_第1张图片
  • 创建用户
    登录:mysql -h ip地址 -u用户名 -p
    创建: create user '用户名'@'ip' identified by '密码'
    2、索引

  • 认识索引
    索引类似于目录
    数据库在查询的时候,是一条一条挨着查呢。查询效率太低了。
    如何提高查询效率?索引
    如果在查询的时候,经常通过某个字段查询,那就要考虑给这个字段添加索引。

  • 索引的缺点:在插入的时候效率就比较低

  • 索引有
    普通索引 index(字段)
    唯一索引 要确保唯一性 unique(字段)
    主键索引 是特殊的唯一索引,但是不能为空 primary key(字段)
    全文索引 fulltext(字段)
    3、数据库导入导出
    数据库里面的表可以导出来,导出来一般都是sql脚本的东西, data.sql
    注意:版本,通过指令导出和通过不同的可视化工具导出,格式也不一样。

  • mysql自带的指令:
    正常终端模式下
    导出:mysqldump -uroot -p 数据库名>c:\data.sql
    导入:mysql -uroot -p 数据库名 注意:导入之前首先创建一个新的数据库
    Navicat导出和导入:
    右键==》转储sql文件
    右键==》运行sql文件
    4、python操作数据库
    需要使用到第三方库:pymysql,在python交互界面输入 import pymysql 看有没有报错,报错了就是没有它,没报错就是有它
    安装之:pip install pymysql
    代码操作之
    port只能是整型

  • 连接数据库:

'''
    连接数据库需要用到的参数
    主机:host
    端口:port
    用户名:user
    密码:password
    指定数据库:db
    指定字符集:charset
    '''
    db=pymysql.connect(host='localhost',
                       port=3306,
                       db='sel_sql',
                       user='root',
                       password='123456',
                       charset='utf8')
  • 得到游标
# 首先根据db得到游标,游标就是执行sql语句用到的东西
cursor = db.cursor()
# 给cursor添加一个参数,让其的到数据是一个字典
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
  • 准备与执行
# 准备sql语句,执行sql语句
sql = 'select * from star'
# 返回结果rows是受影响的行数
rows = cursor.execute(sql)
  • 关闭
cursor.close()
db.close()

5、redis安装和学习
redis:是一个基于内存的数据库,计算机里面,有内存,有硬盘
文件都在硬盘中存放,代码在运行的时候,有一个变量a
内存:读写快,但是断电消失,不大
硬盘:读写慢,但是可以持久化保存,大,随便存
什么是NoSQL? not only sql 非关系型数据库
键值对,根据键立马就可以得到值
redis、MongoDB

你可能感兴趣的:(Day18-课堂笔记-mysql3)