博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3、mysql数据库表操作
阅读量:6005 次
发布时间:2019-06-20

本文共 2937 字,大约阅读时间需要 9 分钟。

[toc]

1、创建表

create table 表名(    列名  类型  是否可以为空,    列名  类型  是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8
  • InnoDB 支持事务回滚,原子性操作
  • myisam 不支持事务,但速度快
是否可以为空
  • 是否可空,null表示空,非字符串
  • not null - 不可空
  • null - 可空
默认值

默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值

create table 表名(    nid int not null defalut 2,    num int not null)

2、设置自增和主键

自增

自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)

注意:

  1. 对于自增列,必须是索引(含主键)
  2. 对于自增可以设置步长和起始值
create table 表名(    nid int not null auto_increment primary key,    num int null)或create table 表名(    nid int not null auto_increment,    num int null,    index(nid))

auto_increment 表示:自增

primary key 表示: 主键约束(不能重复且不能为空),有加速查找的效果

主键

主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

create table 表名(    nid int not null auto_increment primary key,    num int null)

create table 表名(    nid int not null,    num int not null,    primary key(nid,num))

唯一索引

唯一索引(此列值不能重复)

==unique 唯一索引名称 (列名)==

create table t1(    id int ....,    num int,    xx int,    unique uq1 (num),    constraint ....)

联合唯一索引(此两列排列组合值不能重复)

==unique 唯一索引名称 (列名,列名)==

create table t1(    id int ....,    num int,    xx int,    unique uq1 (num,xx),    constraint ....)

外键

外键,一个特殊的索引,只能是指定内容

creat table color(    nid int not null primary key,    name char(16) not null)create table fruit(    nid int not null primary key,    smt char(32) null ,    color_id int not null,    constraint fk_cc foreign key (color_id) references color(nid))

3、查看表设置

  • 查看表设置 desc 表名;
  • 以sql语句的方式查看表设置show create table 表名;
  • 以竖向的方式查看show create table 表名 \G;

4、设置自增起始值

  • 设置自增起始值alter table 表名 AUTO_INCREMENT=20;

5、设置步长

MySQL: 设置自增步长

基于会话级别:
  • 查看全局变量show session variables like 'auto_inc%';
  • 设置会话步长set session auto_increment_increment=2;
  • 设置起始值(在表里可以设置起始值,不必在这里设置)set session auto_increment_offset=10;
基于全局级别(基本上不用):
  • 查看全局变量show global variables like 'auto_inc%';
  • 设置会话步长set global auto_increment_increment=2;
  • 设置起始值(在表里可以设置起始值,不必在这里设置)set global auto_increment_offset=10;

(参考)SqlServer:自增步长:

基础表级别:
CREATE TABLE `t5` (  `nid` int(11) NOT NULL AUTO_INCREMENT,  `pid` int(11) NOT NULL,  `num` int(11) DEFAULT NULL,  PRIMARY KEY (`nid`,`pid`)) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=2 DEFAULT CHARSET=utf8
CREATE TABLE `t6` (  `nid` int(11) NOT NULL AUTO_INCREMENT,  `pid` int(11) NOT NULL,  `num` int(11) DEFAULT NULL,  PRIMARY KEY (`nid`,`pid`)) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=20 DEFAULT CHARSET=utf8

删除及清空表

  • 删除表: drop table 表名
  • 清空表数据: delete from 表名
  • 清空表数据和自增起始值:
    truncate table 表名

修改表

  • 添加列:alter table 表名 add 列名 类型
  • 删除列:alter table 表名 drop column 列名
  • 修改列类型:alter table 表名 modify column 列名 类型;
  • 修改列名,类型:alter table 表名 change 原列名 新列名 类型;
  • 添加主键:alter table 表名 add primary key(列名);
  • 删除主键:alter table 表名 drop primary key;</br>
    alter table 表名 modify 列名 int, drop primary key;
  • 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
  • 删除外键:alter table 表名 drop foreign key 外键名称
  • 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
  • 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

转载地址:http://papmx.baihongyu.com/

你可能感兴趣的文章
小猿圈分享-主流浏览器图片反防盗链方法总结
查看>>
Vue双向绑定原理
查看>>
如何聪明地利用待办事项 APP 完成任务
查看>>
4年程序员十面阿里终拿下offer,评级P6
查看>>
为什么我说IPFS社区从卖矿机开始,就是错的
查看>>
二叉树的遍历
查看>>
RPA机器人,银行业开挂的新武器
查看>>
javascript 周报 435 期
查看>>
10分钟快速进阶rollup.js
查看>>
java版b2b2c社交电商spring cloud分布式微服务(二)服务消费者(rest+ribbon)
查看>>
iOS第三方平台集成组件化
查看>>
404 Sum of Left Leaves
查看>>
提供SaaS Launchkit,快速定制,一云多端等能力,一云多端将通过小程序云实现...
查看>>
java b2b2c SpringCloud电子商务平台
查看>>
(十三)企业分布式微服务云SpringCloud SpringBoot mybatis-断路器聚合监控(Hystrix Turbine)...
查看>>
热更新
查看>>
亿万富翁Calvin Ayre梭哈BCH!
查看>>
map/reduce之间的shuffle,partition,combiner过程的详解
查看>>
ubuntu 手动配置interface上网
查看>>
Notes 迁移到SharePoint
查看>>