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

Posted 刘贵庆的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Mysql基础》Mysql表的基本操作 新建表修改表删除表外键约束主键约束完整性约束修改表约束添加表约束候选键等 编程入门 学习分享 公开免费相关的知识,希望对你有一定的参考价值。

 -- mysql数据库程序设计笔记:

表基本操作:

1、新建表:格式如:
1)、建表加主键:
create table 表名
(
id int NOT NULL auto_increment comment  \'自增主键id\',
列名  类型(范围) comment \'列备注\',
...
primary key (id)
)engine=InnoDB;

2)、建表 加候选键副键约束
create table 表名
(
id int not null unique,
列名  类型(范围) comment \'列备注\',
......
)engine=InnoDB;

  注意:候选键一定要写:unique  
3)、新建表:不为空且唯一约束:  
  create table 表名
(
id int ,
xxxName varchar(255) not null unique  comment \'xxxxx名称,不为空且唯一\',
.....
.....
)engine=InnoDB default charset=\'utf8\' comment=\'xxx表\' ;
  
4)、新建表:check 条件约束:举例如下名称为:华为时,状态为2.

create table 表名
(
id int not null auto_increment  comment \'id自增\',
xxx_name varchar(255) ,
status  int(3) comment \'状态\',
constraint ck_S check(xxx_name !=\'华为\' or status=2),
primary key (id)
)engine=InnoDB default charset=\'utf8\' comment=\'xxxx表 表说明\' ;

5)、新建表:添加外键:(要求:1、不能加自增列,2、必须关联主键,3、自定义外键列类型必须和关联表中关联列一致)
格式:constraint pk_自定义外键名称 foreign key(外键列) references 外键列主表名称(外键列)
举例:
create table a表名(
id int not null auto_increment  comment \'id自增\',
primary key (id)
)engine=InnoDB default charset=\'utf8\' comment \'A表名备注 xxx表\';

create table b表名(
id int not null auto_increment  comment \'id自增\',
primary key (id)
)engine=InnoDB default charset=\'utf8\' comment \'B表名备注 xxx表\';


create table c表名(
自定义a表外键列 关联a表主键-类型,
自定义b表外键列 关联b表主键-类型,
....
....
....
constraint pk_自定义约束1  primary key (自定义a表外键列,自定义b表外键列),
constraint fk_自定义约束2 foreign key(自定义a表外键列) references a表名(关联a表主键),
constraint fk_自定义约束3 foreign key(自定义b表外键列) references b表名(关联b表主键)
)engine=InnoDB default charset=\'utf8\' comment \'c 表名备注 xxx表\';


2、查看表详细结构:(新建表sql语句): show create table 表名\\G;
   或:
   查看表基本结构:desc 表名;

3、插入新数据:insert into 表名(col1,col2,col3,,,,,)values(val1,val2,val3,,,,,);

4、添加字段:
格式:alter table 表名 add column 新字段名 类型;

1)、举例:向数据db_school 表tb_student2 加入一个int类型的id字段,
要求 不为null且唯一且自增,并在表第一个字段显示。
答:
alter table db_school.tb_student2 add id int auto_increment not null unique first;

前提:新建表tb_student2:
create table tb_student2
(
studentNo char(10) not null  unique comment \'学号\',
studentName varchar(20)  not null comment \'姓名\',
)engine=InnoDB charset=utf8 comment=\'学生表\';

2)、添加到最前:sql最后加:first;
3)、添加到xx字段之后:sql最后加: after xx;

5、修改字段:
格式:alter table 表名 modify column 字段名 数据类型; 
      alter table 表名 alter column 字段名 修改操作;
1)、举例:把tb_student2表中studentNo改为varchar(255)类型,可以为空 默认100293
alter table tb_student2 modify column studentNo varchar(255) default 100293;

2)、删除默认值:举例:删除tb_student2表中studentNo默认值
alter table tb_student2 alter column studentNo drop default;

3)、修改默认值:举例:修改tb_student2表中studentNo默认值为:1000010
alter table tb_student2 alter column studentno set default \'1000010\';

6、删除字段:格式:alter table 表名 drop 字段名;

举例:alter table tb_student2 drop column ainfoxx;
desc tb_student2;
前提先新增一个:alter table tb_student2 add column ainfoxx int null;

7、重命名表名:alter table 表名 rename 新表名;

8、删除表:drop table 表名;

9、主键约束:
1)、表级约束:
create table 表名
(
id int not null auto_increment comment \'自增id\',
NO int,
constraint 约束主键名称 primary key (id)
)engine=InnoDB charset=utf8 comment=\'测试表,表级约束\';

2)、列级约束:
create table 表名
(
id int not null auto_increment comment \'自增id\',
NO int ,
constraint 约束主键名称 primary key (id)
)engine=InnoDB charset=utf8 comment=\'测试表,表级约束\';

10、候选键约束:
候选键必须唯一且不能为null,不能加自增列。用unique来定义。
可以加多个unique:
1)、表级约束:
create table 表名
(
NO int not null  ,
xxtype varchar(255) not null ,
constraint 自定义约束名 unique(NO)
)engine=InnoDB charset=utf8 comment=\'测试表,表级约束\';

2)、列级约束:
create table 表名
(
NO int not null unique ,
xxtype varchar(255) not null unique
)engine=InnoDB charset=utf8 comment=\'测试表,表级约束\';

11、完整性约束 :
参考添加外键。和check约束。

12、更新外键约束:
1)、删除外键约束:
格式:alter table 表名 drop foreign key 外键约束名;

举例:(在已添加外键数据库操作)
alter table c drop foreign key fk_c1;

2)、添加外键约束:
格式:alter table 子表名 add foreign key (自定义主表外键列) references 主表名(主表主键列);

测试:alter table c add foreign key (a_cxxx_info) references a(id);

13、更新主键约束:
1)、删除主键约束:格式:alter table 表名 drop primary key;
测试:
create table test3(
id int not null,
xName varchar(255) unique,
primary key (id)
)engine=InnoDB;

alter table test3 drop primary key;
-- Query OK ,.....
2)、添加主键:
格式:alter table 表名 add constraint 自定义约束名 primary key(列名);
测试: alter table test3 add constraint  pk_testxx01 primary key (id);

14、更新候选键:
1)、删除候选键约束:(删除unique):
格式:alter table 表名 drop index 唯一约束列名;

测试:
create table test(
id int not null unique,
xxName varchar(255)
)engine=InnoDB;

mysql> show create table test\\G;
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `xxName` varchar(255) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

mysql> alter table test drop index id;
Query OK, 0 rows affected (0.41 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table test\\G;
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `xxName` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

2)、添加候选键约束:
格式:alter table 表名 add constraint 自定义候选键约束名 unique key(给约束的表中列名);
举例:
mysql> alter table test add constraint cp_test2 unique key(xxName);
Query OK, 0 rows affected (0.47 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table test\\G;
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `xxName` varchar(255) DEFAULT NULL,
  UNIQUE KEY `cp_test2` (`xxName`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

  

mysql基础篇 - 数据库及表的修改和删除

基础篇 - 数据库及表的修改和删除

 
 
 
 

修改和删除

一、实验简介

本节实验中,我们将学习并实践如何对数据库的内容做修改,删除,重命名等操作。

二、实验准备

在正式开始本实验内容之前,需要先下载相关代码。

该代码可以新建两个数据库,分别名为 test_01 和mysql_shiyan ,并在 mysql_shiyan 数据库中建 4 个表(department,employee,project,table_1),然后向其中插入数据。

具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop 目录:

cd /home/shiyanlou/Desktop

然后再输入命令,下载代码:

git clone http://git.shiyanlou.com/shiyanlou/SQL5

下载完成后,输入命令开启 MySQL 服务并使用 root 用户登录:

#打开 MySQL 服务
sudo service mysql start        

#使用 root 用户登录
mysql -u root

下载的 SQL5 目录下,有 1 个文件 MySQL-05.sql (SQL5 目录在桌面上,你可以用 Gedit 查看、编辑里面的文件。)

加载文件中的数据,需要在 MySQL 控制台中输入命令,完成实验准备:

source /home/shiyanlou/Desktop/SQL5/MySQL-05.sql

三、实验内容

1、对数据库的修改

使用命令 SHOW DATABASES; 可以看到刚才运行MySQL-05.sql 文件生成的两个数据库:

技术分享

现在我们运行命令删除名为 test_01 的数据库:

DROP DATABASE test_01;

现在再次使用命令 SHOW DATABASES; 可以发现,test_01 数据库已经被成功删除:

技术分享

2、对一张表的修改

(1) 重命名一张表

重命名一张表的语句有多种形式,以下 3 种格式效果是一样的:

RENAME TABLE 原名 TO 新名字;

ALTER TABLE 原名 RENAME 新名;

ALTER TABLE 原名 RENAME TO 新名;

使用命令尝试修改 table_1 的名字为 table_2 :

技术分享

(2)删除一张表

删除一张表的语句,类似于刚才用过的删除数据库的语句,格式是这样的:

DROP TABLE 表名字;

比如我们把 table_2 表删除:

技术分享

3、对一列的修改(即对表结构的修改)

对表结构的修改,是本节实验的难点,有时候一些小的错误会造成不可挽回的后果,所以请细心操作。另外需要注意,不是必需尽量避免更改表结构。

(1)增加一列

在表中增加一列的语句格式为:

ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束;

或: ALTER TABLE 表名字 ADD 列名字 数据类型 约束;

现在 employee 表中有 id、name、age、salary、phone、in_dpt 这6个列,我们尝试加入 height (身高)一个列并指定DEFAULT 约束:

技术分享

可以发现:新增加的列,被默认放置在这张表的最右边。如果要把增加的列插入在指定位置,则需要在语句的最后使用AFTER关键词(“AFTER 列1” 表示新增的列被放置在 “列1” 的后面)。

比如我们新增一列 weight (体重)放置在 age (年龄)的后面:

技术分享

上面的效果是把新增的列加在某位置的后面,如果想放在第一列的位置,则使用 FIRST 关键词,如语句:

ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST;

效果如下:

技术分享

(2)删除一列

删除表中的一列和刚才使用的新增一列的语句格式十分相似,只是把关键词 ADD 改为 DROP ,语句后面不需要有数据类型、约束或位置信息。具体语句格式:

ALTER TABLE 表名字 DROP COLUMN 列名字;

或: ALTER TABLE 表名字 DROP 列名字;

我们把刚才新增的 test 删除:

技术分享

(3)重命名一列

这条语句其实不只可用于重命名一列,准确地说,它是对一个列做修改(CHANGE) :

ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;

注意:这条重命名语句后面的 “数据类型” 不能省略,否则重命名失败。

当原列名和新列名相同的时候,指定新的数据类型或约束,就可以用于修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用。

我们用这条语句将 “height” 一列重命名为汉语拼音 “shengao” ,效果如下:

技术分享

(4)改变数据类型

要修改一列的数据类型,除了使用刚才的CHANGE语句外,还可以用这样的MODIFY语句:

ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

再次提醒,修改数据类型必须小心,因为这可能会导致数据丢失。在尝试修改数据类型之前,请慎重考虑。

4、对表的内容修改

(1)修改表中某个值

大多数时候我们需要做修改的不会是整个数据库或整张表,而是表中的某一个或几个数据,这就需要我们用下面这条命令达到精确的修改:

UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件;

比如,我们要把 Tom 的 age 改为 21,salary 改为 3000:

技术分享

注意:一定要有WHERE条件,否则会出现你不想看到的后果

(2)删除一行记录

删除表中的一行数据,也必须加上WHERE条件,否则整列的数据都会被删除。删除语句:

DELETE FROM 表名字 WHERE 条件;

我们尝试把Tom的数据删除:

技术分享

四、总结

本节实验中我们学习了对数据库、数据库表、数据库表项及记录的修改和删除方法。

五、作业

  1. 按照实验过程完整操作一遍:先用下载的代码建立数据库并插入数据,然后试用各种修改语句。实验过程截图。
  2. 使用没有 WHERE 条件的 UPDATE 语句,查看有什么不良后果(截图并说明)。

以上是关于《Mysql基础》Mysql表的基本操作 新建表修改表删除表外键约束主键约束完整性约束修改表约束添加表约束候选键等 编程入门 学习分享 公开免费的主要内容,如果未能解决你的问题,请参考以下文章

##MySql数据库表的操作与应用

(2.7)Mysql之SQL基础——表的操作与查看

MySQL数据库基础表的操作

MySQL 最基础命令总结(增删改)

MySQL基础语法——表的操作

MySql表的基础命令及数据操作命令