精华内容
下载资源
问答
  • 添加一条学生记录
    2022-03-15 15:33:41

    有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。

    输入格式:

    首先输入一个整数n(1<=n<=100),表示学生人数;

    然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

    最后一行输入一个待添加的学生信息,包括学号、姓名和3门课成绩

    输出格式:

    若待添加的学号与已有学号重复,则输出只有一行“error!”;否则,输出n+1行,即添加后的成绩单信息。

    输入样例:

    在这里给出一组输入。例如:

    3
    202016040201 Zhangling 78 95 55
    202016040202 Wangli 87 99 88
    202016040204 Fangfang 68 76 75
    202016040203 Lilei 68 79 82
    

    输出样例:

    在这里给出相应的输出。例如:

    202016040201 Zhangling 78 95 55
    202016040202 Wangli 87 99 88
    202016040203 Lilei 68 79 82
    202016040204 Fangfang 68 76 75
    #include<string.h>
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct student
    {
        char stuid[20];
        char name[30];
        int a,b,c;
    } STU;
    int main()
    {
        int i,j,flag=0,n;
        STU stu[200],t;
        scanf("%d",&n);
        for(i=0;i<n+1;i++)
        {
            scanf("%s %s %d %d %d",stu[i].stuid,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
        }
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n+1;j++)
            {
                if(strcmp(stu[i].stuid,stu[n].stuid)==0)
                {
                    flag=1;
                    printf("error!");
                    break;
                }
                else if(strcmp(stu[i].stuid,stu[j].stuid)>0)
                {
                    t=stu[i];
                    stu[i]=stu[j];
                    stu[j]=t;
                }
            }
        }
        if(flag==0)
        {
            for(i=0;i<n+1;i++)
            {
                printf("%s %s %d %d %d\n",stu[i].stuid,stu[i].name,stu[i].a,stu[i].b,stu[i].c);
            }
        }
        return 0;
    }

    选择排序参考:1.2 选择排序 | 菜鸟教程

    更多相关内容
  • 展开全部insert into 表名(字段名逗号隔开(不用写自动增长那列)) values(对应的值也是逗号隔开)要是每个字段都要插入32313133353236313431303231363533e4b893e5b19e31333433633438那就可以写成insert into 表名 ...

    展开全部

    insert into 表名(字段名逗号隔开(不用写自动增长那列)) values(对应的值也是逗号隔开)

    要是每个字段都要插入32313133353236313431303231363533e4b893e5b19e31333433633438那就可以写成

    insert into 表名 values(顺序写值,每个字段都要写(不包括自动增长列))

    into可以省略不写

    insert into语句可以有两种编写形式:

    1、无需指定要插入数据的列名,只需提供被插入的值即可:

    insert into table_name

    values (value1,value2,value3,...);

    2、需要指定列名及被插入的值:

    insert into table_name (column1,column2,column3,...)

    values (value1,value2,value3,...);

    7f249624d3d8068dc24610cd007e2151.png

    扩展资料

    SQL常用语句

    查所有数据库 show databases;

    创建数据库 create database db1;

    查看数据库 show create database db1;

    创建数据库指定字符集 create database db1 character set utf8/gbk

    删除数据库 drop database db1;

    使用数据库 use db1;

    创建表 create table t1(id int,name varchar(10));

    查看所有表 show tables;

    查看单个表属性 show create table t1;

    查看表字段 desc t1;

    创建表指定引擎和字符集 create table t1(id int,name varchar(10)) engine=myisam/innodb charset=utf8/gbk;

    展开全文
  • Mysql基本操作记录

    千次阅读 2021-01-19 11:55:01
    # DataBase:Mysql Tool:Navicat# 创建学生信息表create tableStudent (# 学号作为主键,varchar是可变长字符串SnoVARCHAR(20) primary key,# 使用default定义默认值, Sage int auto_increment 可设置自动递增...

    # DataBase:Mysql Tool:Navicat# 创建学生信息表create tableStudent (

    # 学号作为主键,varchar是可变长字符串

    SnoVARCHAR(20) primary key,

    # 使用default定义默认值, Sage int auto_increment 可设置自动递增

    Sageint default 18,

    SnameVARCHAR(20)

    )

    # 创建老师表create tableTeacher (

    TnoVARCHAR(20) primary key,

    TnameVARCHAR(20),

    TageINT,

    AcademyNoVARCHAR(20),

    # 创建外键约束constraint Fk_Teacher_Academy foreign key(AcademyNo) referencesAcademy(AcademyNo)

    )

    # 创建课程表create tableCourse (

    # 列级定义主键

    CnoVARCHAR(20) primary key,

    TnoVARCHAR(20),

    CnameVARCHAR(50)

    )

    # 添加约束alter table Course add constraint Fk_Course_Teacher foreign key(Tno) referencesTeacher(Tno);

    # 创建成绩表create tableSc (

    SnoVARCHAR(20),

    CnoVARCHAR(20),

    ScoreFLOAT,

    # 表级定义多个主键primary key(Sno, Cno),

    # 添加外键并级联操作constraint Fk_Sc_Student foreign key(Sno) references Student(Sno) on delete cascade on update cascade,

    # 默认删除跟修改都是restrictconstraint Fk_Sc_Course foreign key(Cno) referencesCourse(Cno)

    )

    # 查看创建的表select * fromStudent

    # 修改表操作,#增加一列alter tableTeacheradd column Tage VARCHAR(3);

    # 删除指定列alter tableTeacherdrop columnTname;

    # 修改某一列alter tableTeacher

    changecolumn Tage Tage int;

    # 删除表drop tableTeacher

    # Mysql常用五类约束类型:

    #not null:非空约束,指定某列不为空

    #unique: 唯一约束,指定某列和几列组合的数据不能重复

    #primary key:主键约束,指定某列的数据不能重复、唯一

    #foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据

    #check:检查,指定一个表达式,用于检验指定数据

    # 插入内容insert into student VALUES('2016211', 21, 'tom');

    # 插入指定内容,注意,主键不为空insert into student(Sno, Sname) VALUES('2016205', 'jerry');

    # 更新内容updatestudentset Sage = 25

    where Sno = '2016213'# 删除内容delete fromstudentwhere Sno = '2016218'# 选择并映射指定的列select Sname, Sage fromstudent

    # 去掉重复的行distinct

    select distinct Sage fromstudent

    # 使用where语句筛选数据select * from student where Sage > 21# 指定范围 (not)between .. and .. 包含等号 (也可以 where Sage >= 21 and Sage <= 25)select * from student where Sage between 21 and 25# 使用 in 查找属性值属于指定集合的元组select * from student where Sname in('tom','LiMing')

    # 字符匹配like, _代表任意单个字符,%代表任意长度select * from student where Sno like '2016211'

    select * from student where Sname like 'j%'

    select * from student where Sname like 't_m'# 转义字符 \, 如 \_hell 表示 _hellselect * from student where Sname like 'm\_ary'# 涉及空值的查询select * from student where Sage is NULL# 与:and 或:or

    select * from student where Sno like'2016%' and Sage < 21

    select * from student where Sno='2016215' or Sage >= 24# order by , DESC降序,ASC升序select * fromstudentwhere sno like'2016%'

    order by Sage desc# 常用聚集函数

    #COUNT():统计个数

    #sum():计算总和

    #avg():平均值

    #max():最大值

    #min():最小值

    # 统计不同的年龄个数select count(distinct Sage) fromstudent

    # 计算平均年龄select avg(Sage) 平均年龄 fromstudent

    # having的使用作用,类似于where,但可以对聚集函数使用,结合group by使用select AcademyName 学院, count(s.AcademyNo) 人数fromstudent s, Academy a

    # 等值连接where s.AcademyNo =a.AcademyNo

    # 通过学院代号分组group bys.AcademyNo

    # 筛选分组having count(s.AcademyNo) >= 2# 嵌套查询,例:查询选修了数据库原理的所有学生信息select * fromstudent

    # 如果学生学号在子查询的集合里面则判断为 truewhere Sno in(

    # 子查询获取的是一个包含所有学生学号的集合selects.Snofromsc s, course cwhere s.Cno = c.Cno and Cname = '数据库原理')select * fromstudent

    # 如果把集合直接给出,也就类似于上一个嵌套查询的效果where Sno in('2016211', '2016212')

    # 使用limit筛选数据 limit 开始下标(0开始) 条数

    # 筛选第1~2条数据select * from student limit 0,2;

    # 筛选前五条数据,相当于limit0,5

    select * from student limit 5;select * fromstudent

    #exists 返回true orfalsewhere exists(select * fromteacherwhere Tno = '1111')

    # 建立视图create viewstudent_viewas

    selectSno 学号, Sname 姓名fromstudent

    # 像基本表一样对视图查询select * fromstudent_view

    # 删除视图drop viewstudent_view

    # check短语使用,但Mysql中check不强制执行create tablepeople (

    Pidvarchar(20) primary key,

    Pnamevarchar(30),

    # 当然也可以跟PK等一样表级定义

    Psexvarchar(2) check (Psex in ('男', '女'))

    )

    # 授予权限:grant 权限1,权限2.. on 对象类型 对象名 to用户1,用户2...grant select,insert on table student touser1

    # 收回权限:revoke 权限1,权限2.. on 对象类型 对象名 from用户1,用户2...revoke delete on table student fromuser1

    # 函数以及变量的使用

    #create function 函数名([参数]) returns返回值类型

    #begin#declare变量名 变量类型...

    # sql语句;

    #return值;

    #end;create function getStudentAge(Id varchar(20)) returns INT

    begin# 声明一个变量以及对应类型declare age int;

    # 赋值或者set age= (select Sage from student where Sno =Id);select Sage from student where Sno = Id intoage;

    # 返回值returnage;end# 调用函数获取内容select getStudentAge('2016211');

    #drop function 函数名drop functiongetStudentAge1;

    # 存储过程的使用,类似函数

    #create procedure proc_getStudentAge(in变量名 类型,out(返回变量) 变量名 类型)

    #begin# Sql语句;

    #end

    create procedure proc_getStudentAge(Id varchar(20))begin

    select * from student where Sno =Id;end# in表示传入变量,out表示传出变量create procedure proc_getStudentAge2(in Id varchar(20), out age int)begin

    select Sage from student where Sno = Id intoage;end# 执行存储过程

    call proc_getStudentAge('2016211');

    # 执行存储过程获取数据并使用数据

    call proc_getStudentAge2('2016211', @age);select @age;

    # 删除存储过程drop procedureproc_getStudentAge;

    # 触发器的使用,new表示新数据,old表示原数据

    #create trigger 触发器名称 [before | after] [insert | update | delete]#on 表名 foreach row

    #begin# 一个或多个语句列表,列表里面的每条语句必须用分号隔开

    #end

    create trigger insert_stu after insert

    on student foreach rowbegin# 自变量declare age int;

    # new.Sno 是指新添元组的Snoset age = (select Sage from student where Sno =new.Sno);insert into sc values(new.Sno, '51', (100-age));end# 测试上述触发器insert into student values('2016221', 20, 'oppo', '17');

    # 删除触发器drop trigger insert_stu;

    展开全文
  • 之前的几节中讲了SQL的Select语句的一些基本用法,从这节开始我们以...这节我们来学习下怎样向这个表中添加一条新的数据。之前的课程中我们说过ADO有前期、后期两种引用方式,后期引用需要在程序开始用CreateObj...

    之前的几节中讲了SQL的Select语句的一些基本用法,从这节开始我们以Access数据库为例继续讲解SQL语句的一些其他例子。我们现在有一个名为“学校管理”的Access 2007数据库,里面有一个“学生信息”表,表里包括学生编号、姓名、性别等10个字段。这节我们来学习下怎样向这个表中添加一条新的数据。

    之前的课程中我们说过ADO有前期、后期两种引用方式,后期引用需要在程序开始用CreateObject方法建立Connection连接对象和字段集对象,前期引用需要在工具-引用中将“Microsoft ACtiveX Data Objects 2.x”打勾,之后就可以在程序中直接定义连接对象和字条集对象。下面讲的三种向数据库中插入数据的方法在前期引用和后期引用下都可以使用。

    方法一:Insert方法

    Sub 添加一条数据insert()

    '后期引用

    Dim cnn As Object, mypath, sql

    Set cnn = CreateObject("adodb.connection")

    mypath = ThisWorkbook.Path & "\学校管理.accdb"

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mypath

    sql = "INSERT INTO 学生信息 (学生编号,姓名,性别,出生日期,籍贯,住址,家庭电话,年级,班级,特长) VALUES('1000001','战战如疯','男','1900/1/1','山东','青岛','88888888','10年级','B班','VBA')"

    cnn.Execute sql

    cnn.Close

    Set cnn = Nothing

    End Sub

    我这里用的是Access 2007数据库,连接语句用的是Provider=Microsoft.ACE.OLEDB.12.0,如果你的数据库是2003版的那这里应该改为Provider=Microsoft.JET.OLEDB.4.0。Insert语法是Insert into 表名 (字段1,字段2...) values(值1,值2...),然后执行sql即cnn.Execute sql即可。

    方法二:AddNew方法

    Sub 添加一条记录ADDNEW()

    Dim cnn As Object, mypath, sql, rs

    Set cnn = CreateObject("adodb.connection")

    Set rs = CreateObject("ADODB.recordset")

    mypath = ThisWorkbook.Path & "\学校管理.accdb"

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mypath

    sql = "select * from 学生信息 where 0"

    'rs.Open sql, cnn, adOpenForwardOnly, adLockOptimistic

    rs.Open sql, cnn, 0, 3

    rs.AddNew Array("学生编号", "姓名", "性别", "出生日期", "籍贯", "住址", "家庭电话", "年级", "班级", "特长"), Array("1000007", "战战如疯", "男", "1900/1/1", "山东", "青岛", "88888888", "10年级", "B班", "VBA")

    rs.Close

    cnn.Close

    Set rs = Nothing

    Set cnn = Nothing

    End Sub

    第二种方法是AddNew,要想用此方法我们首先要建立一个记录集,这里我们用"select * from 学生信息 where 0"从数据库中得到一个记录集,这里where 0其实就是条件永远不成立,所以我们选择出来的记录集是个空集,我们是向这个记录集里面加入新的记录,这里加上where 0主要是考虑到效率的问题,不写也是可以的。这里建立记录集用的是Open方法,记录集的execute方法在这里是不适用的,这点要清楚。AddNew的语法是AddNew 字段数组,值数组。

    方法三:AddNew的另一种形式。

    AddNew除了上面我们所说的之外还有另一种形式。这里我顺便演示一下前期引用的用法,首先需要引用文章开头所说的组件,然后看代码

    Sub AddNew2()

    '前期引用

    Dim cnn As New ADODB.Connection

    Dim rs As New ADODB.Recordset

    Dim sql, mypath

    mypath = ThisWorkbook.Path & "\学校管理.accdb"

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mypath

    sql = "select * from 学生信息 where 0"

    rs.Open sql, cnn, adOpenForwardOnly, adLockOptimistic

    rs.AddNew

    rs.Fields("学生编号") = "100010"

    rs.Fields("姓名") = "战战如疯"

    rs.Fields("性别") = "男"

    rs.Update

    cnn.Close

    Set cnn = Nothing

    End Sub

    前面都一样,就是AddNew用法上是依次给每个字段名赋值,赋值之后要对字段集进行更新rs.Update。这里要注意到我们在打开字段集时用到的两个参数adOpenForwardOnly和adLockOptimistic与方法2中的0和3是完全等效的,这里之所以可以这么写是因为我们前期引用了组件,在这个组件中已经定义了这两个常量,而如果我们在后期引用中用这两个常量程序是无法识别的。

    关于这两个常量的意思可以稍加理解

    'adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。

    'adOpenKeyset 1 启动一个Keyset类型的游标。

    'adOpenDynamic 2 启动一个Dynamic类型的游标。

    'adOpenStatic 3 启动一个Static类型的游标。

    'adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法

    'adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。

    'adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。

    'adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作。

    具体可以问度娘,我也说不明白。

    展开全文
  • 在“成绩管理”数据库中,查询所有目前年龄是22岁的学生信息:学号、姓名和年龄,正确的命令组是()。A.CREATE VIEW AGE_LIST AS;SELECT 学号,姓名,YEAR(DATE())-YEAR(出生日期)AS年龄FROM学生SELECT 学号,姓名,...
  • 添加功能:添加一条学生记录或一门课程。 修改功能:可对某条记录进行修改。 排序功能:按学生总成绩或平均成绩进行排序。 保存功能:将学生记录保存。 读取功能:将保存在文件中的学生记录读取出来。 2、每一条记录...
  • INSERT INTO sc (sno, cno) VALUES ('201215123', '1')
  • 建立个ACCESS数据库,其中有学生信息表,编写几个C#控制台应用程序,实现对学生信息表的查询添加修改删除操作
  • 项目介绍 触发器,就是一种特殊的存储过程,触发器和存储过程一样是一个能够完成特定功能...当向stu表中进行增加删除修改学生信息时,同时要在stu_log表中添加一条操作日志 1、NEW与OLD关键字介绍 触发器用于监听对数据
  • 、’建立register.asp 代码如下: <%@ language=vbscript %> <html > <head> <title>注册页面</title> <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312...
  • 实验 设计数据库、创建数据库和数据库 实验目的 1.掌握在Kingbase中使用“数据库对象管理工具”和SQL命令创建数据库与修改数据库的方法。 2.掌握在Kingbase中使用“数据库对象管理工具”或者SQL命令创建数据表和...
  • 在图书表中新增一条记录:Java核心技术、作者“Cay S. Horstman”,价格56.43,分类为“计算机技术” student学生表中,字段有姓名name,年龄age,要求查询姓张,并且年龄在18到25岁之间的学生 查询article文章表...
  • applay表中:这里面可以有多个学生的申请,每个学生可以有多个申请,时间都不同,我需要得到这个学生中gotime最大的这数据 1. 得到所有xh的最大gotime(去重) SELECT xh,max(gotime) AS gy FROM apply ...
  • 包含数据库sql文件,带有增删改查学生信息功能,还有分页功能,可运行出来,亲测
  • (2)查询功能:可根据学号、姓名等信息对已添加学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (3)显示功能:可显示当前系统中所有学生的记录,每记录占据行。 (4...
  • 熟悉MySQL数据库的可能知道,如果你想要批量插入一些数据,一条INSERT语句插入批量数据的写法为: INSERT INTO 表名 VALUES([列值],[列值])), VALUES([列值],[列值])), VALUES([列值],[列值])); 即insert into ...
  • (4)查询功能:可根据学号、姓名等信息对已添加学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (5)显示功能:可显示当前系统中所有学生的记录,每记录占据行。 (6...
  • (1)添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所要求添加的类别,要求编号唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 (2)显示功能:可显示当前系统中的所有...
  • 学生信息管理系统

    2018-07-05 15:06:08
    (2)查询功能:可根据学号、姓名等信息对已添加学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (3)显示功能:可显示当前系统中所有学生的记录,每记录占据行。 (4)编辑...
  • 用ADO添加数据库记录

    2010-07-02 09:03:16
    用ADO添加数据库记录 用ADO添加数据库记录 用ADO添加数据库记录 用ADO添加数据库记录
  • SQL知识点--插入记录

    千次阅读 多人点赞 2022-01-15 16:16:21
    INSERT INTO 语句用于向表中插入新记录,INSERT INTO 语句可以有两种编写形式。 第种形式无需指定要插入数据的列名,只需提供被插入的值即可: INSERT INTOtable_name(表名称) VALUES (value1,value2,value3,...
  • 数据库上机课实验题

    千次阅读 2021-09-30 10:07:46
    注 此处表数据用的是实验二的表数据 实验代码 1、INSERT基本语句 (1)向student表中插入两完整的学生记录,要求每列都给出个合理的值。 INSERT INTO student VALUES (201215031,'王五','男',20,'CS'),...
  • (4)查询功能:可根据学号、姓名等信息对已添加学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (5)显示功能:可显示当前系统中所有学生的记录,每记录占据行。 (6...
  • 在对Apply和Student进行连表查询时发现association查询多条记录,只返回最后一条,CompanyBoxExt是作为Apply的扩展类 解决方法: 参考链接:https://blog.csdn.net/qq_41541619/article/details/80556988 ...
  • 如何新增更新和删除学生成绩记录--目录前言1.1 新增记录1.2更新记录3.删除记录小结 前言 在个数据库中,特别是OLTP(On-Line Transaction Processing 联机事务处理过程)的系统中,数据路记录的增删改查几乎是时刻...
  • 前两天胜利日放假,把以前用java写的学生信息管理系统用python重新写了遍,以便于帮助python的学习。好了,废话不多说,首先进行需求分析,下面是我根据需求画的系统结构图:纯手工制图。。。。。画的不好敬请谅解...
  • 设计并实现学生信息管理系统 ◆建立学生管理系统信息,信息包含学号、姓名、性别、性别、地址...第九个模块——List()实现功能: 能够分页显示数据记录集中的所有记录(每按下次回车键,显示下 10条记录数据)
  • (2)查询功能:可根据学号、姓名等信息对已添加学生记录进行查询先调用search_list()函数,根据姓名、学号、课程名称,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (3)显示功能:可...
  • MySql批量插入添加数据/单插入添加数据

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,746
精华内容 22,298
关键字:

添加一条学生记录