zoukankan      html  css  js  c++  java
  • Mysql基础知识

    primary key主键
    表中一列或者多列组成唯一的key,也就是通过一个或者多个列能唯一标识的一条记录
    主键的列不能包含空值,主键往往设置为整型,长整形,且自增auto_increment
    表中可以没有主键,但是一般表设计中,往往都会有主键
    
    索引
    可以看作事一本字典的目录,为了快速检索用的,空间换事件,显著提高效率
    可以多一列或者多列字段设置索引
    主键索引,主键会自动建立主键索引,主键本身就是为了快速定位唯一记录的
    唯一索引:表中的索引列组成的缩影必须唯一,但可以为空,非空值必须唯一
    普通索引:没有唯一性的要求,就是建了一个字典的目录而已
    
    约束constraint
    unique约束(唯一键约束)
        定义了为一键索引,就定义了为一键约束
    primary key约束
        定义了主键就定义了主键约束
    foreign key约束
        外键在表b中的列,关联表A中的主键,表B中的就是外键
        如果在表B中插入一条数据,B的外键插入了一个值,这个值必须事表A中存在的主键值
        修改表B的外键也是同样,外键值同样要在表A中存在
        表A要删除一条记录就等于删除一个主键,表B中引用到了这个主键必须先删除表B中主键的记录,然后才能删除表A的记录,否则删除失败
        修改表A的主键,由于主键唯一性,修改的主键相当于插入新主键,表B引用过这个主键,将阻止表A的主键修改,先删除表B相关记录,才能修改表A的主键
        外键约束,是为了保证数据的完整性

    DML语句

    insert into table_name (col_name,,,,) values (values1,)
    像表中插入一行数据,自增字段,缺省值字段,可为空字段可以不写
    insert into table_name SELECT,,,,,
    将select查询的结果插入到表中
    insert into table_name (col_name,,,,) values (values1,) on DUPLICATE KEY UPDATE col_name1= values1
    如果主键冲突,唯一键冲突就执行update后的设置,主键不在就新增,在就更新
    insert ignore into table_name (col_name,,,,) values (values1,)
    如果主键冲突,唯一键冲突就忽略错误,返回一个警告
    
    update tbl_name set col_name1=expr1 where  condition
    
    delete [ignore] from tbl_name [where condition]
    
    select 
        [distinct]
        [from table_references]
        [where where_definiton]
        [group by {col_name |expr | position}]
            [asc |desc],...[with rollup]
        [having where_definition]
        [order by {col_name |expr | position}]
            [asc |desc],...[with rollup]
        [limit {[offset,] row_count | row_count OFFSET offset}]
        [for update|lock in share mode]
        for update会把行进行锁定,这就是排他锁
    
    import pymysql
    conn = pymysql.connect('67.216.218.7', 'test', '1qazxsw2', 'blog')
    cursor = conn.cursor()
    try:
        
        insert_sql = "insert into blog (id,name,mail,password) values (1,'harden','harden@qq.com','hardenpassword)"
        rows = cursor.execute(insert_sql)
        conn.commit()
    except:
        conn.rollback()
    finally:
        if cursor:
            cursor.close()
        if conn:
            conn.close()

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    Spring 注解大全
    sql相关
    深入理解Java虚拟机 自己编译JDK
    MarkDown语法 学习笔记 效果源码对照
    学习
    【转】Java方向如何准备BAT技术面试答案(汇总版)
    Java (PO,VO,DAO,BO,POJO,DTO) 几种对象解释
    Python实现脚本锁功能,同时只能执行一个脚本
    java 内存管理 —— 《Hotspot内存管理白皮书》
    vue子组件实时获取父组件传来的值
  • 原文地址:https://www.cnblogs.com/harden13/p/9205864.html
Copyright © 2011-2022 走看看