insert into teacher(name) values(null,'张三',30,'男');
时间: 2023-08-15 17:03:48 浏览: 46
这是一条不正确的 SQL 语句,它的含义是向 teacher 表中插入一条记录,该记录的 name 列为 null,age 列为 '张三',gender 列为 30,由于语法错误,导致该语句不符合插入语句的语法规则,因此无法执行插入操作。正确的语句应该是:
```sql
insert into teacher values(null,'张三',30,'男');
```
它的含义是向 teacher 表中插入一条记录,该记录的 id 列为自动增长,name 列为 '张三',age 列为 30,gender 列为 '男'。
相关问题
在一个成绩管理系统数据库GradeDB中,定义如下关系表: STUDENT(SID,SName,Age,Sex) GRADE(SID,CID,Score, Note) COURSE(CID,CName,Teacher) (1)编写SQL程序创建数据库及其关系表,并插入20个学生的2门课程(“数据库原理及应用”、“数据结构与算法”)成绩数据; (2)GradeLOG表的信息包括user操作用户、SID学号、CID课程号、changetime修改时间、oldscore修改前成绩、newscore修改后成绩。 创建GradeLOG表。 编写触发器程序实现GRADE表数据的插入、删除、修改在日志表(GradeLOG)记录相关操作数据,如操作用户、学号、课程号、修改时间、修改前成绩、修改后成绩。 (3)编写存储过程程序实现统计各课程不及格学生人数,并在屏幕输出;
(1)创建数据库及其关系表,并插入数据:
```sql
CREATE DATABASE GradeDB;
USE GradeDB;
CREATE TABLE STUDENT (
SID CHAR(10) PRIMARY KEY,
SName VARCHAR(20) NOT NULL,
Age INT NOT NULL,
Sex CHAR(2) NOT NULL
);
CREATE TABLE COURSE (
CID CHAR(10) PRIMARY KEY,
CName VARCHAR(20) NOT NULL,
Teacher VARCHAR(20) NOT NULL
);
CREATE TABLE GRADE (
SID CHAR(10) REFERENCES STUDENT(SID),
CID CHAR(10) REFERENCES COURSE(CID),
Score INT NOT NULL,
Note VARCHAR(50),
PRIMARY KEY (SID, CID)
);
INSERT INTO STUDENT VALUES ('200001', '张三', 19, '男');
INSERT INTO STUDENT VALUES ('200002', '李四', 20, '女');
INSERT INTO STUDENT VALUES ('200003', '王五', 18, '男');
INSERT INTO STUDENT VALUES ('200004', '赵六', 21, '女');
INSERT INTO STUDENT VALUES ('200005', '刘七', 20, '男');
INSERT INTO STUDENT VALUES ('200006', '陈八', 19, '女');
INSERT INTO STUDENT VALUES ('200007', '张九', 18, '男');
INSERT INTO STUDENT VALUES ('200008', '李十', 21, '女');
INSERT INTO STUDENT VALUES ('200009', '王麻子', 20, '男');
INSERT INTO STUDENT VALUES ('200010', '赵大', 19, '女');
INSERT INTO STUDENT VALUES ('200011', '刘二', 18, '男');
INSERT INTO STUDENT VALUES ('200012', '陈三', 21, '女');
INSERT INTO STUDENT VALUES ('200013', '张四', 20, '男');
INSERT INTO STUDENT VALUES ('200014', '李五', 19, '女');
INSERT INTO STUDENT VALUES ('200015', '王六', 18, '男');
INSERT INTO STUDENT VALUES ('200016', '赵七', 21, '女');
INSERT INTO STUDENT VALUES ('200017', '刘八', 20, '男');
INSERT INTO STUDENT VALUES ('200018', '陈九', 19, '女');
INSERT INTO STUDENT VALUES ('200019', '张十', 18, '男');
INSERT INTO STUDENT VALUES ('200020', '李一', 21, '女');
INSERT INTO COURSE VALUES ('C001', '数据库原理及应用', '张三');
INSERT INTO COURSE VALUES ('C002', '数据结构与算法', '李四');
INSERT INTO GRADE VALUES ('200001', 'C001', 80, '优秀');
INSERT INTO GRADE VALUES ('200001', 'C002', 75, '良好');
INSERT INTO GRADE VALUES ('200002', 'C001', 65, '及格');
INSERT INTO GRADE VALUES ('200002', 'C002', 70, '良好');
INSERT INTO GRADE VALUES ('200003', 'C001', 55, '不及格');
INSERT INTO GRADE VALUES ('200003', 'C002', 60, '及格');
INSERT INTO GRADE VALUES ('200004', 'C001', 90, '优秀');
INSERT INTO GRADE VALUES ('200004', 'C002', 85, '优秀');
INSERT INTO GRADE VALUES ('200005', 'C001', 70, '良好');
INSERT INTO GRADE VALUES ('200005', 'C002', 75, '良好');
INSERT INTO GRADE VALUES ('200006', 'C001', 80, '优秀');
INSERT INTO GRADE VALUES ('200006', 'C002', 85, '优秀');
INSERT INTO GRADE VALUES ('200007', 'C001', 60, '及格');
INSERT INTO GRADE VALUES ('200007', 'C002', 65, '及格');
INSERT INTO GRADE VALUES ('200008', 'C001', 75, '良好');
INSERT INTO GRADE VALUES ('200008', 'C002', 80, '优秀');
INSERT INTO GRADE VALUES ('200009', 'C001', 55, '不及格');
INSERT INTO GRADE VALUES ('200009', 'C002', 60, '及格');
INSERT INTO GRADE VALUES ('200010', 'C001', 70, '良好');
INSERT INTO GRADE VALUES ('200010', 'C002', 75, '良好');
```
(2)创建GradeLOG表,并编写触发器程序实现GRADE表数据的插入、删除、修改在日志表记录相关操作数据:
```sql
CREATE TABLE GradeLOG (
user VARCHAR(20),
SID CHAR(10),
CID CHAR(10),
changetime DATETIME,
oldscore INT,
newscore INT
);
DELIMITER $$
CREATE TRIGGER log_insert
AFTER INSERT ON GRADE
FOR EACH ROW
BEGIN
INSERT INTO GradeLOG VALUES (USER(), NEW.SID, NEW.CID, NOW(), NULL, NEW.Score);
END$$
CREATE TRIGGER log_delete
AFTER DELETE ON GRADE
FOR EACH ROW
BEGIN
INSERT INTO GradeLOG VALUES (USER(), OLD.SID, OLD.CID, NOW(), OLD.Score, NULL);
END$$
CREATE TRIGGER log_update
AFTER UPDATE ON GRADE
FOR EACH ROW
BEGIN
INSERT INTO GradeLOG VALUES (USER(), NEW.SID, NEW.CID, NOW(), OLD.Score, NEW.Score);
END$$
DELIMITER ;
-- 测试触发器
DELETE FROM GRADE WHERE SID = '200001' AND CID = 'C001';
UPDATE GRADE SET Score = 90 WHERE SID = '200002' AND CID = 'C002';
```
(3)编写存储过程程序实现统计各课程不及格学生人数,并在屏幕输出:
```sql
DELIMITER $$
CREATE PROCEDURE count_failed_students()
BEGIN
DECLARE c_name VARCHAR(20);
DECLARE c_id CHAR(10);
DECLARE n INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cur1 CURSOR FOR SELECT CName, CID FROM COURSE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO c_name, c_id;
IF done THEN
LEAVE read_loop;
END IF;
SELECT COUNT(*) INTO n FROM GRADE WHERE CID = c_id AND Score < 60;
SELECT CONCAT(c_name, '不及格人数为', n) AS Result;
END LOOP;
CLOSE cur1;
END$$
DELIMITER ;
-- 执行存储过程
CALL count_failed_students();
```
以上代码是一个完整的MySQL数据库程序,可以创建数据库、关系表、插入数据、创建触发器和存储过程,实现对学生成绩的管理。
用sql语句写一个学生信息管理系统
学生信息管理系统包括多个表格和关系,这里给出一个简单的示例,包括学生表(student)、班级表(class)、课程表(course)和成绩表(score)。
1. 创建表格
```
CREATE TABLE student (
sno VARCHAR(10) PRIMARY KEY,
sname VARCHAR(20) NOT NULL,
gender CHAR(1) NOT NULL,
birthday DATE,
phone VARCHAR(20)
);
CREATE TABLE class (
cno VARCHAR(10) PRIMARY KEY,
cname VARCHAR(20) NOT NULL,
teacher VARCHAR(20) NOT NULL
);
CREATE TABLE course (
co_no VARCHAR(10) PRIMARY KEY,
co_name VARCHAR(20) NOT NULL,
credit INT NOT NULL
);
CREATE TABLE score (
sno VARCHAR(10) NOT NULL,
co_no VARCHAR(10) NOT NULL,
score INT NOT NULL,
PRIMARY KEY (sno, co_no),
FOREIGN KEY (sno) REFERENCES student(sno),
FOREIGN KEY (co_no) REFERENCES course(co_no)
);
```
2. 插入数据
```
INSERT INTO student VALUES('1001', '张三', 'M', '1999-01-01', '13811111111');
INSERT INTO student VALUES('1002', '李四', 'F', '1998-02-02', '13822222222');
INSERT INTO student VALUES('1003', '王五', 'M', '2000-03-03', '13833333333');
INSERT INTO class VALUES('01', '计算机1班', '张老师');
INSERT INTO class VALUES('02', '计算机2班', '李老师');
INSERT INTO class VALUES('03', '计算机3班', '王老师');
INSERT INTO course VALUES('01', '数据库', 3);
INSERT INTO course VALUES('02', '操作系统', 4);
INSERT INTO course VALUES('03', '数据结构', 3);
INSERT INTO score VALUES('1001', '01', 85);
INSERT INTO score VALUES('1001', '02', 90);
INSERT INTO score VALUES('1002', '01', 80);
INSERT INTO score VALUES('1002', '03', 95);
INSERT INTO score VALUES('1003', '02', 75);
INSERT INTO score VALUES('1003', '03', 88);
```
3. 查询数据
```
-- 查询所有学生信息
SELECT * FROM student;
-- 查询所有班级信息
SELECT * FROM class;
-- 查询所有课程信息
SELECT * FROM course;
-- 查询所有学生成绩信息
SELECT * FROM score;
-- 查询某个学生的成绩信息
SELECT s.sname, c.co_name, sc.score
FROM student s, score sc, course c
WHERE s.sno = sc.sno AND sc.co_no = c.co_no AND s.sno = '1001';
-- 查询某个班级的学生信息和成绩信息
SELECT s.sname, c.cname, co.co_name, sc.score
FROM student s, class c, score sc, course co
WHERE s.sno = sc.sno AND sc.co_no = co.co_no AND c.cno = s.cno AND c.cno = '01';
```
这只是一个简单的示例,实际的学生信息管理系统可能涉及更多的表格和复杂的查询,需要根据具体的需求进行设计和实现。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)