表结构操作 ( ALTER TABLE)

添加单列:
ALTER TABLE tb1_name ADD [COLUNM] col_name
column_definition [FIRST|AFTER col-name]

  

create table `tb1`(
`id` int,
`name` varchar(20)
); 例:
mysql> ALTER TABLE `tb1`
-> ADD `age` INT
-> ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> ALTER TABLE `tb1`
-> ADD `number` INT FIRST
-> ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE `tb1` ADD `aaa` INT after `id`;
添加多列:
ALTER TABLE tbl_name ADD [COLUMN]
(col_name column_definition,...)

  

例:
mysql> ALTER TABLE `tb1`
-> add `aa` INT,
-> add `bb` INT,
-> add `cc` INT
-> ;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>
删除数据表中的列
ALTER TABLE tbl_name DROP [COLUMN] col_name ;

  

#例:
mysql> ALTER TABLE `tb1`
-> DROP `aa`
-> ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> ALTER TABLE `tb1`
-> DROP `bb`,
-> DROP `cc`
-> ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
表结构操作的补充:
ALTER TABLE `tbname`
增加 :ADD
删除 :DROP
修改 :MODIFY #改列的数据类型 (属性)
CHANGE #改列名和数据类型
RENAME #改表名
修改列名
mysql> alter table tb1 change `name` `sex` varchar(20); 修改数据类型
mysql> alter table tb1 modify `age` varchar(20); 修改表名
mysql> ALTER TABLE `tb1` RENAME TO `students`;
Query OK, 0 rows affected (0.40 sec)

非空约束

NULL 字段值可以为空

NOT NULL 字段值不能为空

例:
mysql> CREATE TABLE tb1(
-> id INT,
-> name VARCHAR(20) NOT NULL
-> );
Query OK, 0 rows affected (0.01 sec) # 当有非空约束,指定插入,必须加上name。
mysql> insert into tb1(id) value(1); # 报错 mysql> insert into tb1(id,name) value(1,'佳能');
Query OK, 1 row affected (0.01 sec) ## 注意 在mysql 里面,'' 不等于null #手动,添加非空约束 (必须这个字段,没有NULL值)
mysql> alter table tb1
-> modify id int not null;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0 # 取消非空约束
mysql> alter table tb1
-> modify id int ;

唯一约束

确保字段中的值的唯一unique key

例:
mysql> create table tb2(
-> id int not null unique key,
-> name varchar(20) not null
-> ); mysql> insert into tb2 value(1,'张三');
Query OK, 1 row affected (0.00 sec) mysql> insert into tb2 value(1,'张三'); # 报错,违反唯一约束 #添加唯一约束
mysql> ALTER TABLE `tb2`
-> ADD unique key(`name`)
-> ; #删除唯一约束
mysql> desc tb2;
mysql> alter table tb2
-> drop key name; #联合唯一
mysql> alter table tb2
-> add aa int,
-> add bb int; mysql> alter table tb2
-> add unique key (aa,bb); mysql> insert into tb2 value(4,'佳能',1,2);
mysql> insert into tb2 value(5,'哈哈',1,2);
ERROR 1062 (23000): Duplicate entry '1-2' for key 'aa' # 删除联合唯一 (show create table tb2;)
alter table tb2 drop key aa;

主键约束

主键保证记录的唯一性, 唯一标识每一条数据主键自动为NOT NULL每张数据表只能存在一个主键NOT NULL + UNIQUE KEY

一个UNIQUE KEY 又是一个NOT NULL的时候,那么它被当做PRIMARY KEY主键当一张表里没有一个主键的时候,第一个出现的非空且为唯一的列被视为有主键。

#主键,就是可以数据表中,可以唯一标识,一条数据。就好像身份证一样。
mysql> create table tb3(
-> id int primary key,
-> name varchar(20) not null
-> );
mysql> desc tb3; mysql> insert into tb3 value(1,'张三');
Query OK, 1 row affected (0.27 sec)
mysql> insert into tb3 value(1,'张三');
ERROR 1062 (23000): Duplicate entry '' for key 'PRIMARY' #删除主键约束
mysql> alter table tb3
-> drop primary key; # 一个表里面,只有一个主键
mysql> desc tb3; #添加主键约束
mysql> alter table tb3
-> add primary key(id); #联合主键
mysql> create table tb4(
-> id_a int ,
-> id_b int,
-> content varchar(20),
-> primary key(id_a,id_b)
-> );
mysql> desc tb4; #删除主键约束
mysql> alter table tb4
-> drop primary key;
#添加联合主键
mysql> alter table tb4
-> add primary key(id_a,id_b);

自增长AUTO_INCREMENT

AUTO_INCREMENT 自动编号,一般与主键组合使用。一个表里面只有一个自增默认情况下,起始值为1,每次的增量为1。当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况,

情况一,如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;

情况二,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。(可以调大,不可以缩小)

例:
mysql> create table tb5(
-> id int primary key auto_increment,
-> name varchar(20)
-> )auto_increment =100; # 如果不写,默认从1开始
mysql> desc tb5; mysql> insert into tb5(name) values('张三'),('李四');
mysql> select * from tb5; #auto_increment值,可以调大
insert into tb5(id,name) values(110,'王五');
mysql> select * from tb5;
#不可以调小
insert into tb5(id,name) values(108,'王八');
insert into tb5(name) values('田七');
mysql> select * from tb5; #删除自动增长
mysql> alter table tb5
-> modify id int; #增加自动增长auto_increment
mysql> alter table tb5
-> modify id int auto_increment;

默认约束DEFAULT

DEFAULT(默认约束)初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name
{SET DEFAULT literal | DROP DEFAULT}
#例:
mysql> create table tb6(
-> id int primary key auto_increment,
-> name varchar(20) not null,
-> age int not null default 18
-> );
mysql> desc tb6; mysql> insert into tb6(name) values('张三'),('李四'),('王五');
mysql> select * from tb6; #删除default
mysql> alter table tb6
-> modify age int not null;
mysql> desc tb6;
#(2)
mysql> alter table tb6
-> alter age drop default; #添加default
mysql> alter table tb6
-> modify age int default 20;
mysql> desc tb6;
#(2)
mysql> alter table tb6
-> alter age set default 21;

作业

创捷一张 学生表(
学号 主键
名字 不为空 唯一
性别
年龄 不为空

1. 删除名字的唯一
2. 添加性别,不为空、默认为男
3. 设置年龄 默认为18

MySQL数据库基本操作(二)的更多相关文章

  1. mysql 数据库(二)数据库的基本操作

    mysql 数据库(二)数据库的基本操作 用户管理,添加权限,创建,显示,使用数据库 1 显示数据库:show databases; 默认数据库: mysql - 用户权限相关数据 test - 用于 ...

  2. Django/MySql数据库基本操作&ORM操作

    数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...

  3. day39 mysql数据库基本操作

    什么是数据库 用来存储数据的仓库 数据库可以在硬盘及内存中存储数据 主要学习硬盘中存储数据,因为内存中的数据总有一天会丢失 数据库与文件存储数据区别 (公司的开发是综合内容的) 数据库本质也是通过文件 ...

  4. (三)mysql数据库基本操作

    (1)SQL语句:结构化查询语句 DDL语句 数据定义语言:数据库丶表丶视图丶索引丶存储过程丶函数丶create drop alter DML语句 数据库操作语言:插入数据insert,删除数据del ...

  5. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  6. MySQL数据库笔记二:数据类型及数据库操作

    三.MySQL数据库数据类型 MySQL数据库中支持多种数据类型:数值型.字符型.日期型 常用的数据类型: 1.整型 int:整形,存储整数 int(M):M表示预期值.与存储大小和数值的范围无关. ...

  7. mysql数据库基本操作sql语言

    mysql的启动与关闭 启动 /etc/init.d/mysql start 多实例使用自建脚本启动 2种关闭数据库方法 mysqladmin -uroot -p密码 shutdown #优雅关闭/e ...

  8. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

  9. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  10. Mysql数据库基本操作 (一)

    1.使用mysql数据库的必备要素 a. 安装MySQL服务端 b. 安装MySQL客户端 c. [客户端]连接[服务端] d. [客户端]发送命令给[服务端MySQL]服务的接受命令并执行相应操作( ...

随机推荐

  1. 多媒体开发之---h264格式详解

    http://blog.csdn.net/bluebirdssh/article/details/6533501 http://blog.csdn.net/d_l_u_f/article/detail ...

  2. Android 图片压缩的方法大全

    public static Bitmap revitionImageSize(String path) throws IOException { BufferedInputStream in = ne ...

  3. C/C++程序开发中实现信息隐藏的三种类型

    不管是模块化设计,还是面向对象设计.还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏依照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...

  4. diamond源码阅读-diamond-server

    diamond-server 1 增加一条数据 /diamond-server/admin.do?method=postConfig 1.1 调用 this.configService.addConf ...

  5. HDU2602Bone Collector 简单0-1背包

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  6. Mac下使用安装MongoDB

    1.安装方法1:Mac电脑上面安装很简单,直接下载需要的版本解压即可: 下载网址 https://www.mongodb.com/download-center?jmp=nav#community 方 ...

  7. Unity3d 重力感应

    Input.acceleration 加速度 最近一次测量的设备在三维空间中的线性加速度(只读); void Update () { v3=Input.acceleration; } void OnG ...

  8. redis 底层数据结构 整数集合intset

    整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时Redis就会使用整数集合作为集合键的底层实现 整数集合是Redis用于保存整数值的集合抽象数据结构,它可以保存 ...

  9. (八)solr7实现搜索框的自动提示并统计词频

     solr7实现搜索框的自动提示并统计词频 1:用solr 的suggest组件,统计词频相对麻烦. 2:用TermsComponent,自带词频统计功能. Terms组件提供访问索引项的字段和每个词 ...

  10. 创建String字符串的方式与区别

    Java中创建一个字符串的方式有很多种,常见如: String s = new String("riqi"); String s = "riqi"; 但两者有什 ...