MySQL

193 阅读2分钟

列属性

  • not null 不允许用null来填充空位s_age tinyint unsigned not null,当为某个字段设置了not null后,可以设置默认值。
  • default 某个字段的默认值s_age tinyint unsigned not null default 18,或者在插入数据时insert into 表名 values('php003','wangwu',default,default),字符型默认值一般用'',数字型一般用0
  • unique 用于约束当前的字段在整列中都是唯一的,不能与default联合使用
  • primary key 主键,唯一,对MySQL来说很重要,主要提现对记录的查找
    id int unsigned primary key auto_increment,自增长主键
    insert into 表名 values(default,'php002','man')
  • auto_increment 必须应用到整形字段并且是primary key或者unique,唯一
  • 复合主键,primary key(f1,f2)
  • 字段备注,comment '主键',查看备注show create table 表名\G

修改表结构

总的语法: alter table 表名

  • add【column】字段名 列类型 列属性 【first | after xx】 添加字段
  • drop【column】字段名 删除字段
  • add primary key(字段名) 添加主键
  • drop primary key 删除主键,如果有auto_increment,要先删除
  • add unique(字段名)
  • drop key unique 字段名
  • modify 字段名 列类型 列属性 【first|after】 修改字段类型
  • change 原字段名 新字段名 列类型 列属性 修改字段名
    字段的列类型和列属性也要重写,不然会变成删除
  • rename 重命名表

复制表结构

  • create table 表B like 表A;
    使用表A的结构创建一个表B
  • create table 表名 select * from 表名 where ...;
    用查询结果创建一个表
  • update 表名 set 字段=值【where子句】【limit子句】
    用于将where子句匹配到记录,仅更改limit子句限制的条数
  • delete from 表名【where子句】【limit子句】
    删除where子句和limit子句限制的数据
  • insert into 表A【(字段列表)】 select 字段列表 from 表B;
    批量插入,将表B查询的语句放入表A中

  • 蠕虫复制是批量插入的一个特殊情况,在使用批量插入语句时,如果插入的表与数据查询的表是同一个表
  • insert into 表名 【(字段列表)】 values(值列表) on duplicate key update 字段=值,字段=值...
    冲突更新,
  • replace into 表名【(字段列表)】 values(值列表)
    冲突替换,
  • delete from 表名
    清空表,只会清空数据,不会重建索引。
  • truncate 表名,彻底清空数据,重建索引。