MySQL大略学习 表格的操作 增删查改
Posted Jun-Main
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL大略学习 表格的操作 增删查改相关的知识,希望对你有一定的参考价值。
二 表的操作
2.1 表中结构的修改
基础语法
1. 添加字段
alter table table_name add 属性名 属性类型
2. 删除字段
alter table table_name drop 属性名
3. 重命名字段
alter table table_name change 旧属性名 新属性名 旧属性类型
4. 修改字段类型
alter table table_name modify 属性名 修改后属性类型
5. 设置主键
alter table table_name add primary key(属性名)
6. 设置外键
alter table table_name1 add constranit 外键名 foreign key(table_name1 中属性) refference table_name2(table_name2中的主键)
如果不constraint 外键名 会增加自动创建一个外键名
需要通过show create table table_name 来查找外键名
7. 删除主键
alter table table_name drop primary key
8. 删除外键
alter table table_name drop foreign key 外键名
例子
1. 为student表增加籍贯列 jiguan,类型为varchar, 字段宽20字节,不允许为null
alter table Student add jiguang varchar(20) not null;
2. 重命名Student表中籍贯列‘jiguang’ 改成‘jiguan’
```sql
alter table Student change jiguang jiguan varchar(20);
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210616093224680.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BlcnN1aXRfaGVybw==,size_16,color_FFFFFF,t_70#pic_center)
3. 删除Student表中的jiguan字段
```sql
alter table Student drop jiguan;
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210616093434240.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BlcnN1aXRfaGVybw==,size_16,color_FFFFFF,t_70#pic_center)
4. 将Stubdent表中sdept字段的长度改成20
```sql
alter table Student modify sdept char(20);
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210616093516748.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BlcnN1aXRfaGVybw==,size_16,color_FFFFFF,t_70#pic_center)
5. 在sno字段上设置主键
```sql
alter table Student add primary key(sno);
```
6. 在Course表设置cno为主键
```sql
alter table Course add primary key(cno);
```
7. 在SC表设置sno, cno 为外键
```sql
alter table Sc add foreign key(sno)references Student(sno);
alter table Sc add foreign key(cno) references
Course(cno);
```
2.2 表中数据的修改
基础语法
1. 增加数据
insert into table_name(col1, col2) values(value1, value2)
2. 删除数据
delete from table_name where 条件
3. 修改数据
update table_name set col1 = value1 where 条件
4. 查找数据
select * from table_name where 条件
例子
1. 向Student表中插入如下数据
sno | sname | ssex | sbirthday | sdept | speciality |
---|---|---|---|---|---|
20150101 | 李勇 | 男 | 1997.1.12 | CS | 计算机应用 |
20150201 | 刘晨 | 女 | 1995.6.4 | IS | 电子商务 |
20150301 | 王敏 | 女 | 1999.12.23 | MA | 数学 |
20150202 | 张立 | 男 | 1997.8.25 | Is | 电子商务 |
insert into Student(sno, sname, ssex, sbirthday, sdept, speciality) values('20150101', '李勇', '男', '1997-01-12', 'CS', '计算机应用');
其他的依次类推就不写了
2. 插入Course表和Sc表
cno | cname |
---|---|
C01 | 数据库 |
C02 | 数学 |
C03 | 信息系统 |
C03 | 操作系统 |
sno | cno | degree |
---|---|---|
20050101 | C01 | 92 |
20050101 | C02 | 85 |
20050101 | C03 | 88 |
20050201 | C02 | 90 |
20050201 | C03 | 80 |
20050301 | C01 | NULL |
20050301 | C02 | NULL |
20050202 | C01 | 87 |
insert into Course(cno, cname) values('C01', '数据库');
insert into Course(cno, cname) values('C02', '数学');
insert into Course(cno, cname) values('C03', '信息系统');
insert into Course(cno, cname) values('C03','操作系统');
insert into Sc(sno, cno, degree) values('20050101', 'C01', 92);
insert into Sc(sno, cno, degree) values('20050101', 'C02', 85);
insert into Sc(sno, cno, degree) values('20050101', 'C03', 88);
insert into Sc(sno, cno, degree) values('20050201', 'C02', 90);
insert into Sc(sno, cno, degree) values('20050201', 'C03', 80);
insert into Sc(sno, cno, degree) values('20050301', 'C01', NULL);
insert into Sc(sno, cno, degree) values('20050301', 'C02',
NULL); insert into Sc(sno, cno, degree) values('20050202', 'C01', 87);
这边我们发现第四个插入失败 是因为之前我们把Course表中的cno设置为主键唯一标识 C03 跟前面的C03冲突了 解决的办法是 删除主键
3. 将Sc表中C02课程degree全部加5分
update Sc set degree=degree+5 where cno = 'C02';
4. 删除Sc表中C02课程全部记录
delete from Sc where cno = 'C02';
Notes:
1. 为什么要有主键
主键用来唯一标识来强制确保表地完整性。例如身份证上人的名字是会有重复的,但是身份证号码是唯一标识的,假如.要查询一个人那么直接查询他的身份证号码就可以了
2. 为什么要有外键
为了解决数据的冗余,并且外键能关联的确保整个数据库的表都是完整的
3.刚才给Course表添加数据为什么会报错
Course的主键是cno, 第四个课程号与前面的课程号冲突,标识符不唯一
以上是关于MySQL大略学习 表格的操作 增删查改的主要内容,如果未能解决你的问题,请参考以下文章