精华内容
下载资源
问答
  • 交叉表查询需要指定3个字段
    2021-01-28 04:49:35

    select distinct code,  MAX(des) from dbname group by code

    在维护使用的多个表的时候遇到了需要跨表统计信息的需求,经查询可以使用union和union all语句实现

    union和union all都是组合多个表的内容然后作为一个表输出。

    他们的不同点是:

    union会去掉重复的行,而union all会全部保留

    使用他们时需要注意的是:

    所有查询中的列数和列的顺序必须相同(列表内容可以包括:列名、算术表达式、聚合函数等)1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如:  SELECT * FROM table1 CROSS JOIN table2    SELECT * FROM table1 JOIN table2    SELECT * FROM table1,table2           由于其返回的结果为被

    数据类型必须兼容(结果集中的相应列必须具有相同数据类型,或者两种数据类型之间存在隐性数据转换,或提供了类型转换)

    下面是具体的例子:

    现在有两个表TA和TB,每个表都有Name列和Size列,目标是显示每个Name的Size和,语句如下

    select name,sum(size) from (select name,size from TA union select name,size from TB) alias group by name;

    alias是圆括号中合并(union)的表的别名。

    更多相关内容
  • 5.7.1 使用向导创建交叉表查询

    千次阅读 2021-08-11 09:20:36
    例如,在“成绩”表中,每学生所有课程的成绩都是按顺序依次显示在一张表中,在实际正作中,常常需要以学号和姓名为行,以每门课程为列来显示每门课程的成绩和几门课程的总成绩,这种情况就需要使用交叉表查询来...

    示例ACCESS数据库下载链接:     

    https://download.csdn.net/download/ngbshzhn/20979935

        使用交叉表查询计算和重构数据,可以简化数据分析,交叉表查询计算数据的总和、平均值、计数或其他类型的总计值,并将它们分组。一组列在数据表左侧作为交叉表的行字段,另一组列在数据表的顶端作为交叉表的列字段。
        在实际应用中,交叉表查询用于解决在一对多的关系中,对“多"实现分组求和的问题。例如,在“成绩”表中,每个学生所有课程的成绩都是按顺序依次显示在一张表中,在实际正作中,常常需要以学号和姓名为行,以每门课程为列来显示每门课程的成绩和几门课程的总成绩,这种情况就需要使用交叉表查询来实现了。
        设计交叉表查询可以首先使用交叉表查询向导,以便快速生成一个基本的交叉查询对象,然后,再进入查询设计视图对交叉表查询对象进行修改。
        例:在“教学管理”数据库中列出学生每门课程的成绩和各门的总分,显示的信息包括学号、姓名、课程名和总评成绩。
        由于成绩表中,并不包含上述全部信息,这些信息来自三个表。交叉表查询向导不支持从多个表中选择字段,所以需要使用查询设计视图创建一个包含上述信息的查询。查询由“学生“、  ”课程’’表和“成绩“表组成。即从“学生”表中获取“姓名”字段,从“课程”表获取“课程名“字段以及从“成绩”表获取“学号”和“总评成绩”字段。
        操作步骤如下:
        (1)打开“教学管理”数据库,在“创建”选项卡上的“查询’’组中,单击“查询设计”按钮,打开“查询设计视图”窗口。
        (2)在打开的“显示表”对话框中,选择“学生”表、  “课程”表和“成绩”表,单击“添加”按钮,把它们添加到查询视图中的对象窗格中。
        (3)把“姓名”、  “学号’’、  “课程号"和“总评成绩”字段分别从各个表(或查询)中拖到查询设计网格中。
        (4)保存。

         以上4步是为了创建交叉表查询向导做准备工作。
        (5)在“创建”选项卡上的“查询”组中,单击“查询向导”按钮。
        (6)在打开的“新建查询”对话框中,选中“交叉表查询向导”,单击“确定”按钮。


        (7)在打开的“请指定哪个表或查询中含有交叉表查询结果所需的字段”对话框中,在“视图“区,选中“查询"。在数据源列表中,选择“查询1”。


        (8)在打开的“请确定用哪些字段的值作为行标题”对话框中,在“可用字段”窗格中,依次双击“学号““姓名¨,这两个字段被发送到“选定字段”的窗格中。

     

        (9)在打开的“请确定用哪个字段的值作为列标题’’对话框中,系统自动选择“课程 名”作为列标题,且“总计”放在计算位置处。

        (10)在打开的“请确定为每个列和行的交叉点计算出什么数字∞对话框中,在“函数”列中”总数“,然后单击“下一步”。


        (11)在打开的“请指定查询的名称”对话框中,在“请指定查询的名称"文本框中,输入“查询1_交叉表”,选中“修改查询”,然后单击“完成”。

        (12)这时打开查询设计视图,s把最后一列中的“字段’’,行单元格中的“总计”删除掉,然后运行。 

    展开全文
  • 本文章目标​ 一、为什么要学习数据库​ 二、数据库的相关概念​ DBMS、DB、SQL​ 、数据库存储数据的特点​ 四、初始MySQL​ MySQL产品的介绍​ MySQL产品的安装 ★​ MySQL服务的启动和停止 ★​ MySQL服务的...

    0e1c03acd9d6ec3b09813cd452ccf7a6.png

    本文章目标

    ​ 一、为什么要学习数据库
    ​ 二、数据库的相关概念
    ​ DBMS、DB、SQL
    ​ 三、数据库存储数据的特点
    ​ 四、初始MySQL
    ​ MySQL产品的介绍
    ​ MySQL产品的安装 ★
    ​ MySQL服务的启动和停止 ★
    ​ MySQL服务的登录和退出 ★
    ​ MySQL的常见命令和语法规范
    ​ 五、DQL语言的学习 ★
    ​ 基础查询 ★
    ​ 条件查询 ★
    ​ 排序查询 ★
    ​ 常见函数 ★
    ​ 分组函数 ★
    ​ 分组查询 ★
    ​ 连接查询 ★
    ​ 子查询 √
    ​ 分页查询 ★
    ​ union联合查询 √

    六、DML语言的学习 ★
    插入语句
    修改语句
    删除语句
    七、DDL语言的学习
    库和表的管理 √
    常见数据类型介绍 √
    常见约束 √
    八、TCL语言的学习
    事务和事务处理
    九、视图的讲解 √
    十、变量
    十一、存储过程和函数
    十二、流程控制结构

    数据库的好处

    ​ 1.持久化数据到本地
    ​ 2.可以实现结构化查询,方便管理

    数据库相关概念

    ​ 1、DB:数据库,保存一组有组织的数据的容器
    ​ 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据
    ​ 3、SQL:结构化查询语言,用于和DBMS通信的语言

    数据库存储数据的特点

    ​ 1、将数据放到表中,表再放到库中
    ​ 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。
    ​ 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。
    ​ 4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性”
    ​ 5、表中的数据是按行存储的,每一行类似于java中的“对象”。

    MySQL产品的介绍和安装

    MySQL服务的启动和停止

    ​ 方式一:计算机——右击管理——服务
    ​ 方式二:通过管理员身份运行
    ​ net start 服务名(启动服务)
    ​ net stop 服务名(停止服务)

    MySQL服务的登录和退出

    ​ 方式一:通过mysql自带的客户端
    ​ 只限于root用户

    方式二:通过windows自带的客户端
    登录:
    mysql 【-h主机名 -P端口号 】-u用户名 -p密码
    
    退出:
    exit或ctrl+C

    MySQL的常见命令

    1.查看当前所有的数据库
    show databases;
    2.打开指定的库
    use 库名
    3.查看当前库的所有表
    show tables;
    4.查看其它库的所有表
    show tables from 库名;
    5.创建表
    create table 表名(
    
        列名 列类型,
        列名 列类型,
        。。。
    );
    6.查看表结构
    desc 表名;
    
    
    7.查看服务器的版本
    方式一:登录到mysql服务端
    select version();
    方式二:没有登录到mysql服务端
    mysql --version
    或
    mysql --V

    MySQL的语法规范

    ​ 1.不区分大小写,但建议关键字大写,表名、列名小写
    ​ 2.每条命令最好用分号结尾
    ​ 3.每条命令根据需要,可以进行缩进 或换行
    ​ 4.注释
    ​ 单行注释:#注释文字
    ​ 单行注释:– 注释文字
    ​ 多行注释:/* 注释文字 */

    SQL的语言分类

    ​ DQL(Data Query Language):数据查询语言
    ​ select
    ​ DML(Data Manipulate Language):数据操作语言
    ​ insert 、update、delete
    ​ DDL(Data Define Languge):数据定义语言
    ​ create、drop、alter
    ​ TCL(Transaction Control Language):事务控制语言
    ​ commit、rollback

    SQL的常见命令

    show databases; 查看所有的数据库
    use 库名; 打开指定 的库
    show tables ; 显示库中的所有表
    show tables from 库名;显示指定库中的所有表
    create table 表名(
        字段名 字段类型,    
        字段名 字段类型
    ); 创建表
    
    desc 表名; 查看指定表的结构
    select * from 表名;显示表中的所有数据

    DQL语言的学习

    进阶1:基础查询

    ​ 语法:
    ​ SELECT 要查询的东西
    ​ 【FROM 表名】;

    类似于Java中 :System.out.println(要打印的东西);
    特点:
    ①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
    ② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数

    进阶2:条件查询

    ​ 条件查询:根据条件过滤原始表的数据,查询到想要的数据
    ​ 语法:
    ​ select
    ​ 要查询的字段|表达式|常量值|函数
    ​ from
    ​ 表
    ​ where
    ​ 条件 ;

    分类:
    一、条件表达式
        示例:salary>10000
        条件运算符:
        > < >= <= = != <>
    
    二、逻辑表达式
    示例:salary>10000 && salary<20000
    
    逻辑运算符:
    
        and(&&):两个条件如果同时成立,结果为true,否则为false
        or(||):两个条件只要有一个成立,结果为true,否则为false
        not(!):如果条件成立,则not后为false,否则为true
    
    三、模糊查询
    示例:last_name like 'a%'

    进阶3:排序查询

    语法:
    select
        要查询的东西
    from
        表
    where 
        条件
    
    order by 排序的字段|表达式|函数|别名 【asc|desc】

    进阶4:常见函数

    一、单行函数

    1、字符函数
        concat拼接
        substr截取子串
        upper转换成大写
        lower转换成小写
        trim去前后指定的空格和字符
        ltrim去左边空格
        rtrim去右边空格
        replace替换
        lpad左填充
        rpad右填充
        instr返回子串第一次出现的索引
        length 获取字节个数
    
    2、数学函数
        round 四舍五入
        rand 随机数
        floor向下取整
        ceil向上取整
        mod取余
        truncate截断
    3、日期函数
        now当前系统日期+时间
        curdate当前系统日期
        curtime当前系统时间
        str_to_date 将字符转换成日期
        date_format将日期转换成字符
    4、流程控制函数
        if 处理双分支
        case语句 处理多分支
            情况1:处理等值判断
            情况2:处理条件判断
    
    5、其他函数
        version版本
        database当前库
        user当前连接用户

    二、分组函数

    sum 求和
        max 最大值
        min 最小值
        avg 平均值
        count 计数
    
        特点:
        1、以上五个分组函数都忽略null值,除了count(*)
        2、sum和avg一般用于处理数值型
            max、min、count可以处理任何数据类型
        3、都可以搭配distinct使用,用于统计去重后的结果
        4、count的参数可以支持:
            字段、*、常量值,一般放1
    
           建议使用 count(*)

    进阶5:分组查询

    ​ 语法:
    ​ select 查询的字段,分组函数
    ​ from 表
    ​ group by 分组的字段

    特点:
    1、可以按单个字段分组
    2、和分组函数一同查询的字段最好是分组后的字段
    3、分组筛选
            针对的表    位置            关键字
    分组前筛选:    原始表        group by的前面        where
    分组后筛选:    分组后的结果集    group by的后面        having
    
    4、可以按多个字段分组,字段之间用逗号隔开
    5、可以支持排序
    6、having后可以支持别名

    进阶6:多表连接查询

    笛卡尔乘积:如果连接条件省略或无效则会出现
    解决办法:添加上连接条件

    一、传统模式下的连接 :等值连接——非等值连接

    1.等值连接的结果 = 多个表的交集
    2.n表连接,至少需要n-1个连接条件
    3.多个表不分主次,没有顺序要求
    4.一般为表起别名,提高阅读性和性能

    二、sql99语法:通过join关键字实现连接

    含义:1999年推出的sql语法
    支持:
    等值连接、非等值连接 (内连接)
    外连接
    交叉连接
    
    语法:
    
    select 字段,...
    from 表1
    【inner|left outer|right outer|cross】join 表2 on  连接条件
    【inner|left outer|right outer|cross】join 表3 on  连接条件
    【where 筛选条件】
    【group by 分组字段】
    【having 分组后的筛选条件】
    【order by 排序的字段或表达式】
    
    好处:语句上,连接条件和筛选条件实现了分离,简洁明了!

    三、自连接

    案例:查询员工名和直接上级的名称

    sql99

    SELECT e.last_name,m.last_name
    FROM employees e
    JOIN employees m ON e.`manager_id`=m.`employee_id`;

    sql92

    SELECT e.last_name,m.last_name
    FROM employees e,employees m 
    WHERE e.`manager_id`=m.`employee_id`;

    进阶7:子查询

    含义:

    一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询
    在外面的查询语句,称为主查询或外查询

    特点:

    1、子查询都放在小括号内
    2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
    3、子查询优先于主查询执行,主查询使用了子查询的执行结果
    4、子查询根据查询结果的行数不同分为以下两类:
    ① 单行子查询
        结果集只有一行
        一般搭配单行操作符使用:> < = <> >= <= 
        非法使用子查询的情况:
        a、子查询的结果为一组值
        b、子查询的结果为空
    
    ② 多行子查询
        结果集有多行
        一般搭配多行操作符使用:any、all、in、not in
        in: 属于子查询结果中的任意一个就行
        any和all往往可以用其他查询代替

    进阶8:分页查询

    应用场景:

    实际的web项目中需要根据用户的需求提交对应的分页查询的sql语句

    语法:

    select 字段|表达式,...
    from 表
    【where 条件】
    【group by 分组字段】
    【having 条件】
    【order by 排序的字段】
    limit 【起始的条目索引,】条目数;

    特点:

    1.起始条目索引从0开始
    
    2.limit子句放在查询语句的最后
    
    3.公式:select * from  表 limit (page-1)*sizePerPage,sizePerPage
    假如:
    每页显示条目数sizePerPage
    要显示的页数 page

    进阶9:联合查询

    引入:
    union 联合、合并

    语法:

    select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
    select 字段|常量|表达式|函数 【from 表】 【where 条件】 union 【all】
    select 字段|常量|表达式|函数 【from 表】 【where 条件】 union  【all】
    .....
    select 字段|常量|表达式|函数 【from 表】 【where 条件】

    特点:

    1、多条查询语句的查询的列数必须是一致的
    2、多条查询语句的查询的列的类型几乎相同
    3、union代表去重,union all代表不去重

    DML语言

    插入

    语法:
    insert into 表名(字段名,…)
    values(值1,…);

    特点:

    1、字段类型和值类型一致或兼容,而且一一对应
    2、可以为空的字段,可以不用插入值,或用null填充
    3、不可以为空的字段,必须插入值
    4、字段个数和值的个数必须一致
    5、字段可以省略,但默认所有字段,并且顺序和表中的存储顺序一致

    修改

    修改单表语法:

    update 表名 set 字段=新值,字段=新值
    【where 条件】

    修改多表语法:

    update 表1 别名1,表2 别名2
    set 字段=新值,字段=新值
    where 连接条件
    and 筛选条件

    删除

    方式1:delete语句

    单表的删除: ★
    delete from 表名 【where 筛选条件】

    多表的删除:
    delete 别名1,别名2
    from 表1 别名1,表2 别名2
    where 连接条件
    and 筛选条件;

    方式2:truncate语句

    truncate table 表名

    两种方式的区别【面试题】

    #1.truncate不能加where条件,而delete可以加where条件
    
    #2.truncate的效率高一丢丢
    
    #3.truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始
    #delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始
    
    #4.truncate删除不能回滚,delete删除可以回滚

    DDL语句

    库和表的管理

    库的管理:

    一、创建库
    create database 库名
    二、删除库
    drop database 库名

    表的管理:

    ​ #1.创建表

    CREATE TABLE IF NOT EXISTS stuinfo(
        stuId INT,
        stuName VARCHAR(20),
        gender CHAR,
        bornDate DATETIME
    );
    
    DESC studentinfo;
    #2.修改表 alter
    语法:ALTER TABLE 表名 ADD|MODIFY|DROP|CHANGE COLUMN 字段名 【字段类型】;
    
    #①修改字段名
    ALTER TABLE studentinfo CHANGE  COLUMN sex gender CHAR;
    
    #②修改表名
    ALTER TABLE stuinfo RENAME [TO]  studentinfo;
    #③修改字段类型和列级约束
    ALTER TABLE studentinfo MODIFY COLUMN borndate DATE ;
    
    #④添加字段
    
    ALTER TABLE studentinfo ADD COLUMN email VARCHAR(20) first;
    #⑤删除字段
    ALTER TABLE studentinfo DROP COLUMN email;
    
    #3.删除表
    
    DROP TABLE [IF EXISTS] studentinfo;

    常见类型

    整型:
    
    小数:
        浮点型
        定点型
    字符型:
    日期型:
    Blob类型:

    常见约束

    NOT NULL
    DEFAULT
    UNIQUE
    CHECK
    PRIMARY KEY
    FOREIGN KEY

    ##数据库事务
    ###含义
    通过一组逻辑操作单元(一组DML——sql语句),将数据从一种状态切换到另外一种状态

    ###特点
    (ACID)
    原子性:要么都执行,要么都回滚
    一致性:保证数据的状态操作前和操作后保持一致
    隔离性:多个事务同时操作相同数据库的同一个数据时,一个事务的执行不受另外一个事务的干扰
    持久性:一个事务一旦提交,则数据将持久化到本地,除非其他事务对其进行修改

    相关步骤:

    1、开启事务
    2、编写事务的一组逻辑操作单元(多条sql语句)
    3、提交事务或回滚事务

    ###事务的分类:

    隐式事务,没有明显的开启和结束事务的标志

    比如
    insert、update、delete语句本身就是一个事务

    显式事务,具有明显的开启和结束事务的标志

    1、开启事务
        取消自动提交事务的功能
    
        2、编写事务的一组逻辑操作单元(多条sql语句)
        insert
        update
        delete
    
        3、提交事务或回滚事务

    使用到的关键字

    set autocommit=0;
    start transaction;
    commit;
    rollback;
    
    savepoint  断点
    commit to 断点
    rollback to 断点

    事务的隔离级别:

    事务并发问题如何发生?

    当多个事务同时操作同一个数据库的相同数据时

    事务的并发问题有哪些?

    脏读:一个事务读取到了另外一个事务未提交的数据
    不可重复读:同一个事务中,多次读取到的数据不一致
    幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有更新的数据

    如何避免事务的并发问题?

    通过设置事务的隔离级别
    1、READ UNCOMMITTED
    2、READ COMMITTED 可以避免脏读
    3、REPEATABLE READ 可以避免脏读、不可重复读和一部分幻读
    4、SERIALIZABLE可以避免脏读、不可重复读和幻读

    设置隔离级别:

    set session|global  transaction isolation level 隔离级别名;

    查看隔离级别:

    select @@tx_isolation;

    视图

    含义:理解成一张虚拟的表

    视图和表的区别:

    使用方式    占用物理空间
    
    视图    完全相同    不占用,仅仅保存的是sql逻辑
    
    表    完全相同    占用

    视图的好处:

    1、sql语句提高重用性,效率高
    2、和表实现了分离,提高了安全性

    视图的创建

    ​ 语法:
    ​ CREATE VIEW 视图名
    ​ AS
    ​ 查询语句;

    视图的增删改查

    ​ 1、查看视图的数据 ★

    SELECT * FROM my_v4;
    SELECT * FROM my_v1 WHERE last_name='Partners';
    
    2、插入视图的数据
    INSERT INTO my_v4(last_name,department_id) VALUES('虚竹',90);
    
    3、修改视图的数据
    
    UPDATE my_v4 SET last_name ='梦姑' WHERE last_name='虚竹';
    
    4、删除视图的数据
    
    DELETE FROM my_v4;

    某些视图不能更新

    ​ 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
    ​ 常量视图
    ​ Select中包含子查询
    ​ join
    ​ from一个不能更新的视图
    ​ where子句的子查询引用了from子句中的表

    视图逻辑的更新

    ​#方式一:
    ​CREATE OR REPLACE VIEW test_v7
    ​AS
    ​SELECT last_name FROM employees
    WHERE employee_id>100;
    
    #方式二:
    ALTER VIEW test_v7
    AS
    SELECT employee_id FROM employees;
    
    SELECT * FROM test_v7;

    视图的删除

    ​ DROP VIEW test_v1,test_v2,test_v3;

    视图结构的查看

    ​ DESC test_v7;
    ​ SHOW CREATE VIEW test_v7;

    存储过程

    含义:一组经过预先编译的sql语句的集合
    好处:

    1、提高了sql语句的重用性,减少了开发程序员的压力
    2、提高了效率
    3、减少了传输次数

    分类:

    1、无返回无参
    2、仅仅带in类型,无返回有参
    3、仅仅带out类型,有返回无参
    4、既带in又带out,有返回有参
    5、带inout,有返回有参
    注意:in、out、inout都可以在一个存储过程中带多个

    创建存储过程

    语法:

    create procedure 存储过程名(in|out|inout 参数名  参数类型,...)
    begin
        存储过程体
    
    end

    类似于方法:

    修饰符 返回类型 方法名(参数类型 参数名,...){
    
        方法体;
    }

    注意

    1、需要设置新的结束标记
    delimiter 新的结束标记
    示例:
    delimiter $
    
    CREATE PROCEDURE 存储过程名(IN|OUT|INOUT 参数名  参数类型,...)
    BEGIN
        sql语句1;
        sql语句2;
    
    END $
    
    2、存储过程体中可以有多条sql语句,如果仅仅一条sql语句,则可以省略begin end
    
    3、参数前面的符号的意思
    in:该参数只能作为输入 (该参数不能做返回值)
    out:该参数只能作为输出(该参数只能做返回值)
    inout:既能做输入又能做输出

    调用存储过程

    ​ call 存储过程名(实参列表)

    函数

    创建函数

    学过的函数:LENGTH、SUBSTR、CONCAT等
    语法:

    CREATE FUNCTION 函数名(参数名 参数类型,...) RETURNS 返回类型
    BEGIN
        函数体
    
    END

    调用函数

    ​ SELECT 函数名(实参列表)

    函数和存储过程的区别

    关键字        调用语法    返回值            应用场景
    函数        FUNCTION    SELECT 函数()    只能是一个        一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个
    存储过程    PROCEDURE    CALL 存储过程()    可以有0个或多个        一般用于更新

    流程控制结构

    系统变量

    一、全局变量

    作用域:针对于所有会话(连接)有效,但不能跨重启

    查看所有全局变量
    SHOW GLOBAL VARIABLES;
    查看满足条件的部分系统变量
    SHOW GLOBAL VARIABLES LIKE '%char%';
    查看指定的系统变量的值
    SELECT @@global.autocommit;
    为某个系统变量赋值
    SET @@global.autocommit=0;
    SET GLOBAL autocommit=0;

    二、会话变量

    作用域:针对于当前会话(连接)有效

    查看所有会话变量
    SHOW SESSION VARIABLES;
    查看满足条件的部分会话变量
    SHOW SESSION VARIABLES LIKE '%char%';
    查看指定的会话变量的值
    SELECT @@autocommit;
    SELECT @@session.tx_isolation;
    为某个会话变量赋值
    SET @@session.tx_isolation='read-uncommitted';
    SET SESSION tx_isolation='read-committed';

    自定义变量

    一、用户变量

    声明并初始化:

    SET @变量名=值;
    SET @变量名:=值;
    SELECT @变量名:=值;

    赋值:

    方式一:一般用于赋简单的值
    SET 变量名=值;
    SET 变量名:=值;
    SELECT 变量名:=值;
    
    
    方式二:一般用于赋表 中的字段值
    SELECT 字段名或表达式 INTO 变量
    FROM 表;

    使用:

    select @变量名;

    二、局部变量

    声明:

    declare 变量名 类型 【default 值】;

    赋值:

    方式一:一般用于赋简单的值
    SET 变量名=值;
    SET 变量名:=值;
    SELECT 变量名:=值;
    
    
    方式二:一般用于赋表 中的字段值
    SELECT 字段名或表达式 INTO 变量
    FROM 表;

    使用:

    select 变量名

    二者的区别:

    作用域            定义位置        语法

    用户变量 当前会话 会话的任何地方 加@符号,不用指定类型
    局部变量 定义它的BEGIN END中 BEGIN END的第一句话 一般不用加@,需要指定类型

    分支

    一、if函数

    ​ 语法:if(条件,值1,值2)
    ​ 特点:可以用在任何位置

    二、case语句

    语法:

    情况一:类似于switch
    case 表达式
    when 值1 then 结果1或语句1(如果是语句,需要加分号) 
    when 值2 then 结果2或语句2(如果是语句,需要加分号)
    ...
    else 结果n或语句n(如果是语句,需要加分号)
    end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)
    
    情况二:类似于多重if
    case 
    when 条件1 then 结果1或语句1(如果是语句,需要加分号) 
    when 条件2 then 结果2或语句2(如果是语句,需要加分号)
    ...
    else 结果n或语句n(如果是语句,需要加分号)
    end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

    特点:
    可以用在任何位置

    三、if elseif语句

    语法:

    if 情况1 then 语句1;
    elseif 情况2 then 语句2;
    ...
    else 语句n;
    end if;

    特点:
    只能用在begin end中!!!!!!!!!!!!!!!

    三者比较:
    应用场合
    if函数 简单双分支
    case结构 等值判断 的多分支
    if结构 区间判断 的多分支

    循环

    语法:

    【标签:】WHILE 循环条件  DO
        循环体
    END WHILE 【标签】;

    特点:

    只能放在BEGIN END里面
    
    如果要搭配leave跳转语句,需要使用标签,否则可以不用标签
    
    leave类似于java中的break语句,跳出所在循环!!!
    展开全文
  • 5.7.2 使用设计视图创建交叉表查询

    千次阅读 2021-08-12 09:09:13
    交叉表查询部分组成,行标题字段、列标题字段和值字段。按照Access的规定,列标题字段和值字段只能各有一,行标题字段最多可以有3个。 (1)打开“罗斯文”数据库,在“创建”选项卡上的“查询”组中,单击...

        交叉表查询由三部分组成,行标题字段、列标题字段和值字段。按照Access的规定,列标题字段和值字段只能各有一个,行标题字段最多可以有3个。   

    (1)打开“罗斯文”数据库,在“创建”选项卡上的“查询”组中,单击“查询设计“按钮,打开“查询设计视图”窗口。

    (2)添加表和字段,点击“交叉表”按钮

     (3)添加行标题,列标题和值字段

     (4)运行

     


     

    展开全文
  • Rails中都是返回的单个模型的对象,怎么返回多个表中的指定字段则没做什么介绍。   在实际的工作中不可能只是返回单个的模型,于是GOOGLE下,发现find_by_sql方法的返回中已经包含了查询的字段信息。   ...
  • MySQL多表查询

    2022-01-24 14:50:47
    等值连接 vs 非等值连接等值连接非等值连接分类2:自连接 vs 非自连接分类3:内连接 vs 外连接内连接外连接、常用的 SQL 标准有哪些SQL92:使用(+)创建连接SQL99语法实现多表查询1、基本语法2、内连接(INNER JOIN)...
  • 先看一下最简单的例子,在test中,添加一个字段字段名为birth,类型为date类型。相关mysql视频教程推荐:《mysql教程》mysql> alter table test add column birth date;Query OK, 0 rows affected (0.36 sec)...
  • 一、SQL的多表查询:1、左连接和右连接(不重要一方加(+))SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept d WHERE e.deptno(+)=d.deptno ;(+)在等号左边是右连接,反之左连接。2、交叉连接 (CROSS ...
  • MySQL5.5多之连接查询

    千次阅读 2021-03-14 01:41:15
    通常将每实体的所有信息存放在一张中,当查询数据时,通过连接操作查询个表中的实体信息,当两或多个表中存在相同意义的字段时,便可以通过这些字段对不同的进行连接查询,连接查询包括交叉连接查询、内...
  • MySQL (六) : 多表查询

    千次阅读 2022-04-06 10:36:32
    前提条件:这些一起查询之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这关联字段可能建立了外键,也可能没有建立外键。比如:员工和部门,这两个表依靠“部门编号”进行关联。 1. 一...
  • 011MySQL多表查询

    2022-04-12 11:03:38
    表查询的好处 多表查询分类讲解 等值连接非等值连接 自连接 vs 非自连接 内连接 vs 外连接 SQL92 SQL99 SQL92:使用(+)创建连接 SQL99语法实现多表查询 7种SQL JOINS的实现 SQL99语法新特性 自然连接 USING连接
  • 生成交叉表的SQL语句

    2021-02-05 11:14:54
    SET QUOTED_IDENTIFIER ONGOSET ANSI_NULLS ONGO/*--生成交叉表的简单通用存储过程根据指定的表名,纵横字段,统计字段,自动生成交叉表并可根据需要生成纵横两方向的合计注意,横向字段数目如果大于纵向字段数目,将...
  • 计算机二级第查询(二)查询(二) 本章知识点 3.1 查询概述 查询的功能 查询的类型...追加查询 3.6 创建SQL查询 查询与SQL视图 SQL语言简介 创建SQL特定查询 3.3 创建交叉表查询 所谓交叉表查询,就是将来源于某个...
  • 目录 概念 外键约束 外键约束的特点 添加数据 在外键约束下的数据操作 ...多表查询 ...交叉连接 ...内连接查询 ...外连接查询 ...子查询 ...子查询关键字-ALL ...例如:一商城项目就需要分类(category)、商品(products).
  • 【1】多表查询引入: 实际开发中往往需要针对两张甚至更多张数据进行操作,而这...交叉连接(CROSS JOIN)是对两或者多个表进行笛卡儿积操作,所谓笛卡儿积就是关系代数里的一概念,表示两个表中的每一行数据...
  • Oracle SQL 多关联查询

    千次阅读 2021-04-30 09:30:52
    个表之间关系:一对多|(多对一)多对多 一对一3种关系的完整性约束:实体完整性、参照完整性、用于定义的完整性。必须满足实体完整性和参照完整性.实体完整性:规定了字段|属性的约束参照完整性:关系与关系之间的...
  • 关系:一个表代表一实体,实体之间都有关联关系的 根据 范式的要求 来设计关系,减少数据冗余 根据 实际需求 来设计关系,提升访问效率 1、关系是体现数据实际联系的方式 2、关系的设计好坏直接关联...
  • 在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多数据记录连接查询,简称来年将诶查询。在具体实现连接查询操作时,首先将两个或两个以上的按照某个条件连接起来,然后再查询到所...
  • 交叉表、行列转换和交叉查询经典

    千次阅读 2016-11-23 09:44:45
    交叉表、行列转换和交叉查询经典 一、什么是交叉表交叉表”对象是一个网格,用来根据指定的条件返回值。数据显示在压缩行和列中。这种格式易于比较数据并辨别其趋势。它由三个元素组成: ...
  • Blog:博客园 个人概述SELECT语句用于从中选取/查询数据,结果被存储在一结果中(称为结果集)。语法格式SELECT[ALL | DISTINCT | DISTINCTROW ][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT] [SQL_BIG_...
  • 也就是返回第一个表中符合查询条件的数据行数乘以第二个表中符合,查询条件的数据行数,例如department中有4部门,employee中有4员工,那么交叉连接的结果就有4 * 4 = 16条数据 SELECT * FROM 1 CROSS ...
  • SQL多表查询语句怎么写

    千次阅读 2021-03-04 01:45:02
    展开全部SQL中多表查询可以使用链接查询1、unionunion [all]all:表示将查询的所e68a843231313335323631343130323136353331333337623431有结果都合并到结果集中,若不加all会将重复的行只保留一行--示例:select*...
  • from dbo.sysobjects where id = object_id(N'[dbo].[p_qry]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_qry]GO/*--生成交叉表的简单通用存储过程根据指定的表名,纵横字段,统计字段,...
  • Mysql5 实现交叉表查询

    千次阅读 2015-12-15 17:04:17
    交叉表、行列转换和交叉查询经典 一、什么是交叉表交叉表”对象是一个网格,用来根据指定的条件返回值。数据显示在压缩行和列中。这种格式易于比较数据并辨别其趋势。它由三个元素组成:  行  列  摘要...
  • Oracle数据库中的多表查询

    万次阅读 多人点赞 2017-10-01 20:25:45
    经验查询: 在日后的开发之中,很多人都肯定要接触到许多新的数据库和数据,那么在这种时候有两种做法; 做法一:新人做法,上来就直接输入以下的命令 select * from 名称; 如果此时数据量较大的话,以上无法...
  • 5、多表查询

    2021-12-16 20:09:12
    前提条件:这些一起查询之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这关联字段可能建立了外键,也可能没有建立外键。比如:员工和部门,这两个表依靠“部门编号”进行关联。 1. 一...
  • 用来连接两个表的条件称为连接条件或连接谓词,其一般格式如下: [&lt;表名1&gt;.]&lt;列名1&gt;&lt;比较运算符&gt;[&lt;表名2&gt;.]&lt;列名2&gt; 【提示】 当比较...
  • - - 查询table1中的所有信息 条件查询(多列,多条件查询) 从学生中检索出2班性别为女性的学生的姓名和电话 Select Sname,Stel from t_student Where Sclass = 2 and Ssex =‘f’; 选择无重复行 distinct...
  • MySQL语法,增改删查、多表查询

    千次阅读 2020-05-30 09:17:56
    目录数据库、数据常用操作记录的增改删查where子句查询常用多表查询union 结果集合并子查询join 连接查询   mysql关键字不区分大小写   数据库、数据常用操作 show databases; --查看所有的数据库 use...
  • Pandas中透视表和交叉表

    千次阅读 2020-07-01 12:07:46
    一、 什么是透视表? 二、为什么要使用pivot_table? 、pivot_table api认识 四、如何使用pivot_table? 五、pivot_table vs. groupby 六、轴转换(透视功能)unstack 七、交叉表crosstab 八、小结

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,804
精华内容 13,521
热门标签
关键字:

交叉表查询需要指定3个字段