MySQL数据表的修改:添加约束

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据表的修改:添加约束相关的知识,希望对你有一定的参考价值。

参考技术A 4.4.7添加约束

语句格式:ALTER TABLE 表名ADD  CONSTRAINT  约束名 约束类型(字段名)

上面语句格式中,“表名”指定要添加约束的是哪个表,“ADD CONSTRAINT”表示要在表中增加约束,其后的“约束名”是拟增加约束的名字,“约束类型”是拟增加约束的类型,其后括号里的“字段名”是指约束是在哪一个字段上建立起来的。

下面截图中的“ALTER TABLE”语句在t_dept表中新增加了一个约束名为unidept的约束,它是在对字段deptno进行的唯一性约束。

MySQL数据表操作及外键约束

MySQL数据表操作及外键约束

MySQL常用数据类型

int整 型
float单精度浮点,4字节32位
double双精度浮点,8字节64位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字 ,小数点后面有2位

查看数据库结构

查看当前服务器中的数据库

SHOW  DATABASES;        #不区分大小写,以;结束
  • 不区分大小写

查看数据库中包含的表

  • 要先使用USE切换到数据库中
USE   数据库名;     #先切换到数据库中
SHOW  TABLES;

查看表的结构(字段)

USE  数据库名;
DESCRIBE   数据库名.表名;
或者
DESC  表名;              #可以直接查看数据库里的表

  • 我们一般用desc + 表名查看表

SQL语句

SQL语句用于维护管理数据库,包括数据查询,数据更新,访问控制,对象管理等功能。

SQL语言分类

  • DDL:数据定义语言,用于创建数据库对象,例如:库,表,索引等。
  • DML:数据操纵语言,用于对表中的数据进行管理
  • DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
  • DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

创建新的数据库

CREATE  DATABASE  数据库名;

创建新的表

CREATE TABLE 表名(字段1 数据类型,字段2 数据类型,...,PRIMARY KEY (主键名));
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
create table ky10 (id int(3) not null, name char(20), sex char(2), age int(3), passwd varchar(50), primary key (id));

删除指定数据表及数据库

  • 删除数据表(谨慎使用
DROP TABLE 数据库名.表名;  #如果不用use进入库中,则需要加上库名
  • 删除库(谨慎使用
DROP DATABASE 数据库名;

管理表中的数据记录

向数据表中插入新的数据记录

insert into 表名(字段1,字段2...) values (字段1的值,字段2的值...);
或者
insert into 表名 values(字段1对应的值,字段2对应的值,...);
select * from 表名 ;    #查询表的数据记录

查询数据记录

select 字段名1,字段名2...  from 表名;

  • 使用where进行过滤
select * from 表名  where  + 条件判断;

例:select name,age from ky10  where id=1;
#从表ky10中过滤出当id=1时的name及age元素

select  name from ky10\\G  
#后面可以不加分号,加分号也可以显示但是会报错
#以坚列方式显示名字

select * from 表名 limit 2;    #只显示头两行
select * from 表名 limit 2,3;  #显示第2行后的头3(显示第3到第5行记录内容)

修改、删除数据表中的指定数据记录

  • 修改指定记录
update 表名 set 字段名1=字段值1..  where + 条件表达式;
#一般update配合where条件表达式使用,要不然会修改整个表格数据

  • 删除指定记录
delete from 表名 where + 条件表达式;

修改表名和表结构

修改表名

alter table 旧表名 rename 新表名;

修改表结构

  • 增加字段
alter table 表名  add  字段名+(字符型/整数型..) Default ->默认值为地址不详;

修改字段名,添加唯一键

alter table 表名 change 旧列名 新列名 数据类型 unique key;
#unique key 给新列名设置唯一键

  • 设置唯一键
  • char与vachar区别
    char为固定字符长度,varchar为可变字符长度

删除字段

alter table 表名 drop 字段名;

补充扩展

use kgc;
create table if not exists info (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
---------------------------------------------------------
#切换到库kgc
#if not exists:检测要创建的表是否已存在,如果不存在则继续创建
#int(4) zerofill:若数值不满4位,则前面用0填充,如:0001
#auto_increment:表示此片段为自增长字段,每条记录自动增1,默认从1开始递增,自增长字段数据不可以重复;自增长字段必须是主键;
#如添加的记录数据没有指定此字段且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复,一张表中只能有一个主键,但是一张表中可以有多个唯一键.
#not null:表示此字段不允许为NULL

  • PS:如果执行第二条错误,它的id也会递增加1;

数据表高级操作

克隆表,将数据表的记录生成到新的表中

  • 方法一
create table test01 like class;
insert into test01 select * from class;
#通过like方法,复制class表结构生成test01表

  • 方法二
create table test02 (select * from class);

show create table test02\\G   #以坚列形式显示
select * from test02;        #查看表test02

清空表,删除表内所有数据

  • 方法一
delete from test01;
#delete清空表后,返回的结果内有删除的记录条目;
#delete工作时是一行一行的删除记录数据的;
#使用delete删除时,如果表中有自增长字段,删除后再插入新的记录,会从原来最大ID开始递增加

  • 方法二
truncate table test01;
#truncate清空表后,没有返回被删除的条目
#truncate工作时是将表结构按原样重新建立,在速度上truncate比delete清空表要快
#truncate清空表内数据后,ID会从1开始重新记录

创建临时表

create temporary table (字段1 数据类型,字段2 数据类型..,primary key (主键名));
mysql> create temporary table test03 (
    -> id int(4) zerofill primary key auto_increment,
    -> name varchar(10) not null,
    -> cardid int(18) not null unique key,
    -> hobby varchar(50));
#临时表创建完成后,使用show table是看不到临时表的,临时表会在连接退出后自动销毁
#临时表在退出前一样可以增删改查等操作

创建外键约束

create table test04 (hobid int(4),hobname varchar(50));    
#创建主表test04
create table test05 (id int(4) primary key auto_increment,name varchar(50),age int(4),hobid int(4));
#创建从表test05
#主表test04与从表test05都有一个相同关键字段(hobid),数据类型相同,字符长度相同
alter table test04 add constraint PK_hobid primary key(hobid);
#修改test04增加约束,主键名,主键约束字段--hobid
alter table test05 add constraint FK_hobid foreign key(hobid) references test04(hobid);
#修改test05外键约束名为FK_hobid外键约束字段
  • 插入记录先从主表插入,然后才能在从表插入记录

  • 删除要先删除从表记录,才能删除主表记录

以上是关于MySQL数据表的修改:添加约束的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据表操作及外键约束

MySQL数据表操作及外键约束

mysql命令总结

MySQL学习3:数据表的修改与删除

MySQL数据表的修改:修改表名

《Mysql基础》Mysql表的基本操作 新建表修改表删除表外键约束主键约束完整性约束修改表约束添加表约束候选键等 编程入门 学习分享 公开免费