于家崎

2020-07-06   阅读量: 587

Mysql

数据分析706(下)

扫码加入数据分析学习群

MySQL数据库常用约束条件

  1. 主键约束(primary key)

    每个表中只能有一个主键;

    主键值须非空不重复;

    可设置单字段主键,也可设置多字段联合主键;

    联合主键中多个字段的取值完全相同时,才违反主键约束

    添加主键约束:列级添加主键约束:create table <表名> (<字段名1> <字段类型1> primary key,……<字段名n> <字段类型n>);

    表级添加主键约束:create table <表名>(<字段名1> <字段类型1>,......<字段名n> <字段类型n>,[constraint 主键约束名] primary key(字段名1[,字段名2,...字段名n]));

  2. 唯一约束(unique)

    指定字段的取值不能重复,可以为空,但只能出现一个空值;

    添加唯一约束:列级添加唯一约束:create table <表名> (<字段名1> <字段类型1> unique,……<字段名n> <字段类型n>);

    表级添加唯一约束:create table <表名> (<字段名1> <字段类型1,……<字段名n> <字段类型n>,[constraint 唯一约束名] unique (字段名1[,字段名2...字段名n]));

  3. 自动增长列(auto_increment)

    指定字段的取值自动生成,默认从1开始,每增加一条记录,该字段的取值会加1;

    只适用于整数型,配合主键一起使用;

    创建自动增长约束:create table <表名> (<字段名1> <字段类型1> primary key auto_increment,……<字段名n> <字段类型n>);

  4. 非空约束(not null)

    字段的值不能为空;

    创建非空约束:create table <表名> (<字段名1> <字段类型1> not null,……<字段名n> <字段类型n>);

  5. 默认约束(default)

    如果新插入一条记录时没有为该字段赋值,系统会自动为这个字段赋值为默认约束设定的值;

    创建默认约束:create table <表名> (<字段名1> <字段类型1> default value,……<字段名n> <字段类型n>);

  6. 外键约束(foreign key)

    在一张表中执行数据插入、更新、删除等操作时,DBMS都会跟另一张表进行对照,避免不规范的操作,以确保数据存储的完整性。

    某一表中某字段的值依赖于另一张表中某字段的值;

    主键所在的表为主表,外键所在的表为从表;

    每一个外键值必须与另一个表中的主键值相对应;

    创建外键约束:create table <表名> (<字段名1> <字段类型1>,……<字段名n> <字段类型n>,[constraint 外键约束名] foreign key(字段名) references <主表>(主键字段));


修改数据表

修改数据库中已经存在的数据表的结构

  • 修改表名:alter table 原表名 rename 新表名;

  • 修改字段名:alter table 表名 change 原字段名 新字段名 数据类型 [自增/非空/默认] [字段位置];

  • 修改字段类型:alter table 表名 modify 字段名 新数据类型 [自增/非空/默认] [字段位置];

  • 添加字段:alter table 表名 add 新字段名 数据类型;

  • 修改字段的排列位置:

    alter table 表名 modify 字段名 数据类型 first;

    alter table 表名 modify 要排序的字段名 数据类型 after 参照字段;

  • 删除字段:alter table 表名 drop 字段名;


插入数据

字段名与字段值的数据类型、个数、顺序必须一一对应

  • 指定字段名插入:

    insert into 表名(字段名1[,字段名2,...]) values(字段值 1[,字段值 2,...]);

  • 不指定字段名插入:

    insert into 表名 values(字段值 1[,字段值 2,...]);

    需要为表中每一个字段指定值,且值的顺序须和数据表中字段顺序相同

  • 批量导入数据:

    (路径中不能有中文,并且要将‘\’改为‘\\’或‘/’)

load data infile ‘文件路径.csv’into table 表名[ fields terminated by ‘,' ignore 1 lines];

show variables like '%secure%';-- 查看安全路径


更新数据

update 表名 set 字段名1=字段值1[, 字段名2=字段值2[,…]][ where 更新条件];

set sql_safe_updates=0; -- 设置数据库安全权限,从而执行批量操作


删除数据

  • delete from 表名[ where 删除条件];

  • truncate 表名;(与delete from 表名一样,都是删除表中全部数据,保留表结构

  • delete和truncate的区别:

    delete可以添加where子句删除表中部分数据,truncate只能删除表中全部数据

    delete删除表中数据保留表结构,truncate直接把表删除(drop table)然后再创建一张新表(create table),执行速度比delete快。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
29.5317 4 1 关注作者 收藏

评论(0)


暂无数据

推荐课程