精华内容
下载资源
问答
  • 要求:有三份源数据文件,如下所示,请根据需求,编写HQL语句

    要求:有三份源数据文件,如下所示,请根据需求,编写HQL语句
    文件1: 学生表student <学号sid,姓名sname,性别ssex,年龄sage,系 department>

    95001,李勇,男,20,CS
    95002,刘晨,女,19,IS
    95003,王敏,女,22,MA
    95004,张立,男,19,IS
    95005,刘刚,男,18,MA
    95006,赵丽,女,20,CS
    

    文件2: 成绩表score <学生编号sid,课程编号cid,成绩sscore >

    95001,1,81
    95001,2,85
    95001,3,88
    95001,4,70
    95002,1,90
    95002,2,80
    95002,3,90
    95002,4,80
    95003,1,70
    95003,2,78
    95003,3,65
    95003,4,65
    95004,1,70
    95004,2,90
    95004,3,85
    95004,4,90
    95005,1,70
    95005,2,90
    95005,3,70
    95005,4,90
    95006,1,70
    95006,2,90
    95006,3,70
    95006,4,90
    

    文件3: 课程表course<课程编号cid,课程名cname>

    1,数据库
    2,数学
    3,信息系统
    4,操作系统
    

    1.创建三个外部表,并分别给外部表加载数据

    #1.切换到指定位置
    cd /export/data/student.txt
    #2.将3个文件上传到指定位置
    rz
    #3.创建3张表
    #3.1创建student表
    create external table if not exists student(
    sid   int,
    sname string,
    ssex  string,
    sage  int,
    department string)
    row format delimited fields terminated by ',';
    #3.2创建score表
    create external table if not exists score(
    sid int,
    cid int,
    sscore int)
    row format delimited fields terminated by ',';
    #3.3创建course表
    create external table if not exists course(
    cid int,
    cname string)
    row format delimited fields terminated by ',';
    #4.加载数据
    #4.1加载数据到student表
    load data local inpath '/export/data/student.txt' into table student;
    #4.2加载数据到score表
    load data local inpath '/export/data/score.txt' into table score;
    #4.3加载数据到course表
    load data local inpath '/export/data/course.txt' into table course;
    

    2.查询各课的平均成绩,要求对平均成绩降序排序,并且小数保留2位,考虑四舍五入

    HQL语句:

    SELECT a.cname, ROUND(AVG(b.sscore), 2) AS avgscore
    FROM course a
    join score b
    on a.cid = b.cid
    GROUP BY a.cname
    ORDER BY avgscore DESC;
    

    3.查询CS系中数学成绩最高的学生的信息,包括学生的学号和名字

    HQL语句:

    SELECT e.sid,e.sname
    FROM (
    SELECT d.sid as sid,d.sname as sname, dense_rank() over (ORDER BY d.ss DESC) AS r
    FROM (
    SELECT DISTINCT a.sid as sid,a.sname as sname ,b.sscore AS ss
    FROM student a
    JOIN score b ON a.sid = b.sid AND a.department = 'CS'
    JOIN course c ON b.cid = c.cid AND c.cname = '数学') d) e
    WHERE e.r < 2;
    

    4.查询数学成绩比数据库成绩高的学生信息和分数

    HQL语句:

    select g.*,f.s1,f.s2
    from student g,(
    select sid,s1,s2 from(
    select distinct a.sid as sid,a.sscore as s1,b.sscore as s2
    from score a
    join score b
    on a.sid=b.sid
    join course c  on c.cid=a.cid and c.cname='数学'
    join course d  on b.cid=d.cid and d.cname='数据库')e
    where s1>s2)f
    where f.sid=g.sid;
    

    5.求每个课程分数最高的前三名学生(考虑分数相同的情况)

    HQL语句:

    select * from(
    select b.cid,a.sid,dense_rank() over(partition by b.cid order by b.sscore desc) as r
    from student a,score b
    where a.sid=b.sid)c
    where r<=3;
    

    6.查询各课的学生人数
    HQL语句:

    select b.cname,count(*) as num
    from score a
    join course b
    on a.cid=b.cid
    group by b.cname;
    

    7.查询每个学生的总成绩,并对总成绩进行降序排序,要求显示字段:学生名字,学生学号,学生总成绩
    HQL语句:

    select a.sname,a.sid,sum(b.sscore) as sumscore
    from student a
    join score b
    on a.sid=b.sid
    group by a.sname,a.sid
    order by  sumscore desc;
    

    8.求总课程平均分最高的前三名学生
    HQL语句:

    select sname,sid,avgscore
    from (
    select sname, sid,avgscore,dense_rank() over (order by avgscore) as r
    from (
    select a.sname, a.sid, avg(b.sscore) as avgscore
    from student a
    join score b
    on a.sid = b.sid
    group by a.sname, a.sid) c
    )d where d.r<=3
    order by avgscore desc;
    
    展开全文
  • 文章目录学习笔记任务过程第一步:分析需求第二步:新建数据库第三步:新建1.Grade2.Student3.subject第三步:插入数据1.Grade2.Student3.subject第四步:查询测试1.查询学号1001的学生所有信息2....

    学习笔记

    ·数据库表的创建及查询

    任务过程

    第一步:分析需求

    每张表的 字段、类型、 约束等;

    1. 需要创建学生表—student,年级表—Grade,学科表—subject
    2. 学生表中字段有studentno ( varchar )( pk ),gradeid( int ),name ( varchar )(not null) , sex(char) ,age( int ) ,city ( varchar ) ,phone ( int )
    3. 年级表中字段有gradeid ( int ) (pk),gradename ( varchar )(unique)
    4. 学科表中字段有subjectid ( int )( pk ),subjectname ( varchar )( notnull ), statyhour ( int ),gradeid( itn )

    第二步:新建数据库

    ​ 数据库名称 java

    create database java;
    

    第三步:新建表

    1.Grade表

    create table Grade(
    	gradeid int (5) primary key,
    	gradename varchar(20) unique
    );
    

    2.Student表

    create table Student(
    	studentno varchar(10) primary key,
    	gradeid int(5) ,
    	name varchar(10) not null,
    	sex char(3) not null,
    	age int(3) not null,
    	city varchar(30) not null,
    	phone int (20) not null,
    	constraint Student_gradeid_fk foreign key(gradeid) references Grade(gradeid)
    );
    

    3.subject表

    create table subject(
    	subjectid int(3) primary key,
    	subjectname varchar(20) not null,
    	statyhour int(10) ,
    	gradeid int(3),
    	constraint subject_gradeid_fk foreign key(gradeid) references Grade(gradeid)
    );
    

    第三步:插入数据

    1.Grade表

    insert into Grade(gradeid,gradename) values(1,"java33");
    insert into Grade(gradeid,gradename) values(2,"java34");
    insert into Grade(gradeid,gradename) values(3,"java35");
    

    2.Student表

    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1001",1,"王可","男",20,"北京市石景山",12312344);
    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1002",1,"凌洋","女",20,"湖南省长沙",1244);
    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1003",2,"杨阳","男",20,"上海市长虹区",342344);
    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1004",2,"姜北","男",20,"河北省邯郸市",876554);
    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1005",3,"张三","女",20,"山东省济南市",234344);
    insert into student(studentno,gradeid,name,sex,age,city,phone) values("1006",3,"王五","男",20,"湖州德清",7895674);
    

    3.subject表

    insert into subject(subjectid,subjectname,statyhour,gradeid)values(1,"Javase",40,3);
    insert into subject(subjectid,subjectname,statyhour,gradeid)values(2,"HTML和CSS网页技术",60,2);
    insert into subject(subjectid,subjectname,statyhour,gradeid)values(3,"mysql",70,1);
    

    第四步:查询测试

    1.查询学号为1001的学生所有信息

    select * from student where studentno="1003";
    

    在这里插入图片描述

    2.根据班级名称查询每个班级有哪些学生

    select gradename,name from Grade left outer join Student on Grade.gradeid=Student.gradeid;
    

    在这里插入图片描述

    3.根据 学生学号 查询学了哪些课程

    select studentno,name,gradename from Student inner join Grade on Grade.gradeid=Student.gradeid where studentno=1002; 
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31qsIFzn-1575379512201)(1004.png)]
    在这里插入图片描述

    4.每个年级的学生所学的课程

    select Grade.gradename,Student.name, subject.subjectname from 
    	Grade inner join Student on Grade.gradeid = Student.gradeid 
    	inner join subject on Grade.gradeid=subject.gradeid;
    

    在这里插入图片描述

    在这里插入图片描述

    学习

    一:三范式

    解释: 
    1NF:原子性 字段不可再分,否则就不是关系数据库; ------------字段不可分; 
    2NF:唯一性 要求数据库表中的每个实例或行必须可以被惟一的区分; -----有主键,非主键字段依赖主键,不能部分依赖;
    3NF:每列都与主键有直接关系,不存在传递依赖; -------非主键字段不能相互依赖; 
    

    二:主键、外键和索引的区别

    定义:
    主键:唯一标识一条记录,不能有重复,不允许为空。
    外键:表的外键是另一表的主键,外键是可以有重复的,可以是空值。
    索引:该字段没有重复值,但可以有一个空值。
    
    作用:
    主键:用来保证数据完整性
    外键:用来和其他表建立联系,用于保持数据的一致性。
    索引:用来提高查询排序的速度
    
    个数:
    主键:主键只能有一个。
    外键:一个表可以有多个外键。
    索引:一个表可以有多个唯一索引。
    
     -- 外键约束
      constraint A表_id字段_fk foreign key(id字段) references B表(id字段);
    如:
    constraint subject_gradeid_fk foreign key(gradeid) references Grade(gradeid);
    subject表中的gradeid 是 Grade表中的主键,所以gradeid是subject的外键。
    

    复习

      1. 建库

        create database practice; – 表示创建名字为practice的数据库
        drop database practice; – 表示删除名字为practice的数据库

      2. 建表

        create table 表名 (
        字段名1 数据类型,
        字段名2 数据类型,
        字段名3 数据类型,
        … …
        );

      3. 向表格中增加字段

        alter table 表名 add 字段名 数据类型;

      4. 实现表格中字段的改变

        alter table 表名 change 旧字段名 新字段名 数据类型;

      5. 实现表格中字段的删除

        alter table 表名 drop 字段名;

      6. 实现表格名称的重命名

        alter table 表名 rename to 新的表名;

      7. 新增数据

        insert into 表名 [(字段名1, 字段名2, …)] values (值1, 值2, …);

      8. 更改数据

        update 表名 set 字段名1 = 值1 [where 条件];

      9. 删除数据

        delete from 表名 [where 条件];

      10. 基本查询
        select 字段名1, 字段名2, … from 表名;

      11. select [distinct] 字段名1 [as 别名1], 字段名2 [as 别名2], … from 表名
        [where 查询条件]
        [group by 字段名]
        [having 条件]
        [order by 字段名1 asc或desc];

        [distinct]--------去重

        [as …]---------别名

        [group]--------分组查询

        [having 条件]-------------分组后过滤
        [order by 字段名1 asc或desc];------------字段排序

      12. between… and …、

      13. 按照条件进行模糊查询 …where first_name like ‘%拉’;

      14. 内连接:

        select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 inner join 表名2 on 连接条件;

      15. 左外连接:

        select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 left outer join 表名2 on 连接条件;

      16. 右外链接:

        ​ select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 right outer join 表名2 on 连接条件;

      17. 分页查询

       select 字段名1 [as 别名1], 字段名2 [as 别名2], ... from 表名    limit 初始位置(下标默认从0开始), 记录的条数;
      


    join 表名2 on 连接条件;

    1. 右外链接:

      ​ select [表名1.]字段名1, [表名2.]字段名2, … from 表名1 right outer join 表名2 on 连接条件;

    2. 分页查询

       select 字段名1 [as 别名1], 字段名2 [as 别名2], ... from 表名    limit 初始位置(下标默认从0开始), 记录的条数;
    


    展开全文
  • 学生课程表查询和access数据库建立连接,显示一周内的日期。你可以打开数据库进行修改。(VB6.0代码编写)
  • 一个多数据源的demo项目例介绍 1.项目搭建 1.1.Maven依赖 <dependency> <groupId>com.xiaoqiang.tool.general.excel</groupId> <artifactId>general-export-tool</artifactId&g...

    本文主要通用导出工具的使用,结合前一篇介绍
    通用导出Excel任意表数据工具

    以一个多数据源的demo项目为例介绍

    DEMO项目源码地址: 传送门

    1.项目搭建

    1.1.Maven依赖

     <dependency>
       <groupId>com.xiaoqiang.tool.general.excel</groupId>
       <artifactId>general-export-tool</artifactId>
       <version>1.0.0</version>
    </dependency>
    

    1.2.配置信息

    示例项目: 数据源 3 存储 gen_excel任务表与模板表,这里只贴了一下重要的配置,详见源码

    server.port=8083
    
    #数据源 >> 3 >>  配置
    #连接地址
    spring.datasource.test3.url=jdbc:mysql://localhost:3306/gen_excel_demo?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&useSSL=false
    #用户名
    spring.datasource.test3.username=root
    #密码
    spring.datasource.test3.password=root
    
    
    # redis config
    redis.host=xxxx
    redis.port=6699
    redis.password=xxxx
    redis.connectTimeout=10000
    
    
    oss.accessId=xxx
    oss.accessKey=xxxxx
    oss.endpoint=oss-cn-hangzhou.aliyuncs.com
    oss.bucket=gen-excel
    oss.defaultDir=excel/
    
    

    1.3.数据源配置

    3.1业务数据源
    注:业务数据源配置示例

    @Configuration
    @MapperScan(basePackages = {"com.example.mapper.db1", GenExcelMapperConstant.MAPPER_COMMON_PACKAGE}, sqlSessionTemplateRef = "test1SqlSessionTemplate")
    public class DataSource1Config {
    
        /**
         * 数据源配置
         * 使用的连接池是 DruidDataSource
         */
        @Primary
        @Bean(name = "test1DataSource")
        @Qualifier("test1DataSource")
        @ConfigurationProperties(prefix = "spring.datasource.test1")
        public DataSource testDataSource() {
            //这里指定使用类型 -- 阿里DruidDataSource 连接池
            return DataSourceBuilder.create().type(DruidDataSource.class).build();
        }
    
    
        /**
         * 创建 SqlSessionFactory 工厂
         */
        @Primary
        @Bean(name = "test1SqlSessionFactory")
        public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            bean.setDataSource(dataSource);
            //数据源
            bean.setDataSource(dataSource);
    
            //mapper文件 扫描地址
            Resource[] resources = GenExcelMapperLocationUtil.init()
                    //当前数据源-业务xml地址
                    .addMapperLocations("classpath:mybatis/mapper/db1/*.xml")
                    //gen-excel 公共导出xml地址配置
                    .addMapperLocations(GenExcelMapperConstant.XML_COMMON_LOCATIONS)
                    .build();
    
            //mapper 地址
            bean.setMapperLocations(resources);
            return bean.getObject();
        }
    
        /**
         * 事务管理
         */
        @Primary
        @Bean(name = "test1TransactionManager")
        public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        /**
         * MyBatis提供的持久层访问模板化的工具
         * 线程安全,可通过构造参数或依赖注入SqlSessionFactory实例
         */
        @Primary
        @Bean(name = "test1SqlSessionTemplate")
        public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    
    

    需要将配置引入
    image.png

    3.2 gen-excel数据源
    注:任务表与模板表所在数据源

    @Configuration
    @MapperScan(basePackages = {"com.example.mapper.db3", GenExcelMapperConstant.MAPPER_ROOT_PACKAGE}, sqlSessionTemplateRef = "test3SqlSessionTemplate")
    public class DataSource3Config {
    
        /**
         * 数据源配置
         * 使用的连接池是 DruidDataSource
         */
        @Bean(name = "test3DataSource")
        @ConfigurationProperties(prefix = "spring.datasource.test3")
        public DataSource test3DataSource() {
            return DataSourceBuilder.create().type(DruidDataSource.class).build();
        }
    
    
        /**
         * 创建 SqlSessionFactory 工厂
         */
        @Bean(name = "test3SqlSessionFactory")
        public SqlSessionFactory test3SqlSessionFactory(@Qualifier("test3DataSource") DataSource dataSource) throws Exception {
            SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
            //数据源
            bean.setDataSource(dataSource);
    
            //mapper文件 扫描地址
            Resource[] resource = GenExcelMapperLocationUtil.init()
                    //项目业务xml 地址
                    //.addMapperLocations("classpath:mybatis/mapper/db3/*.xml")
                    //gen-excel xml地址配置
                    .addMapperLocations(GenExcelMapperConstant.XML_ROOT_LOCATIONS)
                    .build();
    
            //mapper 地址
            bean.setMapperLocations(resource);
            return bean.getObject();
        }
    
    
        /**
         * 事务管理
         */
        @Bean(name = "test3TransactionManager")
        public DataSourceTransactionManager test3TransactionManager(@Qualifier("test3DataSource") DataSource dataSource) {
            return new DataSourceTransactionManager(dataSource);
        }
    
        /**
         * MyBatis提供的持久层访问模板化的工具
         * 线程安全,可通过构造参数或依赖注入SqlSessionFactory实例。
         */
        @Bean(name = "test3SqlSessionTemplate")
        public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
            return new SqlSessionTemplate(sqlSessionFactory);
        }
    
    }
    

    image.png

    1.4.Redis配置

    @Data
    @Configuration
    @ConfigurationProperties(prefix = "redis")
    public class RedisProperty {
    
        private String host;
    
        private int port;
    
        private int database = 0;
    
        private String password;
    
        private Integer connectTimeout;
    
    }
    
    
    
    @Configuration
    public class SpringRedisConfig {
    
        @Autowired
        private RedisProperty redisProperty;
    
        @Bean
        public RedisCache redisCache() {
            RedisCache redisCache = new RedisCache();
            redisCache.setHost("redis://" + redisProperty.getHost() + ":" + redisProperty.getPort());
            redisCache.setPassword(redisProperty.getPassword());
            redisCache.setDatabase(redisProperty.getDatabase());
            redisCache.setConnectTimeout(redisProperty.getConnectTimeout());
            return redisCache;
        }
    }   
    

    1.5.公共导出-数据源与oss关系配置

    注:多数据源项目适配,需要将使用哪一个数据源做导出配置好

    @Configuration
    public class GenExcelConfig {
    
        
        @Autowired
        @Qualifier("test1SqlSessionFactory")
        private SqlSessionFactory test1SqlSessionFactory;
        @Autowired
        @Qualifier("test2SqlSessionFactory")
        private SqlSessionFactory test2SqlSessionFactory;
    
        @Autowired
        @Qualifier("test3SqlSessionFactory")
        private SqlSessionFactory test3SqlSessionFactory;
    
        @Autowired
        private OssProperty ossProperty;
        
        /**
         * 数据源与SqlSessionFactory关系配置
         * 将数据源添加到配置
         */
        @Bean
        public GenExcelDataSourceConfig genExcelSqlSessionFactory() {
            return GenExcelDataSourceConfig.initDefault(16)
                    //数据库编码 对应 export_template_info表 >  db_code
                    .addSqlSessionFactory("DB1001", test1SqlSessionFactory)
                    .addSqlSessionFactory("DB1002", test2SqlSessionFactory)
                    .addSqlSessionFactory("DB1003", test3SqlSessionFactory);
        }
        
        /**
         * oss 配置
         */
        @Bean
        public GenExcelOssProperty genExcelOssProperty() {
            GenExcelOssProperty genExcelOssProperty = new GenExcelOssProperty();
            genExcelOssProperty.setAccessId(ossProperty.getAccessId());
            genExcelOssProperty.setAccessKey(ossProperty.getAccessKey());
            genExcelOssProperty.setBucket(ossProperty.getBucket());
            genExcelOssProperty.setDefaultDir(ossProperty.getDefaultDir());
            genExcelOssProperty.setEndpoint(ossProperty.getEndpoint());
            return genExcelOssProperty;
        }
        
    }
    

    6.启动类
    注意:@ComponentScan(“com.tool.general.excel”)

    /**
     * 启动类
     *
     * @author mengqiang
     * @date 2019-03-25
     */
    @ComponentScans({@ComponentScan("com.tool.general.excel")})
    @SpringBootApplication
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    2.项目实战

    2.1初始化测试数据

    注:一下测试表,与通用导出组件无关
    学生测试表

    CREATE TABLE `student_info` (
      `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
      `student_id` varchar(32) NOT NULL COMMENT '学生ID',
      `class_id` varchar(32) NOT NULL COMMENT '班级ID',
      `name` varchar(32) NOT NULL DEFAULT '' COMMENT '名称',
      `sex` tinyint(4) NOT NULL DEFAULT '0' COMMENT '性别 0-未知, 1-男,2-女 ',
      `age` tinyint(4) NOT NULL DEFAULT '0' COMMENT '年龄',
      `school_date` int(10) NOT NULL COMMENT '入学时间 yyyyMMdd',
      `progress_rate` decimal(10,2) NOT NULL COMMENT '成绩进步率 示例 2.01',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE KEY `uniq_student_id` (`student_id`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
    
    -- 初始化一批测试数据
    INSERT INTO `student_info`
    (`id`, `student_id`, `class_id`, `name`, `sex`, `age`, `school_date`, `progress_rate`) 
    VALUES 
    (1, 'S3001', 'C1001', '小明', 1, 10, 20190930, 0.90),
    (2, 'S3002', 'C1001', '小华', 1, 11, 20190929, 0.80),
    (3, 'S3003', 'C1001', '小东', 1, 10, 20190930, 0.93),
    (4, 'S3004', 'C1001', '小红', 2, 11, 20190929, 0.93),
    (5, 'S3005', 'C1001', '小白', 1, 9, 20191001, 0.80),
    (6, 'S3006', 'C1001', '小小', 2, 10, 20191001, 0.97),
    (7, 'S3007', 'C1001', '小米', 2, 10, 20190929, 0.93),
    (8, 'S3008', 'C1001', '小溪', 1, 11, 20191001, 0.80),
    (9, 'S3009', 'C1001', '小北', 1, 10, 20190930, 0.95),
    (10, 'S3010', 'C1001', '小夏', 2, 11, 20190930, 0.8),
    (11, 'S3011', 'C1002', '大明', 1, 10, 20191001, 0.9),
    (12, 'S3012', 'C1002', '大华', 1, 10, 20190930, 0.9);
    

    老师测试表

    CREATE TABLE `teacher_info` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
      `teacher_id` varchar(32) NOT NULL COMMENT '班主任ID',
      `name` varchar(32) NOT NULL DEFAULT '' COMMENT '名称',
      `job_title` varchar(255) NOT NULL DEFAULT '' COMMENT '职称',
      `teacher_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '教师类型 1-代课老师 2-班主任',
      `phone` varchar(20) NOT NULL DEFAULT '' COMMENT '联系电话',
      `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱地址',
      `address` varchar(200) NOT NULL DEFAULT '' COMMENT '家庭住址',
      `progression_rate` decimal(10,4) NOT NULL COMMENT '升学率',
      `profession_date` int(10) NOT NULL COMMENT '入教时间 格式:yyyyMMdd',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE KEY `uniq_teacher_id` (`teacher_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='老师表';
    
    -- 初始化测试数据
    INSERT INTO `teacher_info`(`id`, `teacher_id`, `name`, `job_title`, `teacher_type`, `phone`, `email`, `address`, `progression_rate`, `profession_date`) 
    VALUES
    (1, 'T2001', '张三', '普通班主任', 1, '13235727262', '123@163.com', '浙江省杭州市西湖区', 0.9870, 20170809),
    (2,'T2002', '李四', '优秀班主任', 1, '15264447382', '456@126.com', '浙江省杭州市拱墅区', 0.8890, 20160809),
    (3,'T2003', '王五', '最佳班主任', 1, '18776549832', '789@126.com', '浙江省杭州市滨江区', 0.9980, 20150809);
    

    班级表

    CREATE TABLE `class_info` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
      `class_id` varchar(32) NOT NULL COMMENT '班级ID',
      `head_teacher_id` varchar(32) NOT NULL COMMENT '班主任ID',
      `name` varchar(32) NOT NULL COMMENT '名称',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
      PRIMARY KEY (`id`) USING BTREE,
      UNIQUE KEY `uniq_class_id` (`class_id`) USING BTREE
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='班级表';
    
    -- 初始化测试数据
    INSERT INTO `class_info`(`id`, `class_id`, `head_teacher_id`, `name`) 
    VALUES 
     (1, 'C1001', 'T2001', '一班'),
     (2, 'C1002', 'T2002', '二班'),
     (3, 'C1003', 'T2003', '三班');
    

    2.2创建模板

    初始化模板数据,模板表配置介绍 传送门

    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (1, '10001', 'T1001', 'DB1001', '0', '学生信息', 1, 1, 'student_id|name|sex|age|school_date', 'student_info', '学生信息列表', 'student_id?title=学生ID|name?title=学生名称|sex?title=性别&replace=0_未知,1_男,2_女|age?title=年龄|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd', '<if test=\"classId != null and classId!=\'\' \">\n AND class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>', '', 100, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 17:23:37');
    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (2, '10002', 'T1001', 'DB1001', '0', '学生与班级信息', 1, 1, 'a.student_id|a.`name` student_name|a.sex|a.age|a.school_date|b.`name` class_name|c.`name` teacher_name', '  student_info a INNER JOIN class_info b ON a.class_id = b.class_id INNER JOIN teacher_info c ON b.head_teacher_id = c.teacher_id ', '学生与班级信息列表', 'student_id?title=学生ID|student_name?title=学生名称|sex?title=性别&replace=0_未知,1_男,2_女|age?title=年龄|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd|teacher_name?title=班主任名称|class_name?title=班级名称', '<if test=\"classId != null\">\n AND a.class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND a.name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>\n<if test=\"teacherName != null and teacherName != \'\' \">\n AND c.name LIKE CONCAT(#{teacherName,jdbcType=VARCHAR},\'%\')\n</if>', '', 150, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 16:17:50');
    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (3, '10003', 'T1001', 'DB1001', '0', '学生与班级信息模板导出', 1, 2, 'a.student_id|a.`name` student_name|a.sex|a.age|a.school_date|b.`name` class_name|c.`name` teacher_name', '  student_info a INNER JOIN class_info b ON a.class_id = b.class_id INNER JOIN teacher_info c ON b.head_teacher_id = c.teacher_id ', '学生与班级模板导出列表', 'student_id|student_name|sex?replace=0_未知,1_男,2_女|age|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd|teacher_name|class_name', '<if test=\"classId != null\">\n AND a.class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND a.name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>\n<if test=\"teacherName != null and teacherName != \'\' \">\n AND c.name LIKE CONCAT(#{teacherName,jdbcType=VARCHAR},\'%\')\n</if>', '', 150, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/学生与班级信息列表模板01.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:05');
    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (4, '10004', 'T1001', 'DB1001', '0', '教职工个人信息', 1, 3, 'teacher_id|name|profession_date|job_title|phone,email|address|progression_rate', 'teacher_info', '教职工个人信息表', 'teacher_id|name|profession_date?dateFormat=yyyyMMdd_yyyy-MM-dd|job_title|phone|email|address|progression_rate?numFormat=multiply_100,format_2', '<if test=\"teacherId != null and teacherId!=\'\' \">\n AND teacher_id = #{teacherId,jdbcType=VARCHAR}\n</if>', '', 100, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/教职工个人信息表导出模板.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:13');
    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (5, '10005', 'T1001', 'DB1001', '10006', '班级全员信息-老师', 1, 4, 'b.name class_name|a.name teacher_name|a.progression_rate|a.phone|a.email', 'teacher_info  a INNER JOIN class_info b on b.head_teacher_id =a.teacher_id\n', '班级全员信息', 'class_name|teacher_name|progression_rate?numFormat=multiply_100,format_2|phone|email', 'class_id = #{classId,jdbcType=VARCHAR}', '', 100, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/班级全员信息模板.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:15');
    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) VALUES (6, '10006', 'T1001', 'DB1001', '0', '班级全员信息-学生', 1, 4, 'student_id|name student_name|sex|age|school_date', 'student_info', '班级全员信息', 'student_id|student_name|sex?replace=0_未知,1_男,2_女|age|school_date?dateFormat=yyyyMMdd_yyyy-MM-dd', 'class_id = #{classId,jdbcType=VARCHAR}', '', 100, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 17:28:44');
    

    2.3导出测试

    2.3.1公共导出触发接口
    http://127.0.0.1:8083/gen-excel/export?templateId=10005&platformId=T1001&paramContent={“classId”:“C1002”}

    image.png

    2.3.2根据任务ID-获取下载任务结果接口
    http://127.0.0.1:8083/gen-excel/getTask?taskId=201912252117451834643986103
    image.png

    2.3.1普通列表导出

    示例图->学生列表
    image.png
    导出模板配置

    INSERT INTO `export_template_info`(`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) 
    VALUES 
    (1, '10001', 'T1001', 'DB1001', '0', '学生信息', 1, 1, 'student_id|name|sex|age|school_date', 'student_info', '学生信息列表', 'student_id?title=学生ID|name?title=学生名称|sex?title=性别&replace=0_未知,1_男,2_女|age?title=年龄|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd', '<if test=\"classId != null and classId!=\'\' \">\n AND class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>', '', 100, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 17:23:37');
    

    请求示例

    http://127.0.0.1:8083/gen-excel/export?templateId=10001&platformId=T1001&paramContent={"classId":"C1001"}
    

    2.3.2表关联列表导出


    示例图->学生列表
    image.png

    导出模板配置

    INSERT INTO `export_template_info`
    (`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) 
    VALUES 
    (2, '10002', 'T1001', 'DB1001', '0', '学生与班级信息', 1, 1, 'a.student_id|a.`name` student_name|a.sex|a.age|a.school_date|b.`name` class_name|c.`name` teacher_name', '  student_info a INNER JOIN class_info b ON a.class_id = b.class_id INNER JOIN teacher_info c ON b.head_teacher_id = c.teacher_id ', '学生与班级信息列表', 'student_id?title=学生ID|student_name?title=学生名称|sex?title=性别&replace=0_未知,1_男,2_女|age?title=年龄|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd|teacher_name?title=班主任名称|class_name?title=班级名称', '<if test=\"classId != null\">\n AND a.class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND a.name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>\n<if test=\"teacherName != null and teacherName != \'\' \">\n AND c.name LIKE CONCAT(#{teacherName,jdbcType=VARCHAR},\'%\')\n</if>', '', 150, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 16:17:50');
    

    请求示例

    http://127.0.0.1:8083/gen-excel/export?templateId=10002&platformId=T1001&paramContent={"classId":"C1001"}
    

    2.3.3根据Excel模板列表导出

    excel模板图示
    image.png
    excel模板下载地址

    示例图->学生列表
    image.png

    导出模板配置

    INSERT INTO `export_template_info`
    (`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`)
    VALUES 
    (3, '10003', 'T1001', 'DB1001', '0', '学生与班级信息模板导出', 1, 2, 'a.student_id|a.`name` student_name|a.sex|a.age|a.school_date|b.`name` class_name|c.`name` teacher_name', '  student_info a INNER JOIN class_info b ON a.class_id = b.class_id INNER JOIN teacher_info c ON b.head_teacher_id = c.teacher_id ', '学生与班级模板导出列表', 'student_id|student_name|sex?replace=0_未知,1_男,2_女|age|school_date?title=入学时间&dateFormat=yyyyMMdd_yyyy-MM-dd|teacher_name|class_name', '<if test=\"classId != null\">\n AND a.class_id = #{classId,jdbcType=VARCHAR}\n</if>\n<if test=\"studentName != null and studentName != \'\' \">\n AND a.name LIKE CONCAT(#{studentName,jdbcType=VARCHAR},\'%\')\n</if>\n<if test=\"teacherName != null and teacherName != \'\' \">\n AND c.name LIKE CONCAT(#{teacherName,jdbcType=VARCHAR},\'%\')\n</if>', '', 150, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/学生与班级信息列表模板01.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:05');
    

    请求示例

    http://127.0.0.1:8083/gen-excel/export?templateId=10003&platformId=T1001&paramContent={}
    

    2.3.4根据Excel模板导出单个对象

    excel模板图示
    image.png
    excel模板下载地址

    示例图-> 教师个人信息
    image.png

    模板内容

    INSERT INTO `export_template_info`
    (`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) 
    VALUES 
    (4, '10004', 'T1001', 'DB1001', '0', '教职工个人信息', 1, 3, 'teacher_id|name|profession_date|job_title|phone,email|address|progression_rate', 'teacher_info', '教职工个人信息表', 'teacher_id|name|profession_date?dateFormat=yyyyMMdd_yyyy-MM-dd|job_title|phone|email|address|progression_rate?numFormat=multiply_100,format_2', '<if test=\"teacherId != null and teacherId!=\'\' \">\n AND teacher_id = #{teacherId,jdbcType=VARCHAR}\n</if>', '', 100, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/教职工个人信息表导出模板.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:13');
    
    

    请求示例

    http://127.0.0.1:8083/gen-excel/export?templateId=10004&platformId=T1001&paramContent={"teacherId":"T2001"}
    


    2.3.5根据Excel模板导出主单+子单

    excel模板图示
    image.png
    excel模板下载地址

    示例图->班级信息
    image.png
    模板内容

    -- 主单模板
    INSERT INTO `export_template_info`
    (`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) 
    VALUES
    (5, '10005', 'T1001', 'DB1001', '10006', '班级全员信息-老师', 1, 4, 'b.name class_name|a.name teacher_name|a.progression_rate|a.phone|a.email', 'teacher_info  a INNER JOIN class_info b on b.head_teacher_id =a.teacher_id\n', '班级全员信息', 'class_name|teacher_name|progression_rate?numFormat=multiply_100,format_2|phone|email', 'class_id = #{classId,jdbcType=VARCHAR}', '', 100, 3600, 'https://gen-excel.oss-cn-hangzhou.aliyuncs.com/gen-excel/template/班级全员信息模板.xlsx', '', 1, '2019-11-23 11:06:39', '2019-12-25 21:10:15');
    
    -- 子单模板
    INSERT INTO `export_template_info`
    (`id`, `template_id`, `platform_id`, `db_code`, `template_child_id`, `template_title`, `template_status`, `template_type`, `table_columns`, `table_names`, `export_file_name`, `export_fields_exp`, `query_condition`, `order_by_exp`, `page_size`, `download_url_expire`, `template_file_url`, `template_file_local_path`, `template_refresh_flag`, `create_time`, `update_time`) 
    VALUES
    (6, '10006', 'T1001', 'DB1001', '0', '班级全员信息-学生', 1, 4, 'student_id|name student_name|sex|age|school_date', 'student_info', '班级全员信息', 'student_id|student_name|sex?replace=0_未知,1_男,2_女|age|school_date?dateFormat=yyyyMMdd_yyyy-MM-dd', 'class_id = #{classId,jdbcType=VARCHAR}', '', 100, 3600, '', '', 1, '2019-11-23 11:06:39', '2019-12-15 17:28:44');
    

    请求示例

    http://127.0.0.1:8083/gen-excel/export?templateId=10005&platformId=T1001&paramContent={"classId":"C1001"}
    

    关注程序员小强公众号更多编程趣事,知识心得与您分享
    在这里插入图片描述

    展开全文
  • 要求:请安装Kingbase数据库软件,在数据库软件中创建一个自己名字的模式,在该模式下创建学生关系数据表、课程、选课表。 插入一些数据,尝试查询、更新、删除 二、相关原理与知识 (完成实验所用到的相关原理...

    一、实验题目
    已有条件:Kingbase数据库软件包。
    要求:请安装Kingbase数据库软件,在数据库软件中创建一个自己名字的模式,在该模式下创建学生关系数据表、课程表、选课表。
    插入一些数据,尝试查询、更新、删除
    二、相关原理与知识
    (完成实验所用到的相关原理与知识)
    1.定义模式
    在SQL语句中模式定义语句如下:

    CREATE SCHEMA <模式名>AUTHORIZATION<用户名>;
    

    2.定义基本表

    CREATE TABLE<表名>  (<列名><数据类型> [列级完整性约束条件]
    [,<列名><数据类型> [列级完整性约束条件]]
    …
    [,<表级完整性约束条件>]);
    

    3.数据类型:
    在这里插入图片描述
    4.查询语法:

    SELECT [ALL | DISTINCT] <目标列表达式> [,<目标列表达式>] …
    FROM <表名或视图名>[, <表名或视图名> ] …
    [ WHERE <条件表达式> ]
    [ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
    [ ORDER BY <列名2> [ ASC | DESC ] ] ;
    

    注:
    SELECT子句:指定要显示的属性列;
    FROM子句:指定查询对象(基本表或视图);
    WHERE子句:指定查询条件;
    GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中使用集函数;
    HAVING短语:筛选出只有满足指定条件的组;
    ORDER BY子句:对查询结果按指定列值升序或降序排序。
    5.插入数据
    插入单个元组--新元组插入指定表中。
    语句格式:

        INSERT
    	INTO <表名> [(<属性列1>[,<属性列2 >…)]
    	VALUES (<常量1> [,<常量2>]    … ) ;
    

    注:
    INTO子句
    指定要插入数据的表名及属性列
    属性列的顺序可与表定义中的顺序不一致
    没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
    指定部分属性列:插入的元组在其余属性列上取空值
    VALUES子句
    提供的值的个数和值的类型必须与INTO子句匹配
    6.修改数据:
    语句格式:

     UPDATE  <表名>
       SET  <列名>=<表达式>[, <列名>=<表达式>]…
       [WHERE  <条件>];
    

    功能:
    修改指定表中满足WHERE子句条件的元组。
    注:
    SET子句--指定修改方式,要修改的列和修改后取值
    WHERE子句
    指定要修改的元组
    缺省表示要修改表中的所有元组
    7.删除数据
    语句格式:

    DELETE
    FROM   <表名>
    [WHERE   <条件>] ;
    

    功能:
    删除指定表中满足WHERE子句条件的元组
    注:
    WHERE子句
    指定要删除的元组
    缺省表示要修改表中的所有元组
    7.设置搜索模式路径
    SET search_path TO “S-T”;
    SET search_path TO PUBLIC;
    SET search_path TO “S-T”,PUBLIC;
    三、实验过程
    (清晰展示实际操作过程,相关截图及解释)
    1.建立以@@@命名模式;
    2.建立如下三个表:
    学生表:Student(Sno,Sname,Ssex,Sage,Sdept),用来存放学号、学生姓名、性别、年龄和所在院系,其中Sno为主码;
    课程表:Course(Cno,Cname,Cpno,Ccredit),存放课程编号、课程名称、先修课程和学分,其中Cno为主码;
    学生选课表:SC(Sno,Cno,Grade),存放学号、课程号和该名学生在此课程得分,其中主码由两个属性(Sno和Cno)组成,必须作为表级完整性进行定义,另外,注意Sno和Cno为外码,参照表分别为STUDENT和COURSE。
    建立模式和表后可以得到如下目录:
    在这里插入图片描述
    3.数据插入:
    然后向STUDENT表、COURSE表和SC表中添加学生信息。
    发挥想象,插入数据后的表如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.数据查询:
    接下来查询STUDENT表中的姓名与性别。
    使用SELECT语句对STUDENT表进行查询姓名与性别。
    在这里插入图片描述
    5.数据修改:
    修改COURSE 表中的数据,将课程号为05的信安数基的学分改为3。运行代码后,打开COURSE表,此时CCREDIT已修改为3,如图所示。
    在这里插入图片描述
    6.数据删除:
    将SC表中学号为201803006的同学,且课程代码为02,得分为92的这条数据删除。
    打开表SC可以发现,此时201803006同学在02课程中得分为92的数据已经删除。(左图为原来的SC表,右图为运行删除代码后的SC表)
    在这里插入图片描述
    在这里插入图片描述
    四、实验结果与分析
    用SQL语句建成了简单的学生选课信息系统,由三个表组成,分别为STUDENT表(用来存放学生信息,包括学号、姓名、性别、年龄、所在系),COURSE表(用来存放课程信息,内含课程号、课程名、先修课程、学分),以及SC表(由学号、课程号以及成绩组成),值得注意的是,SC表中的学号和课程号为外码,与STUDENT表和COURSE表相关。
    有了表的框架之后,发挥想象,向表中插入数据。运用书中INSERT相关内容,逐个向表中插入数据。然后对表尝试查询、更新和删除操作。查询操作后,数据库会直接给出查询所得的内容。修改操作后,系统提示语句运行正确或错误,若成功,刷新表后,即可发现数据信息修改完毕,否则依据错误提示进行修改。删除操作与修改操作相似。
    五、问题总结
    (记录所遇到的问题及解决方法)
    1.
    遇到问题:在建立表的时候找不到我所定义的名为@@@的SHAME
    解决方法:在定义表之前,加上一句SET search_path TO @@@;
    2.
    遇到问题:SQL语句中所有的标点符号均为英文字符,在写的过程中混入了中文字符,因无法识别导致运行失败。
    解决方法:将中文字符改为英文字符。
    六、源代码
    (源程序)
    建立模式:

    CREATE SCHEMA @@@
    

    建立STUDENT表:

     SET search_ path TO @@@;
    	CREATE TABLE  Student
            ( Sno     CHAR(9)  PRIMARY  KEY ,
             Sname   CHAR(20)  UNIQUE ,
             Ssex     CHAR(2) ,
             Sage     SMALLINT ,
             Sdept    CHAR(20)
    	    ) ;
    

    建立COURSE表:

        SET search_ path TO @@@;
    CREATE TABLE  Course
               (Cno     CHAR(4) PRIMARY KEY,
            	 Cname   CHAR(40) NOT NULL,            
             	 Cpno    CHAR(4),               	                      
               Ccredit   SMALLINT,
              ); 
    

    建立SC表:

     SET search_ path TO @@@;
     	CREATE TABLE  SC
               (Sno  CHAR(9), 
               Cno  CHAR(4),  
               Grade  SMALLINT,
               PRIMARY KEY (Sno,Cno),  
                          /* 主码由两个属性构成,必须作为表级完整性进行定义*/
               FOREIGN KEY (Sno) REFERENCES Student(Sno),
                         /* 表级完整性约束条件,Sno是外码,被参照表是Student */
               FOREIGN KEY (Cno) REFERENCES Course(Cno)
                         /* 表级完整性约束条件, Cno是外码,被参照表是Course*/
            ); 
    

    插入数据(部分代码):

    INSERT INTO "@@@"."SC"
             ("201801001","04","94" )
     VALUES 
             ('CHAR (9)','CHAR (4)','SMALLINT' );
    

    查询STUDENT表中的姓名与性别:

    SELECT "SNAME","SSEX"
    FROM "@@@"."STUDENT";
    

    更新COURSE表中的数据:

    UPDATE "@@@"."COURSE"
    SET "CCREDIT"='3'
    WHERE "CNO"='05';
    

    删除SC中的数据:

    DELETE "@@@."SC"
    WHERE Sno='201803006' AND Cno='02' AND Grade='92' ;
    
    展开全文
  • JAVA写的窗口应用程序,按模块分类附上的WORD文档JAVA源代码和SQL SERVER的数据库建立方法,数据源建立方法请自行上网搜索~
  • 建立学生信息链表

    千次阅读 2016-10-10 13:48:28
    一、原题建立学生信息链表(student.cpp)题目描述给出n个学生的姓名和年级,请建立一个学生信息的链表。并将链表中各元素依次输出。输入第一行:一个整数n 接下来n行,每行一个学生的名字和年龄。输出n行,每行包括...
  • mysql数据表查询操作

    千次阅读 2018-09-18 09:04:50
    数据表查询操作 准备工作 导入之前需要先创建一个数据库 使用新创建的数据库 使用 source 文件地址 导入数据 create database db charset utf8; use db; source /home/python/Desktop/school.sql 单表查询...
  • 报表数据源之JSON

    千次阅读 2015-04-24 10:38:13
    JSON作为一种轻量级数据格式应用非常广泛,报表读取json数据源进行报表开发的需求也很常见,另外有些报表还... 学生成绩在应用中json文件存在,现需要汇总学生成绩,并按总成绩排名,结果报表展现。报表样式如下:
  • 建立一个由n个学生成绩的顺序,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。 三、实验步骤 1、依据实验内容分别说明实验程序中用到的...
  • 百度一下!到处都是mybatis跟spring结合的配置,可是我不想用spring来写测试代码!...单数据 配置文件 放置在resources目录下 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UT...
  • springboot整合mybatisplus配置多数据源

    千次阅读 2019-11-24 22:57:48
    业务中,有一个需求,需要定时将一个库的部分业务的数据同步到另一个库中,由于在现有的项目中进行改造比较麻烦,因此索性使用springboot和mybatisplus完成一个多数据源的环境搭建 简单说明一下,使用mybatis也是...
  • Spring AOP实现多数据源切换

    千次阅读 2018-11-30 22:44:07
    有时候我们会遇到这样的场景:一个应用系统中存在多个数据源,需要根据不同业务场景进行临时切换。比如读写分离(也可以考虑使用Mycat等数据库中间件)等。 Spring提供了动态数据源的功能,可以让我们实现在对...
  • 一、数据源报表制作、新建数据库表(student学生表为示例) 1、数据库表结构 2、新增几条数据 二、新建一个报表 1、点击头像进入编辑页面,点击“新建 ->新建报表”即可新建一个空白报表; 2、新建好之后...
  • 数据源、元数据、数据元

    千次阅读 2020-01-10 15:14:57
    数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。 ##元数据(metadata) 描述其他数据的数据(data about ...
  • Spring Boot Mybaits mybatis基本配置、多数据源切换、动态加载数据源
  • springboot配置MYSQL双数据源

    千次阅读 2019-09-03 15:08:13
    springboot配置双数据源时要特别注意springboot的版本号,各个版本号不一样,写法也不一样.我用的是1.5.x,具体写法如下: 项目结构 pom文件 <dependencies> <dependency> <groupId>org.spring...
  • 学生管理系统 代码

    2019-01-07 21:43:37
    (2)在数据库名SCOREINFO中,创建数据表名course,结构如下: (3)当单击【查询】时,直接在窗体的dataGridView2控件中显示数据表的所有记录; (4)当选中DataGridView控件中的某一行记录时...
  • public class student { private int id;...--定义数据源 :数据库的驱动类地址、密码、端口、用户名--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> ...
  • VS2010 创建和使用自定义数据源报表详细过程 首先看一下最终效果(显示数据进行了加密,所以成了乱码) 图1.窗体的效果 图2.点击预览时的效果 1.创建显示报表的窗体 新建窗体命名ReportForm并修改窗体...
  • 创建学生成绩单链表

    千次阅读 2017-10-12 08:39:01
    建立一个由n个学生成绩的顺序,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。 三、实验步骤 1、依据实验内容分别说明实验程序中用...
  • 一、数据源报表制作、新建数据库表(student学生表为示例) 1、数据库表结构 2、新增几条数据 3、新增后台api接口(可以使本地,也可以是线上,但必须json格式) 二、新建API报表 1、点击头像进入个人中心,...
  • 在数据库中建立STUDENT,存储学生的多种信息。建立一个网页,使它具有查询成绩、添加成绩、删除成绩等功能,且有页面跳转功能。建立多个jsp页面,对应不同的功能,且都与班级数据库连接,并能显示数据库内容。 2.3...
  • SpringBoot+Mybatis配置多数据源并且实现事务一致性

    千次阅读 多人点赞 2019-10-27 16:57:54
    呃,本文一共分三部分:SpringBoot+Mybatis环境搭建、两种方式配置多数据源、两种方式实现跨数据源事务,您可以直接跳到喜欢的部分,不过按顺序看完也不会花很多时间。。。 一、搭建SpringBoot+Mybatis框架环境 看...
  • 一、数据源报表制作、新建数据库表(student学生表为示例) 1、数据库表结构 2、新增几条数据 3、新增后台api接口(可以使本地,也可以是线上,但必须json格式) 二、新建API报表 1、点击头像进入个人中心,...
  • Java中用动态代理实现标准的DataSource数据源连接池

    千次阅读 多人点赞 2017-12-24 17:46:58
    首先简单谈谈什么要用连接池? 大家知道,我们平常连接数据库的时候,首先需要获取到数据库的连接,在Java中对应的是 Connection,建立获取数据库连接是比较消耗资源的,而且每次建立获取连接也比较浪费时间,...
  • 有这么一些报表,取数后还需要进行一定计算后才能供报表展现输出,这要求报表工具具有数据源再计算的能力。...不得已使用高级语言报表自定义数据源提供数据源再计算,但Java做诸如集合运算的难度并不轻松。
  • sql语句的创建关联表和简单的跨表查询简单介绍表的创建==创建数据库====创建一个用户并授权====指定使用某个数据库====老师表、班级表、学生表====给老师表创建一个唯一索引====添加外键,使表关联====往表内插入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,997
精华内容 16,398
关键字:

以学生表为数据源建立查询