开发者社区> 曲~线> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

3、mysql数据库表操作

简介: [toc] 1、创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 InnoDB 支持事务回滚,原子性操作 ...
+关注继续查看

[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;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系(2)
MySQL---数据库从入门走向大神系列(四)-子查询、表与表之间的关系
43 0
如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP
如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP   在Ubuntu上安装LAMP: https://help.
2102 0
CentOS 7 安装MySQL
由于MySQL被Oracle收购以后,CentOS默认yum库内置的数据库由原来的MySQL改为了MariaDB。  为了安装MySQL,我们需要将MySQL官方的Repo加到CentOS的repo里面。
821 0
安装MySQL Enterprise Monitor
    MySQL Enterprise Monitor是专门为MySQL数据库而设计的一款企业级监控,能非常好地与MySQL各方面特性相结合,包括:MySQL的关键性能指标、主机、磁盘、备份、新特性相关以及各种场景下的架构配置,并支持从单节点到海量节点部署的环境。
1080 0
linux 设置代理 安装jdk mysql tomcat redis hadoop
 1.修改linux用户名和密码 前提进入root用户  原用户名 XX,改成用户名 YY         执行 usermod -l YY XX  修改用户 YY 的密码,如果你在root权限下 执行 passwd YY  useradd -d /home/usr/baoyou -m...
1256 0
多实例mysql的安装和管理
多实例mysql的安装和管理 http://blog.chinaunix.net/uid-20639775-id-3438560.html mysql的多实例有两种方式可以实现,两种方式各有利弊。第一种是使用多个配置文件启动不同的进程来实现多实例,这种方式的优势逻辑简单,配置简单,缺点是管理起来不太方便。
741 0
MySQL 5.6.21下载安装之安装篇(二)
  mysql安装   1.1 Linux之下MySQL安装的三种方案的比较 具体内容参考这篇blog: http://blog.
1134 0
linux上mysql安装与卸载
以下步骤运行环境是centos6.5   1、查找以前是否装有mysql命令:rpm -qa|grep -i mysql2、删除mysql删除命令:rpm -e --nodeps 包名3、删除老版本mysql的开发头文件和库命令:rm -rf /usr/lib/mysql4.
917 0
openwrt挂载U盘和安装python和mysql
最近在openwrt上安装python时,老出现/overlay空间不足的错误,如下图所示: 不过用命令查看时,其空间确实挺小的: 看了这篇文章之后,想到了用闪存卡来扩容。由于我的系统内部已经有了相关usb驱动模块,所以一插上闪存卡就能识别了 基本想法很简单,先格式化,再挂载,再配置opkg.conf使软件安装到其上。 格式化 挂载到/mnt/usb目录
3339 0
mysql:yum安装以及开启远程连接权限
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/41343939 前言:如果你的mysql服务需要安装在centos上,centos一般情况下都可以通过yum命令进行软件的安装。
752 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
MySQL表和索引优化实战
立即下载
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL
立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL
立即下载