sql serve数据库基础入门(2)

news/2024/11/28 23:57:26/

在这里插入图片描述

前言

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏: 🍔🍟🌯 c语言初阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:
在上一篇的最后,牛牛介绍了怎么创建表,本篇牛牛介绍如何管理表的结构,以及管理表中的数据(添加,修改和删除).

目录

  • 前言
  • 一、通过sql语句管理表的结构
    • 2.1 "添加"列 和 "删除"列
      • (1) 添加列:
      • (2) 删除列:
    • 2.2 "添加"约束 和 "删除"约束
      • (1) 添加约束
      • (2) 删除约束:
  • 二、通过sql语句添加、修改、删除表中的数据.
    • (1) 插入数据
    • (2) 修改数据
    • (3) 删除数据

本片中用到的"数据库"和"表"是上一篇文章创建的,不愿意重新创建"表"的可以点这里哦!----传送门

如果不了解数据库中的数据类型–传送门

一、通过sql语句管理表的结构

2.1 "添加"列 和 "删除"列

(1) 添加列:

添加列的格式:

alter table 表名	--alter表示修改		
add 列名 数据类型

示例1:
给student表添加Stature(身高)列,类型为numeric(4,2),允许为空值,且身高需小于3.0米.

语句:

alter table student
add stature numeric(4,2)--add表示后面写要增加的列名及相应的参数
check (stature<=3.0 and stature >=0)--可直接在后面跟上相应的check约束

示例2:
给student表增加所在系sdept列,字符型,长度为2,不允许为空值

语句:

alter table student
add sdept char (2) not null

注意:如果在插入要求非空的属性,且student表中已经有数据时,是不能成功插入的.

例如:
假如student表中已经有以下数据:

这时我们插入一个含有非空的属性列.

alter table student
add sdept char (2) not null

出错原因:该表里已经有数据了,所以再添加字段时,已经有的数据该字段应该是空,但是我们添加字段时设定的是非空,所以就矛盾了,报错了。

示例3:
给student表增加postcode(邮政编码)列,字符型,长度为6,可以为空,但是只能出现数字.
代码:

alter table student
add postcade char(6)
check (postcade like'[1-9][0-9][0-9][0-9][0-9][0-9]')

(2) 删除列:

删除列的格式:

alter table 要修改的表名
drop column 要删除的列名

示例1:删除student表身高stature列.
还记得,上面我们在添加stature列的时候设置了约束条件,此时若要删除该列就必须先删除约束条件,所以我们应该先找到约束条件再删除.
先试着删除,然后找到约束条件语句:

alter table student
drop column Stature

先删除约束条件:

alter table student
drop constraint CK__Student__stature__5CD6CB2B

再:删除stature列:

alter table student
drop column Stature

2.2 "添加"约束 和 "删除"约束

(1) 添加约束

格式:

alter table 要添加约束列所在的表名
add constraint 约束名
约束条件

示例1: 添加条件约束
给student表添加约束:入学时间必须在出生年月之后.
语句:

alter table student
add constraint birth1--birth1是约束名
check(birth<entrance_date)

示例2:添加默认约束
b.给sc表的成绩列(grade)增加默认值约束,默认值为0.
语句:

alter table sc
add constraint grade1--grade1为约束名
default 0 for grade

(2) 删除约束:

格式:

alter table 要删除的约束列所在的表的表名
drop constraint 约束名

示例:删除grade列的默认值约束

alter table sc
drop constraint grade1

二、通过sql语句添加、修改、删除表中的数据.

前面的各种操作是对表的结构定义进行设置,接下来我们详解如何对表中的数据进行修改.

(1) 插入数据

格式:

insert into 表名 values(数据1,数据2,数据3……)

用sql语句分别在student表、course表和sc表插入下列数据:

student表

course表

sc表

①向student表添加数据:

insert into student values ('20110001','张虹','男','1922-09-01','051','2011-09-01','南京','cs','200413');
insert into student values ('20110002','林红','女','1991-11-12','051','2011-09-01','北京','Cs','100010');
insert into student values ('20110103','赵青','男','1993-05-11','061','2011-09-01','上海','MS','200013');

②、向Course表中添加数据

insert into course values ('001','高数','96','6');
insert into course values ('002','c语言程序设计','80','5');
insert into course values ('003','JAVA语言程序设计','48','3');
insert into course values ('004','visual Basic','48','4');

③向sc表添加数据:

insert into sc values ('20110001','001',89);
insert into sc values ('20110001','002',78);
insert into sc values ('20110001','003',89);
insert into sc values ('20110002','002',60);
insert into sc values ('20110103','001',80);

思考题:
(1)执行如下语句:

insert into Student(Sno,Sname,Sex) values('20101101', '赵青','男')

问:该语句能成功执行吗?为什么?

答:不能成功执行,上面在添加’sdept’列时设置了不允许为空,所以不能将值NULL插入列’sdept列’中
在这里插入图片描述
(2)执行如下语句:

insert into sc values('20110103','005',80)

问:该语句能成功执行吗?为什么?

答:不能成功执行,因为sc表中的学号“005”的同学在Course表中不存在。而sc表中的Cno是作为Course表的外键存在的,所以不能成功执行。

(2) 修改数据

示例1:
使用T-sQL语句,将Course表中的课程号为:002的学分改为4,总学时改为64。

update Course
set Credit=4
where Cno='002'
update course
set Total_perior=64
where Cno='002'

示例2: 使用T-SQL语句,将sc表中的选修了"002"课程的同学的成绩*80%。

update sc
set Grade=Grade*0.8
where Cno='002'

(3) 删除数据

示例1:
使用T-SQL语句,删除选修了“c语言程序设计”的学生的选课记录

delete from Course where Cno in
(select Cno from Course
where Cname='c语言程序设计')

在这里插入图片描述

删除时,发现存在外键约束,且约束名为FK__Sc__Cno__3B75D760
,则先删除约束

--删除约束:
alter table sc
drop constraint FK__Sc__Cno__3B75D760
--删除记录:
delete from Course where Cno in
(select Cno from Course
where Cname='c语言程序设计')

示例2:
使用T-SQL语句,删除所有的学生选课记录。

delete from sc

最后记得将数据再插入进去哦,我们这只是演示一下删除数据而已.
下次再见,小伙伴们一起加油吧 !


http://www.ppmy.cn/news/1627.html

相关文章

新手入门SLAM必备资料

新手入门SLAM必备资料 文章目录 新手入门SLAM必备资料一、SLAM学习书籍1.必读经典2.有很多期,跟着会议一起出的文集3.入门书籍,简单实现及代码4.SLAM入门教材吐血推荐,对深入理解SLAM实质非常有帮助5.作者Joan Sola关于Graph-SLAM的教程,包含位姿变换、传感器模型、图优化以…

【Unity3D】绘制物体表面三角形网格

1 仅绘制三角形网格 1&#xff09;创建游戏对象 创建一个空对象&#xff0c;重命名为 Grid&#xff0c;并在其下添加需要绘制网格的对象&#xff0c;如下&#xff1a; 场景显示如下&#xff1a; 2&#xff09;添加脚本组件 GridController.cs using System; using UnityEngin…

Python Gui之tkinter(下)

6.Radiobutton单按按钮 Radiobutton控件用于选择同一组单选按钮中的一个。Radiobutton可以显示文本&#xff0c;也可以显示图像。 7.Checkbutton复选按钮 Checkbutton控件用于选择多个按钮的情况。Checkbutton可以显示文本&#xff0c;也可以显示图像。 经典的Gui类的写法&a…

详解C语言二级指针三种内存模型

二级指针相对于一级指针&#xff0c;显得更难&#xff0c;难在于指针和数组的混合&#xff0c;定义不同类型的二级指针&#xff0c;在使用的时候有着很大的区别 第一种内存模型char *arr[] 若有如下定义 char *arr[] {"abc", "def", "ghi"};…

第一期 | 整洁,从桌面开始

文章目录前言一、主要内容介绍二、文件分类&#xff0c;整理你的桌面1.网格对齐图标&#xff0c;取消自动排列2.保持工作状态&#xff0c;提取近期文件3.用好排序&#xff0c;让文件一目了然4.分类整理&#xff0c;让文件听你的话5.按照实际情况作调整三、合理归档&#xff0c;…

Android 面试中Binder必问,是否了解过?

1.简单介绍下binder binder是一种进程间通讯的机制 进程间通讯需要了解用户空间和内核空间 每个进程拥有自己的独立虚拟机&#xff0c;系统为他们分配的地址空间都是互相隔离的。 如两个进程需要进行通讯&#xff0c;则需要使用到内核空间做载体&#xff0c;内核空间是所有进…

Python 工匠 第三章 容器类型

基础知识 列表常用操作 list(iterable)可以将任何一个可迭代对象转换成列表 >>> from collections.abc import Iterable >>> isinstance("ABC", Iterable) True >>> list("ABC") [A, B, C]>>> chars list("A…

SVM(支持向量机)基本形式推导

据说在dl之前是SVM撑起了ml的半片天&#xff0c;学习后发现SVM是由纯粹的数学推导、转化、求解、优化“堆砌”而来&#xff0c;不如说是数学撑起了ml&#xff0c;ml是数学的学科。以下根据老师ppt上讲解的思路讲讲个人对SVM基本形式推导的理解。 margin&#xff08;间隔&#x…