MySQL整理4—数据表的基本操作1

主要内容:创建数据表,查看数据表结构,修改数据表,删除数据表,约束、默认和规则含义

一、创建数据表

语法形式:
create table <表名> (
字段1 , 数据类型 [列级别约束条件][默认值],
字段2 , 数据类型 [列级别约束条件][默认值],
...
);

例子:

create 
create table tb_emp1(
id int(11) primary key,
name varchar(25),
deptID int(11),
salary float
/*添加主键约束,在最后添加也可*/
/*primary key(id)*/
/*多字段主键添加  primary key(id,name)*/
);

约束包括哪些?

  • 非空约束 (not null)
  • 唯一性约束 (unique)
  • 主键约束 (primary key) 简称 PK
  • 外键约束 (foreign key) 简称 FK
  • 检查约束【目前MYSQL不支持,oracle数据库支持】

1.主键:表中的每一行都应该具有可以唯一标识自己的一列(或一组列)。而这个承担标识作用的列称为主键。如果没有主键,数据的管理将会十分混乱。比如会存在多条一模一样的记录,删除和修改特定行十分困难。

任何列都可以作为主键,只要它满足以下条件:

  • 任何两行都不具有相同的主键值。就是说这列的值都是互不相同的     
  • 每个行都必须具有一个主键值。主键列不允许设置为NULL    
  • 主键列的值不建议进行修改和更新

(注释:在第一部分,数据库基础中,主键知识已介绍)

2.外键

基本概念 :

  • (1) MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。
  • (2) 外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。
  • (3) 如果需要更好的性能,并且不需要完整性检查,可以选择使用MyISAM表类型,如果想要在MySQL中根据参照完整性来建立表并且希望在此基础上保持良好的性能,最好选择表结构为innoDB类型。
  • (4) 外键的使用条件: ① 两个表必须是InnoDB表,MyISAM表暂时不支持外键 ② 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立; ③ 外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;
  • (5) 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。

create table tb_dept1(
id int(11) primary key,
name varchar(22) not null,
location varchar(50)
);
create table tb_emp5(
id int(11) primary key,
name varchar(25),
deptID int(11),
salary float,
constraint fk_empdept1 foreign key(deptID) references tb_dept1(id)
);

3.非空约束

强制列不能为 NULL 值,约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。例子:name字段不能为空

create table tb_dept1(
id int(11) primary key,
name varchar(22) not null,
location varchar(50)
);

4.唯一性约束

unique约束的字段具有唯一性,不可重复。唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一性约束可以确保一列或者几列不出现重复值。

  • UNIQUE KEY 唯一约束
  • 唯一约束可以保证数据的唯一性
  • 唯一约束的字段可以为空
  • 每张数据表可以有存在多个唯一约束
create table tb_dept1(
id int(11) primary key,
name varchar(22) unique,
location varchar(50)
/*或者在最后添加constraint <约束名> unique <字段名>*/
/*constraint na unique(name)*/
);

5.设置表的属性自动增加

在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。 实现此目的,可以使用关键字:ATUO_INCREMENT

  • 1.默认,MySQL中AUTO_INCREMENT的初值是1,每新增一条记录,字段值自动加1;
  • 2.一个表只能用一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
  • 约束的字段可以是任何整数类型(tinyint,smallint,int,bigint)
create table tb_emp1(
id int(11) primary key auto_increment,
name varchar(25),
deptID int(11),
salary float
);
insert into tb_emp1(name,salary) 
values('lucy',7000),('tom',15000),('steven',40000);

插入数据后,id字段自动增加1。

原文地址:https://www.cnblogs.com/nctjlyh/p/10477165.html