数据库表的基本操作 表的创建 增删改查 主键约束 唯一约束 非空约束 默认约束 自动增长约束 外键约束

1,表的基本概念

1,表是在库中,每个数据库包含N张表
一般是二维表的形式

2,由行和列组成:可以将复杂的数据保存在简单的表中
表中的每一行就是一条完整的记录
表中的列用于保存每条记录中特定的信息

2,创建表

1,使用sql语句创建表

语法格式为:create table 表名(
字段名1 字段类型1 [完整性约束], 
字段名2 字段类型2 [完整性约束],
.....
字段名n 字段类型n [完整性约束]
)

需要注意的是:
1,表名不能使用关键字 例如database select where 
2,每组字段名之间使用英文逗号隔开 但最后一个不需要逗号

		例如创建一个学生信息表student(id,name,gender,age)
create table Student (
id int(6),
name varchar(20),
gender varchar(1),
age int(2)
);

2,使用图形化界面创建
点击选择的库名—双击—右键—new table

3,表的查看修改删除操作

1,查看表的基本结构
			desc 表名;
			例如查看Student表的基本结构:desc Student;

2,查看表的详细结构(查看存储引擎和字符集)
		show create table 表名;

3,修改表结构
		a,修改表名
				alter table 旧表名 rename 新表名
				例如将Student表名修改为t_student:alter table Student rename t_student;

		b,修改字段数据类型
				alter table 表名 modify 列名 新字段类型
				例如将Student表中id的数据类型 修改为int(10):alter table Student modify id int(10);
				
		c,修改多个字段的数据类型
				alter table 表名 modify 列名1 新字段类型1,
								 modify 列名2 新字段类型2,
								 ......
								 modify 列名n 新字段类型n;
				例如修改Student表中id int(8) name varchar(30)
				alter table Student modify id int(8),
									modify name varchar(30);

		d,修改字段名
				alter table 表名 change 旧字段名 新字段名 旧字段类型
				例如Student表中gender修改为sex 
				alter table Student change gender sex varchar(1);
				
		e,修改字段名并修改字段的数据类型
				alter table 表名 change 旧字段名 新字段名 新字段类型
				例如Student表中gender修改为sex  数据类型改为varchar(2)
				alter table Student change gender sex varchar(2);

		f,添加字段
				alter table 表名 add 字段名 字段类型 [完整性约束] [first |after 字段名]  after 是添加到指定字段的后面
				例如在表的末尾添加score字段 alter table student add score float;
				例如在表第一个位置添加phone字段 alter table student add phone varchar(11) first;
				例如在表age的后面添加class字段 alter table student add class varchar(30) after age;
				
		g,删除字段
				alter table 表名 drop 列名
				例如删除表student中phone
				
		h,删除表
				使用sql语句删除  drop table 表名;
				使用图形化界面 右键 直接删除表

**

4,完整性约束

**

1,MySQL支持的完整性约束
		约束条件 			描述
		primary key		   主键约束
		unique  		   唯一约束
		not null		   非空约束
		default		  	  默认约束
		auto_increment	  自动增长约束
		foreign key      外键约束
	
a,主键约束 特点是:唯一且非空

		可以由一个字段组成,也可以由多个字段组成
		如果主键由一个字段组成,既可以添加到列级,也可以添加到表级
		如果由多个字段组成,只能添加到表级

		(1)在字段的列级添加约束 creat table 表名(字段名 字段类型 primary key)
		
				例如创建student1表(id name age sex) 其中id为主键
				create table student1(
				id int(8) primary key,
				name varchar(20),
				age int(2),
				sex varchar(1)
				)
				
		(2)在表级上添加主键约束
		
				语法格式为:create table 表名(
							字段名1 字段类型1, 
							字段名2 字段类型2,
							.....
							字段名n 字段类型n,
							[constraint 主键约束名] primary key(字段名)
							)
				例如创建student1表(id name age sex) 其中id为主键 在表级添加主键约束
				create table student2 (
				id int(8),
				name varchar(20),
				age int(2),
				sex varchar(1),
				constraint pk_student2 primary key (id)
				)
				
		(3)多个字段作为主键,只能添加到表级
					语法格式为:create table 表名(
							字段名1 字段类型1, 
							字段名2 字段类型2,
							.....
							字段名n 字段类型n,
							[constraint 主键约束名] primary key(字段名1, 字段名2)
							)
				例如创建student1表(school id name age sex) 其中school和id为主键 在表级添加主键约束
				create table student4 (
				school varchar(10),
				id int(8),
				name varchar(20),
				age int(2),
				sex varchar(1),
				constraint pk_student4 primary key (school,id)
				)

b,给已有表添加主键约束

		语法:alter table 表名 add [constraint 主键约束名] primary key (字段名)
		---创建表student5,不加id主键约束
		create table student5(
		id int(8),
		name varchar(20),
		age int(2),
		sex varchar(1)
		)
		desc student5;
		---表创建完后,添加主键约束
		alter table student5 add constraint pk_student5 primary key (id);

c,删除主键约束
		语法 alter table 表名 drop primary key;
		alter table student5 drop primary key;

unique 唯一约束

唯一约束是指:表中字段的值不能重复

		(1)列级添加唯一约束
				create table 表名(
				字段名1 字段类型1 unique, 
				字段名2 字段类型2,
				.....
				字段名n 字段类型n)

				例如:创建表student,给name字段添加唯一约束
				create table student(
				name varchar(20) unique,
				age int(2),
				gender varchar(1),
				phone varchar(11)
				)
				
		(2)在表级添加唯一约束
				语法格式为:create table 表名(
							字段名1 字段类型1, 
							字段名2 字段类型2,
							.....
							字段名n 字段类型n,
							[constraint 唯一约束名] unique (字段名1, 字段名2)
							)
				例如:创建表student,给name 和 id 字段添加唯一约束
				create table student(
				name varchar(5),
				phone int(8),
				sex varchar(1),
				id int(10),
				constraint uk_student_id_name unique (name, id)
				)

		(3)给已有表添加唯一约束
		语法:alter table 表名 add [constraint 唯一约束名] unique (字段名1, 字段名2)
				---创建表student,先不加id唯一约束
				create table student(
				name varchar(4),
				id int(8),
				sex varchar(1),
				score int(3)
				)
				 ------表创建完后,添加唯一约束
				 alter table student add constraint uk_student_id unique (id);

		(4)删除唯一约束
		alter table 表名 drop index 唯一约束名
		alter table student drop index uk_student_id;
		(如果单个字段没有指定约束名,则默认的唯一约束名为字段名)
		(如果多个字段组合为唯一约束时,默认的唯一约束名为第一个字段名)
		(如果指定了约束名,则删除的时候直接写约束名)
			

not null 非空约束

非空约束是指:表中的某字段的值不能为空

		需要注意的是:非空约束只能使用列级添加   空字符串 "" 和 0都不是null
		
		(1)列级添加非空约束
		语法格式为:create table 表名(
							字段名 字段类型 not null
							)
			例如创建student表,给name添加非空约束
				create table student(
				name varchar(3) not null,
				id int(20),
				gender varchar(1)
				)
			
		(2)给已有表添加非空约束
				alter table 表名 modify 字段名字 字段类型 not null
				 -----创建表student,先不加id非空约束
				create table student(
				name varchar(4),
				id int(8),
				sex varchar(1),
				score int(3)
				)
				 ------表创建完后,添加唯一约束
				 alter table student modify gender varchar(1) not null;

		(3)删除非空约束
		alter table 表名 modify 字段名 字段类型 [null]
		alter table student modify gender varchar(1) null;
		另外一种写法为:
		alter table student modify gender varchar(1);

default 默认值约束

默认值约束是指:在没有对某字段插入具体值的时候去默认的值

		注意:
		1,只能只能使用列级约束
		2,如果插入的数据为null,则不会使用默认值。当没有插入数据的时候,才会使用默认值。
	 
	 (1)列级添加默认值约束
	 		语法格式为:create table 表名(
							字段名 字段类型 default value
							)
	 		例如create table student(
					name varchar(4),
					id int(8),
					gender varchar(1) default "男"
					)
					
	 (2)给已有表添加默认值约束
	 		语法:alter table 表名 modify 字段名 字段类型 default value;
	 				alter table student modify gender varchar(1) default "女";

	 (3)删除默认值约束
	 		alter table 表名 modify 字段名 字段类型;
	 		例如删除gender的默认值"女":alter table student modify gender varchar(1);
	 		

auto_increment 自动增长约束

自动增长约束:是指表中的某字段的值会自动增加

注意:
		一张表中只能有一个自动增长的字段
		通常配合主键一起使用,并且只适用于整数类型
		自动增长的默认初始值为1,每增加一条记录,该字段的值会+1

(1)创建表时候,创建自动增长约束
		语法格式为:create table 表名(
							字段名 字段类型 auto_increment
							)
				例如创建表student,给id添加主键和自动增长约束	
					create table student(
					name varchar(20),
					id int(8) primary key auto_increment,
					gender varchar(1)
					)
					
(2)给已有表添加自动增长约束
		语法:alter table 表名 modify 字段名 字段类型 auto_increment
							create table student(
							name varchar(4),
							id int(8) primary key,
							gender varchar(1)
							)
				alter table student modify id int(8) auto_increment;

(3)删除 自动增长约束
		语法:alter table 表名 modify 字段名 字段类型
				alter table student modify id int(8);

foreign key 外键约束

外键约束:是指某一张表中字段的值依赖于另一张表中某字段的值
		例如:班级表class 和 学生表student  二者之间的关系是1:n
		
作用是:主要实现了数据库中的参照完整性
		将两张表紧密结合,对某张表修改或删除的时候,要保证数据的完整性

(1)创建外键约束
		注意:虽然MySQL提供了列级添加外键约束,但添加后不会生效。所以要使用表级添加外键约束。

		语法格式为:create table 表名(
						字段名 字段类型,
						[constraint 外键约束名] foreign key (字段名) references 表(字段名)
						)
				---创建班级表
				create table class(
				cno int(8) primary key auto_increment,
				cname varchar(4)
				)
				desc class;
				---创建学生表
				create table student(
				cno int(8) primary key auto_increment,
				cname varchar(4),
				age int(2),
				gender varchar(1),
				stu_cno int(8)
				constraint fk_student_stu_cno foreign key(stu_cno) references class (cno)
				)

(2)给已有表中添加外键约束
		语法为:alter table 表名 add [constraint 外键约束名] foreign key (字段名) references 表(字段名)
		
---创建班级表
create table class(
cno int(8) primary key auto_increment,
cname varchar(2)
)
---创建学生表
create table student(
sno int(8) primary key auto_increment,
sname varchar(20),
stu_cno int(8)
) 

---给学生表添加外键约束
alter table student add constraint fk_student_stu_cno foreign key(stu_cno) references class(cno);


(3)删除外键约束
语法为:alter table 表名 drop foreign key 外键约束名
例如:alter table student drop foreign key fk_student_stu_cno;

(4)有依赖关系的表删除
		a,先删除有外键约束的表,再删除主表 顺序不能颠倒
		drop table student;
		drop table class;
		 
		b,先删除外键约束,再删除表
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值