zoukankan      html  css  js  c++  java
  • mysql小结(了解)

    Mysql总结

    1、数据库的概念

    """
    数据库:库(文件夹)、表(表结构文件、表数据文件(索引结构))、字段(数据的描述)、记录(数据的本体)
    分类:效率问题(内存大于硬盘、非关系大于关系、key-value大于sql)
    数据库连接:主机、端口、账号、密码、数据库
    """
    

    2、用户

    """
    创建对指定数据库权限的用户:grant 权限们 on 数据库名.表名 to 用户名@主机名 identified by '密码';
    """
    

    3、基本操作

    """
    库:创建、删除
    表:完整创建表的语法、删除
    字段:增alter add、删alter drop、改alter modify
    数据:增删改查*****
    insert into values|select
    delete from
    update set
    select from
    """
    

    4、单表查询

    # sql中几乎所有的操作都是单表操作,多表也会连成单表,临时表也会创建视图
    
    select distinct 字段 from 表 where group by having order by limit
    
    """ distinct
    两条几以上所查所有字段形成的记录全部相同,才认为相同
    """
    
    """ where和having可以对字段进行的筛选规则
    比较:> < = >= <= !=
    区间:between and  |  in  |  not in
    逻辑: and  or  not
    相似:like  _%
    正则:regexp
    自定义区间:id in (2,3) | id not in (2,3) | id < all(2,3) | id < any(2,3)
    """
    
    """ group by
    尽量对重复率较高的字段进行分组,分组的字段可以直接被查询
    分组后只有聚合结果可以参与查询
    如果分组情况下,一个字段值全相同,可以直接用max(字段)处理进行查询
    联合分组,两个字段组合的综合结果作为分组依据
    """
    
    """ order by
    升序:order by salary asc
    降序:order by salary desc
    多个排序条件:order by salary desc, name asc
    """
    
    """ limit
    limit row
    limit offset,row
    """
    

    5、连表

    """
    from 左表 inner|left|right join 右表 on 两个表之间的关联条件 
    inner:都是有用的
    left:左边全有
    right:右边全有
    
    全连:left union right
    """
    

    6、表关系

    """
    外键:外键本身字段不一定唯一,关联字段一定唯一
    
    一对一:外键随意
    一对多:外键多一方
    多对多:外键关系表中
    
    foreign key(外键字段) references 被关联表(被关联字段)
    on update cascade
    on delete cascade
    """
    

    7、子查询

    """
    查询结果辅助另一条sql的增删改查
    
    子查询一个字段,用一个字段进行筛选
    where salary = (select salary from 表)  # 结果一条
    where salary in (select salary from 表)  # 结果多条
    where salary > all(select salary from 表)  # 结果多条
    where salary > any(select salary from 表)  # 结果多条
    where (dep,salary) in (select dep_name,max_salary from 表)
    """
    

    视图

    create view 视图名[(别名1,...,别名n)] as select 字段1,...,字段n from 表
    
    # 视图与真实表共享数据,视图和真实表的数据会相互映射
    # 视图的表结构只要存在,真实表的数据只要存在,该视图就可以使用
    

    事务

    """ 事务的四大特性
    1.原子性:事务是一组不可分割的单位,要么同时成功,要么同时不成功
    2.一致性:事物前后的数据完整性应该保持一致(数据库的完整性:如果数据库在某一时间点下,所有的数据都符合所有的约束,则称数据库为完整性的状态)
    3.隔离性:事物的隔离性是指多个用户并发访问数据时,一个用户的事物不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离
    4.持久性:持久性是指一个事物一旦被提交,它对数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
    """
    

    pymysql

    """
    # 1)建立数据库连接对象 conn
    # 2)通过 conn 创建操作sql的 游标对象
    # 3)编写sql交给 cursor 执行
    # 4)如果是查询,通过 cursor对象 获取结果
    # 5)操作完毕,端口操作与连接
    """
    import pymysql
    conn = pymysql.connect(user='root', passwd='root', database='oldboy')
    cursor = conn.cursor(pymysql.cursors.DictCursor)
    sql = '%s %s'
    cursor.execute(sql, (参数1,参数2))
    cursor.executemany(sql, [(参数1,参数2),(参数1,参数2)])
    
    # 增删改
    conn.commit()
    conn.rollback()
    
    # 查
    cursor.fetchone()
    cursor.fetchmany(n)
    cursor.fetchall()
    
    cursor.scroll(num, 'relative|absolute')
    

    索引

    # 优化的是查询 不是增删改
    
  • 相关阅读:
    Spring IoC容器
    Spring Bean定义
    Spring框架 体系结构,一个简单的Spring程序
    Spring基础知识汇总 Java开发必看
    mybatis 优缺点(优点和缺点)
    MyBatis:<selectKey> #keyProperty、keyColumn、order
    fatal: The upstream branch of your current branch does not match the name of your current branch
    808端口被 OneApp.IGCC.WinService.exe占用的问题
    浅析如何使docker容器可以进行ssh连接
    浅析如何为正在运行的容器添加端口映射
  • 原文地址:https://www.cnblogs.com/michealjy/p/11599259.html
Copyright © 2011-2022 走看看