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

  

本文为原创文章,转载请标明出处
原文地址:https://www.cnblogs.com/harden13/p/9205864.html