将有选修的课程的学分加1学分;UPDATE c632107100233 SET credit=credit+1 WHERE cno IN ( SELECT cno FROM sc632107100233 WHERE c632107100233.cno=sc632107100233.cno )在将 varchar 值 '3.5 ' 转换成数据类型 int 时失败。
时间: 2024-03-17 13:46:14 浏览: 54
这个错误是因为你试图将一个包含空格的字符串转换为整数,需要先将其去掉空格再转换。你可以使用TRIM函数将空格去掉,然后使用CAST或CONVERT函数将其转换为整数,完整的SQL语句如下:
```
UPDATE c632107100233 SET credit=credit+1 WHERE cno IN (SELECT cno FROM sc632107100233 WHERE c632107100233.cno=sc632107100233.cno)
UPDATE c632107100233 SET credit=CAST(TRIM(credit) AS INT) WHERE credit LIKE '% %'
```
相关问题
已知三个关系模式:S(sno, sname, age, sex, dept),其中S表示学生表,5个属性分别表示学号,姓名,年龄,性别和系名;C(cno, cname, credit, teacher),其中C表示课程表,4个属性分别表示课程号,课程名,学分和任课教师;SC(sno, cno, grade),其中SC表示学生选课表,3个属性分别表示学号、课程号和成绩。请用SQL语言完成以下题目。 1. 将计算机科学系全体学生的成绩置零。 2. 查询选修2号课程的所有学生的姓名
1. 更新语句如下:
```sql
UPDATE SC
SET grade = 0
WHERE sno IN (
SELECT sno
FROM S
WHERE dept = '计算机科学系'
);
```
2. 查询语句如下:
```sql
SELECT sname
FROM S
WHERE sno IN (
SELECT sno
FROM SC
WHERE cno = '2'
);
```
注意:以上两个语句分别针对不同的题目,不要混淆。
数据库StudentCourse 有表SC含Sno作学号,Cno作课程号,Grade作成绩。表Student含Sno作学号,Sname作姓名,Ssex作性别,Sbirthday作出生日期,Sdept作所在系,Memo作备注。表Course含Cno作课程号,Cname作姓名,PreCourse作先行课,PreCno作先行课程号,Credit作学分,Semester作开课学期。 ①向表Student中插入(050101,赵林,男,1999-09-08,计算机)的记录。 ②向SC表中添加一个学生的选课记录,学号为0601001,所选的课程号为c2。SC表中有Sno、Cno、Grade这3个列。这里只知道学号和课程号,不知道成绩值。 ③向表Student中插入(050102,张修雨,default)记录,该记录的数据中default表示默认值‘男’,其他数据表示空值。 ④用CREATE语句建立表StudentBAK1,包含(与Student的Sno、Sname、Sdept相同)3个字段.然后用INSERTSEI.EcT语句实现向StudentBAK1添加Student表中的计算机系学生的学号、姓名、所在系的信息。 ⑤用SELECT…INTO语句实现把Student表中1998年后(包含1998年)出生的学生的学号、姓名存储到一个新表StudentBAK2。 ⑥将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。 ⑦将选修了课程名为【数据库原理】的学生成绩加5分。 ⑧将StudentCourse数据库的StudentBAKl表中所有姓赵的同学删除。 ⑨删除计算机系选修成绩不及格的学生选修记录。 ⑩将StudentC0urse数据库的StudentBAK2表中的所有行删除。
①向表Student中插入(050101,赵林,男,1999-09-08,计算机)的记录。
```sql
INSERT INTO Student(Sno,Sname,Ssex,Sbirthday,Sdept) VALUES('050101','赵林','男','1999-09-08','计算机');
```
②向SC表中添加一个学生的选课记录,学号为0601001,所选的课程号为c2。SC表中有Sno、Cno、Grade这3个列。这里只知道学号和课程号,不知道成绩值。
```sql
INSERT INTO SC(Sno,Cno) VALUES('0601001','c2');
```
③向表Student中插入(050102,张修雨,default)记录,该记录的数据中default表示默认值‘男’,其他数据表示空值。
```sql
INSERT INTO Student(Sno,Sname,Ssex) VALUES('050102','张修雨',DEFAULT);
```
④用CREATE语句建立表StudentBAK1,包含(与Student的Sno、Sname、Sdept相同)3个字段.然后用INSERTSEI.EcT语句实现向StudentBAK1添加Student表中的计算机系学生的学号、姓名、所在系的信息。
```sql
-- 创建表
CREATE TABLE StudentBAK1 (
Sno CHAR(8),
Sname VARCHAR(16),
Sdept VARCHAR(16)
);
-- 插入数据
INSERT INTO StudentBAK1(Sno,Sname,Sdept)
SELECT Sno,Sname,Sdept FROM Student WHERE Sdept='计算机';
```
⑤用SELECT…INTO语句实现把Student表中1998年后(包含1998年)出生的学生的学号、姓名存储到一个新表StudentBAK2。
```sql
SELECT Sno,Sname INTO StudentBAK2 FROM Student WHERE Sbirthday >= '1998-01-01';
```
⑥将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。
```sql
UPDATE Student SET Sdept='机电系', Memo='足球' WHERE Sname='赵林';
```
⑦将选修了课程名为【数据库原理】的学生成绩加5分。
```sql
UPDATE SC SET Grade=Grade+5 WHERE Cno IN (SELECT Cno FROM Course WHERE Cname='数据库原理');
```
⑧将StudentCourse数据库的StudentBAKl表中所有姓赵的同学删除。
```sql
DELETE FROM StudentBAK1 WHERE Sname LIKE '赵%';
```
⑨删除计算机系选修成绩不及格的学生选修记录。
```sql
DELETE FROM SC WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept='计算机') AND Grade < 60;
```
⑩将StudentC0urse数据库的StudentBAK2表中的所有行删除。
```sql
DELETE FROM StudentBAK2;
```
阅读全文