精华内容
下载资源
问答
  • 【单选题】假设 a 是 int 类型的变量,并初始化为 1 ,则下列( )是合法条件语句?【单选题】保险合同分为补偿性保险合同和给付性保险合同,这是按照合同( )进行的分类。【单选题】定义外部类时不能用到关键字是( )...

    【单选题】下列( )不属于 Java 语言流程控制结构?

    【单选题】假设 a 是 int 类型的变量,并初始化为 1 ,则下列( )是合法的条件语句?

    【单选题】保险合同分为补偿性保险合同和给付性保险合同,这是按照合同的( )进行的分类。

    【单选题】定义外部类时不能用到的关键字是( ) 。

    【单选题】给出下面的程序代码: public class X4_1_3 { private float a; public static void m ( ){ } } 如何使成员变量 a 被方法 m( ) 访问( )

    【单选题】设 a 、 b 为 long 型变量, x 、 y 为 float 型变量, ch 为 char 类型变量且它们均已被赋值, 则下列语句中正确的是( ) 。

    【填空题】Java 的源代码文件的扩展名是( )。

    【单选题】下列循环体执行的次数是( ) 。 int y=2, x=4; while(--x != x/y){ }

    【单选题】有一个类 B ,下面为其构造方法的声明,正确的是( ) 。

    【填空题】定义类时需要 class 关键字,继承类时需要 关键字,实现接口时需要 关键字 。

    【填空题】一个类主要包含两个要素: 和 。

    【填空题】是对事物的抽象,而 是对对象的抽象和归纳。

    【填空题】Java 编译器的输入文件的类型是( )。

    【单选题】定义一个公有 double 型常量 PI ,哪一条语句最好?( )

    【填空题】从用户的角度看, Java 源程序中的类分为两种: 和 。

    【填空题】跳转语句包括 、 、 和

    【单选题】保险合同是投保人与保险人约定保险权利义务关系的

    【多选题】保险合同为

    【单选题】保险合同中约定保险权利义务关系协议的是(

    【填空题】switch 语句先计算 switch 后面的 的值,再和各 语句后的值做比较。

    【单选题】下列属于私有地址的是

    【填空题】定义常量时要用关键字 ,同时需要说明常量的 并指出常量的 具体值 。

    【填空题】创建包时需要使用关键字 。

    【填空题】static 方法中只 能 引 用 类型的数 据 成员和 类型的成 员 方法;而 非 static 类 型 的 方 法中 既 可 以 引 用 类 型 的 数 据成 员 和 成 员方 法 ,也 可 以 引 用 非 static 类型的数据成员和成员方法

    【单选题】IP地址是211.116.18.10,掩码是255.255.255.252,其网络地址是多少( )。

    【单选题】下列说法中,不正确的一个是( ) 。

    【单选题】关于内部类,下列说法不正确的是( ) 。

    【填空题】javac.exe 和java.exe两个可执行程序放在JDK安装目录的( )目录下。

    【单选题】下列循环体执行的次数是( ) 。 int x=10, y=30; do{ y -= x; x++; }while(x++

    【填空题】运行Java应用程序的命令是( )。

    【填空题】类中的 方法是一个特殊的方法,该方法的方法名和类名相同。

    【单选题】下列哪种类成员修饰符修饰的变量只能在本类中被访问?( )

    【单选题】根据有关的法律、惯例及行业习惯来决定的一些未在保单中列明的重要保证,称之为

    【填空题】Java 编译器的输出文件的类型是( )

    【单选题】在 Java 语言中,哪一个包中的类是自动导入的?( )

    【判断题】保险合同中规定有关保险人责任免除条款的,保险人在订立保险合同时应当向投保人明确说明,未明确说明的,该条款不产生效力。

    【填空题】静态数据成员被保存在类的内存区的 公共存储 单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是______(相同 / 不同)的数值。

    【填空题】方法体内定义变量时,变量前不能加 ;局部变量在使用前必须 明确赋 值 ,否则编译时会出错;而类变量在使用前可以不用赋值,它们都有一个 的值。

    【单选题】下面关于类的说法,不正确的是( ) 。

    【填空题】静态数据成员既可以通过 来访问,也可以通过 直接访问它。

    【填空题】当程序中需要引用 java.awt.event 包中的类时,导入该包中类的语句为______

    【其它】设计保单网约车(小组讨论汇报)

    【填空题】if 语句合法的条件值是 类型。

    【填空题】如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个 默认 构造方法。这个方法没有 ,也没有任何 ,不能完成任何操作。

    【单选题】下面关于方法的说法,不正确的是( ) 。

    【填空题】()环境变量用来存储Java的编译和运行工具所在的路径,而( )环境变量则用来保存Java虚拟机要运行的“.class”文件路径。

    【填空题】引用 static 类型的方法时,可以使用___ _做前缀,也可以使用____ 做前缀

    【单选题】有一个主机的IP地址是192.168.200.75,子网掩码是255.255.255.224,这个主机属于哪个子网?( )

    【单选题】已知如下代码: switch(m){ case 0: System.out.println("Condition 0"); case 1: System.out.println("Condition 1"); case 2: System.out.println("Condition 2"); case 3: System.out.println("Condition 3");break; default:System.out.println("Other Condition"); }

    【单选题】为 AB 类定义一个无返回值的方法 f , 使得使用类名就可以访问该方法 , 该方法头的形式为( )

    展开全文
  • 《尚硅谷》MySQL系统课程一共6天,下面介绍第6天学习内容,主要涉及变量、标识列、TCL(事务控制语言)和视图。干货满满,跟着课程进度来,可能篇幅略长,但是看完一定会收获,那我们现在开始吧。 变量 ...

    《尚硅谷》MySQL系统课程一共6天,下面介绍第6天(最后一天)的学习内容,主要涉及变量、存储过程、函数和流程控制结构。干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收获,那我们现在开始吧。

    目录

    变量

    分类:

    代码分析:

    一、系统变量

    二、自定义变量

    存储过程

    含义:

    好处:

    代码分析:

    一、创建语法

    二、调用语法

    三、删除存储过程

    四、查看存储过程的信息

    函数

    含义:

    好处:

    代码分析:

    一、创建语法

    二、调用语法

    三、查看函数

    四、删除函数

    流程控制结构

    一、分支结构

    1.if函数

    2.case结构

    3.if结构

    代码分析:

    二、循环结构

    1.while

    2.loop

    3.repeat

    代码分析:

    变量

    分类:

    系统变量:全局变量、会话变量

    自定义变量:用户变量、局部变量

    代码分析:

    一、系统变量

    说明:变量由系统定义,不是用户定义,属于服务器层面

    注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别

    使用步骤:

    1、查看所有系统变量
    
    show global|【session】variables;
    
    2、查看满足条件的部分系统变量
    
    show global|【session】 variables like '%char%';
    
    3、查看指定的系统变量的值
    
    select @@global|【session】系统变量名;
    
    4、为某个系统变量赋值
    
    方式一:
    
    set global|【session】系统变量名=值;
    
    方式二:
    
    set @@global|【session】系统变量名=值;

    1、全局变量

    作用域:针对于所有会话(连接)有效,但不能跨重启,如果一定要跨重启的话,可以修改配置文件(但一般不这么做)。

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

    2、会话变量

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

    #①查看所有会话变量
    
    SHOW SESSION VARIABLES;
    
    #②查看满足条件的部分会话变量
    
    SHOW SESSION VARIABLES LIKE '%char%';
    
    #③查看指定的会话变量的值
    
    SELECT @@autocommit;  #为什么我设置的全局变量没有用?
    
    #注意:有的时候发现修改不生效,需要关闭会话重新启动,也就是退出一下重新登录。但是发现重新启动mysql服务器变量又不生效,最好的办法就是修改mysql启动的默认值。
    
    SELECT @@session.tx_isolation;
    
    #④为某个会话变量赋值
    
    SET @@session.tx_isolation='read-uncommitted';
    
    SET SESSION tx_isolation='read-committed';

    二、自定义变量

    说明:变量由用户自定义,而不是系统提供的。

    使用步骤:①声明②赋值③使用(查看、比较、运算等)

    1、用户变量

    作用域:针对于当前会话(连接)有效,作用域同于会话变量——应用在任何地方,也就是begin end 里面或begin end外面。

    #赋值操作符:=或:=
    
    #①声明并初始化
    
    SET @变量名=值;
    
    SET @变量名:=值;
    
    SELECT @变量名:=值;
    
    #②赋值(更新变量的值)
    
    #方式一:#类型不同是不报错,默认修改类型。
    
        SET @变量名=值;
    
        SET @变量名:=值;
    
        SELECT @变量名:=值;
    
    #方式二:
    
        SELECT 字段 INTO @变量名
    
        FROM 表;
    
    #③使用(查看变量的值)
    
    SELECT @变量名;
    
    #案例:
    
    SET @name = 'john';
    
    SET @name = 100;
    
    set @count = 1;
    
    SELECT count(*) INTO @count
    
    FROM employees;
    
    SELECT @count;

    2、局部变量

    作用域:仅仅在定义它的begin end块中有效——应用在 begin end中的第一句话

    #①声明
    
    DECLARE 变量名 类型;
    
    DECLARE 变量名 类型 【DEFAULT 值】;
    
    #②赋值(更新变量的值)
    
    #方式一:
    
        SET 局部变量名=值;
    
        SET 局部变量名:=值;
    
        SELECT @局部变量名:=值;
    
    #方式二:
    
        SELECT 字段 INTO 具备变量名
    
        FROM 表;
    
    #③使用(查看变量的值)
    
    SELECT 局部变量名;
    
    #案例:声明两个变量,求和并打印
    
    #用户变量
    
    SET @m=1;
    
    SET @n=1;
    
    SET @sum=@m+@n;
    
    SELECT @sum;
    
    #局部变量--以下命令报错
    
    DECLARE m INT DEFAULT 1;
    
    DECLARE n INT DEFAULT 1;
    
    DECLARE SUM INT;
    
    SET SUM=m+n;
    
    SELECT SUM;
    
    #报错:[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE m INT DEFAULT 1' at line 1

    用户变量和局部变量的对比

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

    存储过程

    含义:

    一组预先编译好的SQL语句的集合,理解成批处理语句。

    好处:

    1、提高代码的重用性

    2、简化操作

    3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

    代码分析:

    一、创建语法

    CREATE PROCEDURE 存储过程名(参数列表)
    
    BEGIN
    
        存储过程体(一组合法的SQL语句)
    
    END

    注意:

    1、参数列表包含三部分

    参数模式  参数名  参数类型

    举例:

    in stuname varchar(20)

    参数模式:

    in:该参数可以作为输入,也就是该参数需要调用方传入值

    out:该参数可以作为输出,也就是该参数可以作为返回值

    inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

    2、如果存储过程体仅仅只有一句话,begin end可以省略

    存储过程体中的每条sql语句的结尾要求必须加分号。

    存储过程的结尾可以使用 delimiter 重新设置(定界符,分隔符)

    语法:

    delimiter 结束标记

    案例:

    delimiter $

    二、调用语法

    CALL 存储过程名(实参列表);

    1.空参列表

    #案例:插入到admin表中五条记录
    
    SELECT * FROM admin;
    
    DELIMITER $  #设置结束标记
    
    CREATE PROCEDURE myp1()
    
    BEGIN
    
        INSERT INTO admin(username,`password`) 
    
        VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000');
    
    END $
    #调用
    
    CALL myp1()$

    2.创建带in模式参数的存储过程

    #案例1:创建存储过程实现——根据女神名(需要传入女神名),查询对应的男神信息
    
    USE girls;
    
    DELIMITER $    #注意这一行千万不要忘记,不然系统默认语句以引号结尾,存储过程不能正常执行!
    
    #以下语句在cmd中运行:
    
    CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
    
    BEGIN
    
        SELECT bo.*
    
        FROM boys bo
    
        RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
    
        WHERE b.name = beautyName;
    
    END $
    
    #调用
    
    CALL myp2('柳岩')$
    
    set names gbk$   
    
    #修改字符格式
    
    #插入中文是报错:ERROR 1366 (HY000): Incorrect string value: '\xC1\xF8\xD1\xD2' for column 'beautyName' at row 1
    
    #案例2 :创建存储过程实现,用户是否登录成功
    
    CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
    
    BEGIN
    
        DECLARE result INT DEFAULT 0;   #变量的声明并初始化
    
        #还不会返回值,查看满足条件的个数
    
        SELECT COUNT(*) INTO result   #变量的赋值
    
        FROM admin
    
        WHERE admin.username = username
    
        AND admin.password = PASSWORD;
    
        SELECT IF(result>0,'成功','失败');   #变量的使用 SELECT相当于打印
    
    END $
    
    #调用
    
    CALL myp3('张飞','8888')$

    3.创建out 模式参数的存储过程-一个返回或者多个返回

    #案例1:根据输入的女神名,返回对应的男神名
    
    CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
    
    BEGIN
    
        SELECT bo.boyname INTO boyname
    
        FROM boys bo
    
        RIGHT JOIN
    
        beauty b ON b.boyfriend_id = bo.id
    
        WHERE b.name = beautyName ;  
    
    END $
    
    #调用
    
    SET @bName$   #当然也可以不提前声明
    
    CALL myp6('小昭',@bName)$
    
    SELECT @bName$
    
    #案例2:根据输入的女神名,返回对应的男神名和魅力值
    
    CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) 
    
    BEGIN
    
        SELECT boys.boyname ,boys.usercp INTO boyname,usercp
    
        FROM boys 
    
        RIGHT JOIN
    
        beauty b ON b.boyfriend_id = boys.id
    
        WHERE b.name = beautyName;  
    
    END $
    
    #调用
    
    CALL myp7('小昭',@name,@cp)$
    
    SELECT @name,@cp$

    4.创建带inout模式参数的存储过程

    #案例1:传入a和b两个值,最终a和b都翻倍并返回
    
    CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT)
    
    BEGIN
    
        SET a=a*2;
    
        SET b=b*2;
    
    END $
    
    #调用
    
    #首先定义两个变量
    
    SET @m=10$
    
    SET @n=20$
    
    CALL myp8(@m,@n)$
    
    SELECT @m,@n$

    【案例讲解】存储过程1

    #1、创建存储过程实现传入用户名和密码,插入到admin表中
    
    CREATE PROCEDURE test_pro1(IN username VARCHAR(20),IN loginPwd VARCHAR(20))
    
    BEGIN
    
        INSERT INTO admin(admin.username,PASSWORD)
    
        VALUES(username,loginpwd);
    
    END $
    
    #2、创建存储过程实现传入女神编号,返回女神名称和女神电话
    
    CREATE PROCEDURE test_pro2(IN id INT,OUT NAME VARCHAR(20),OUT phone VARCHAR(20))
    
    BEGIN
    
        SELECT b.name ,b.phone INTO NAME,phone
    
        FROM beauty b
    
        WHERE b.id = id;
    
    END $
    
    #3、创建存储存储过程或函数实现传入两个女神生日,返回大小
    
    CREATE PROCEDURE test_pro3(IN birth1 DATETIME,IN birth2 DATETIME,OUT result INT)
    
    BEGIN
    
        SELECT DATEDIFF(birth1,birth2) INTO result;
    
    END $

    三、删除存储过程

    语法:drop procedure 存储过程名

    DROP PROCEDURE p1;

    DROP PROCEDURE p2,p3;#不行

    四、查看存储过程的信息

    DESC myp2;#不行

    SHOW CREATE PROCEDURE myp2;

    #一般不修改存储过程,删除重建

    【案例讲解】存储过程2

    #4、创建存储过程或函数实现传入一个日期,格式化成xx年xx月xx日并返回
    
    CREATE PROCEDURE test_pro4(IN mydate DATETIME,OUT strDate VARCHAR(50))
    
    BEGIN
    
        SELECT DATE_FORMAT(mydate,'%y年%m月%d日') INTO strDate;
    
    END $
    
    CALL test_pro4(NOW(),@str)$
    
    SELECT @str $
    
    #5、创建存储过程或函数实现传入女神名称,返回:女神 and 男神  格式的字符串
    
    如 传入 :小昭
    
    返回: 小昭 AND 张无忌
    
    DROP PROCEDURE test_pro5 $
    
    CREATE PROCEDURE test_pro5(IN beautyName VARCHAR(20),OUT str VARCHAR(50))
    
    BEGIN
    
        SELECT CONCAT(beautyName,' and ',IFNULL(boyName,'null')) INTO str
    
        FROM boys bo
    
        RIGHT JOIN beauty b ON b.boyfriend_id = bo.id
    
        WHERE b.name=beautyName;    
    
    END $
    
    CALL test_pro5('柳岩',@str)$
    
    SELECT @str $
    
    #6、创建存储过程或函数,根据传入的条目数和起始索引,查询beauty表的记录
    
    DROP PROCEDURE test_pro6$
    
    CREATE PROCEDURE test_pro6(IN startIndex INT,IN size INT)
    
    BEGIN
    
        SELECT * FROM beauty LIMIT startIndex,size;
    
    END $
    
    CALL test_pro6(3,5)$

    函数

    含义:

    一组预先编译好的SQL语句的集合,理解成批处理语句

    好处:

    1、提高代码的重用性

    2、简化操作

    3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

    区别:

    存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新(增删改)

    函数:有且仅有1 个返回,适合做处理数据后返回一个结果(查询一个值)

    代码分析:

    一、创建语法

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

    注意:

    1.参数列表 包含两部分:

    参数名 参数类型

    2.函数体:肯定会有return语句,如果没有会报错

    如果return语句没有放在函数体的最后也不报错,但不建议return 值;

    3.函数体中仅有一句话,则可以省略begin end

    4.使用 delimiter语句设置结束标记

    二、调用语法

    SELECT 函数名(参数列表)

    1.无参有返回

    #案例:返回公司的员工个数
    
    DELIMITER $
    
    USE myemployees;
    
    CREATE FUNCTION myf1() RETURNS INT
    
    BEGIN
    
        DECLARE c INT DEFAULT 0;  #定义局部变量
    
        SELECT COUNT(*) INTO c  #赋值
    
        FROM employees;
    
        RETURN c;
    
    END $
    
    SELECT myf1()$

    2.有参有返回

    #案例1:根据员工名,返回它的工资
    
    CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
    
    BEGIN
    
        SET @sal=0;    #定义用户变量 
    
        SELECT salary INTO @sal   #赋值
    
        FROM employees
    
        WHERE last_name = empName;
    
        RETURN @sal;
    
    END $
    
    SELECT myf2('k_ing') $   #有两个工资报错
    
    #案例2:根据部门名,返回该部门的平均工资
    
    CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE
    
    BEGIN
    
        DECLARE sal DOUBLE;  #局部变量不用加@
    
        SELECT AVG(salary) INTO sal
    
        FROM employees e
    
        JOIN departments d ON e.department_id = d.department_id
    
        WHERE d.department_name = deptName;
    
        RETURN sal;
    
    END $
    
    SELECT myf3('IT')$

    三、查看函数

    SHOW CREATE FUNCTION myf3;

    四、删除函数

    DROP FUNCTION myf3;

    练习

    #创建函数,实现传入两个float,返回二者之和
    
    CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
    
    BEGIN
    
        DECLARE SUM FLOAT DEFAULT 0;
    
        SET SUM = num1 + num2;
    
        RETURN SUM;
    
    END $
    
    #调用
    
    SELECT test_fun1(1,2)$

    流程控制结构

    分类:

    顺序、分支、循环(三种)

    顺序结构:程序从上往下依次执行(略)

    分支结构:程序从两条或者多条中选择一条去执行

    循环结构:程序在满足一定条件的基础上,重复执行一段代码

    一、分支结构

    1.if函数

    语法:if(条件,值1,值2)

    执行顺序:如果“条件”成立,返回“值1”,否则返回“值2”。

    功能:实现双分支

    应用在begin end中或外面

    2.case结构

    语法:

    情况1:类似于java中的switch语句,一般用于实现等值判断。

    case 变量或表达式或字段
    
    when 值1 then 返回值1 或 语句1;
    
    when 值2 then 返回值2 或 语句2;
    
    ...
    
    else 语句n;
    
    end 

    情况2:类似于java中的多重IF语句,一般用于实现区间判断。

    case 
    
    when 条件1 then 返回值1 或 语句1;
    
    when 条件2 then 返回值2 或 语句2;
    
    ...
    
    else 语句n;
    
    end 

    应用在begin end 中或外面

    特点:①可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,放在BEGIN END中或外面;也可以作为独立的语句去使用,只能放在BEGIN END中。

    ②找到满足条件的语句,执行完就退出。如果WHEN中的值满足或者条件成立,则执行对应的THEN后面的语句,并且结束CASE;如果都不满足,则执行ELSE中的语句或值。

    ③ELSE可以省略,如果ELSE省略了,并且所有WHEN条件都不满足,则返回NULL。

    3.if结构

    语法:

    if 条件1 then 语句1;
    
    elseif 条件2 then 语句2;
    
    ....
    
    else 语句n;
    
    end if;

    功能:类似于多重if

    只能应用在begin end 中

    代码分析:

    案例1:创建函数,实现传入成绩,如果成绩>90,返回A,如果成绩>80,返回B,如果成绩>60,返回C,否则返回D

    #使用case结构1
    
    CREATE PROCEDURE test_case(IN score INT)
    
    BEGIN
    
        CASE 
    
        WHEN score >=90 AND score <= 100 THEN SELECT 'A';
    
        WHEN score >=80 THEN SELECT 'B';
    
        WHEN score >=60 THEN SELECT 'C';
    
        ELSE SELECT 'D';
    
        END CASE  #注意
    
    END $
    
    CALL test_case(95) $
    
    #使用case结构2
    
    CREATE FUNCTION test_case(score FLOAT) RETURNS CHAR
    
    BEGIN 
    
        DECLARE ch CHAR DEFAULT 'A';
    
        CASE 
    
        WHEN score>90 THEN SET ch='A';
    
        WHEN score>80 THEN SET ch='B';
    
        WHEN score>60 THEN SET ch='C';
    
        ELSE SET ch='D';
    
        END CASE;
    
        RETURN ch;
    
    END $
    
    SELECT test_case(56)$
    #使用if结构
    
    CREATE FUNCTION test_if(score FLOAT) RETURNS CHAR
    
    BEGIN
    
        DECLARE ch CHAR DEFAULT 'A';
    
        IF score > 90 THEN SET ch = 'A';
    
        ELSEIF score > 80 THEN SET ch = 'B';
    
        ELSEIF score > 60 THEN SET ch = 'C';
    
        ELSE SET ch = 'D';
    
        END IF;
    
        RETURN ch;    
    
    END $
    
    SELECT test_if(87)$

    案例2:创建存储过程,如果工资<2000,则删除,如果5000>工资>2000,则涨工资1000,否则涨工资500

    CREATE PROCEDURE test_if_pro(IN sal DOUBLE)
    
    BEGIN
    
        IF sal<2000 THEN DELETE FROM employees WHERE employees.salary=sal;
    
        ELSEIF sal>=2000 AND sal<5000 THEN UPDATE employees SET salary=salary+1000 WHERE employees.`salary`=sal;
    
        ELSE UPDATE employees SET salary=salary+500 WHERE employees.`salary`=sal;
    
        END IF;
    
    END $
    
    CALL test_if_pro(2100)$

    二、循环结构

    分类:while、loop、repeat

    循环控制

    iterate类似于 continue,继续,结束本次循环,继续下一次

    leave 类似于  break,跳出,结束当前所在的循环

    1.while

    语法:

    【标签:】while 循环条件 do
    
        循环体;
    
    end while【标签】;

    联想:

    while(循环条件){
    
        循环体;
    
    }

    2.loop

    语法:

    【标签:】loop
    
        循环体;
    
    end loop 【标签】;

    没有循环条件,可以用来模拟简单的死循环

    3.repeat

    语法:

    【标签:】repeat
    
        循环体;
    
    until 结束循环的条件
    
    end repeat 【标签】;

    代码分析:

    1.没有添加循环控制语句

    #案例:批量插入,根据次数插入到admin表中多条记录
    
    DROP PROCEDURE pro_while1$
    
    CREATE PROCEDURE pro_while1(IN insertCount INT)
    
    BEGIN
    
        DECLARE i INT DEFAULT 1;
    
        a: WHILE i <= insertCount DO
    
            INSERT INTO admin(username,`password`) VALUES(CONCAT('Rose',i),'666');  
    
            #名字不能用'Rose'+i,会默认成数值计算
    
            SET i = i + 1;
    
        END WHILE a;
    
    END $
    
    USE girls;
    
    CALL pro_while1(100)$

    2.添加leave语句

    #案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止
    
    TRUNCATE TABLE admin$   #把原来的表删除
    
    DROP PROCEDURE test_while1$
    
    CREATE PROCEDURE test_while1(IN insertCount INT)
    
    BEGIN
    
        DECLARE i INT DEFAULT 1;
    
        a:WHILE i<=insertCount DO
    
            INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
    
            IF i>=20 THEN LEAVE a;
    
            END IF;
    
            SET i=i+1;
    
        END WHILE a;
    
    END $
    
    CALL test_while1(100)$

    3.添加iterate语句

    #案例:批量插入,根据次数插入到admin表中多条记录,只插入偶数次
    
    TRUNCATE TABLE admin$
    
    DROP PROCEDURE test_while1$
    
    CREATE PROCEDURE test_while1(IN insertCount INT)
    
    BEGIN
    
        DECLARE i INT DEFAULT 0;
    
        a:WHILE i<=insertCount DO
    
            SET i=i+1;
    
            IF MOD(i,2)!=0 THEN ITERATE a;
    
            END IF;
    
            INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');
    
        END WHILE a;
    
    END $
    
    CALL test_while1(100)$

    循环结构的总结:

    流程控制经典案例讲解

    /*
    
    已知表stringcontent
    
    其中字段:
    
    id 自增长
    
    content varchar(20)
    
    向该表插入指定个数的,随机的字符串
    
    */
    
    DROP TABLE IF EXISTS stringcontent;
    
    CREATE TABLE stringcontent(
    
        id INT PRIMARY KEY AUTO_INCREMENT,
    
        content VARCHAR(20)
    
    );
    
    DELIMITER $
    
    CREATE PROCEDURE test_randstr_insert(IN insertCount INT)
    
    BEGIN
    
        DECLARE i INT DEFAULT 1;  #定义一个循环变量i,表示插入次数
    
        DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
    
        DECLARE startIndex INT;#代表初始索引
    
        DECLARE len INT;#代表截取的字符长度
    
        WHILE i<=insertcount DO
    
            SET startIndex=FLOOR(RAND()*26+1);#产生一个随机的整数,代表初始索引,随机范围1-26
    
            SET len=FLOOR(RAND()*(20-startIndex+1)+1);#产生一个随机的整数,代表截取长度,随机范围1-(20-startIndex+1)
    
            INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
    
            SET i = i + 1;   #循环变量更新
    
        END WHILE;
    
    END $
    
    CALL test_randstr_insert(10)$

    看完这篇文章意味着整个《尚硅谷》MySQL核心技术也告一段落了,恭喜你!如果还有其他一些知识点,我后续也会补充。Fighting!

    说明:记录学习笔记,发现有错误欢迎指正!转载请联系我。

    展开全文
  • 常见分类算法应用范围/数据要求

    千次阅读 2019-10-28 19:58:08
    下面有几个其他算法具体介绍 单一的分类算法:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类,HMM 组合分类算法:Bagging和Boosting k-近邻(kNN,k-Nearest Neighbors)算法 找出...

    是的,下面有几个其他算法的具体介绍

    单一的分类算法:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类,HMM

    组合分类算法:Bagging和Boosting

    k-近邻(kNN,k-Nearest Neighbors)算法
    

    找出与未知样本x距离最近的k个训练样本,看这k个样本中多数属于哪一类,就把x归为那一类。

    模型输入要求:连续值,类别型变量需进行one-hot编码,由于是计算距离,有必要对数据进行归一化

    模型重要参数:K值及距离的定义

    优点:易于理解和实现

    缺点:计算量大,复杂度高,不适合实时场景

    应用场景:图像压缩

       2.朴素贝叶斯
    

    利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性较大的一个类别作为该样本的最终类别

    模型输入要求:连续值需离散化成概率密度,如高斯模型 http://blog.csdn.net/u012162613/article/details/48323777,同时贝叶斯的输入为概率,因此需要非负

    模型重要参数:

    优点:生成式模型,通过计算概率来进行分类,可以用来处理多分类问题,对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。

    缺点:需要一个很强的条件独立性假设前提

    应用场景:文本分类(如:垃圾邮件识别)

    3.神经网络
    

    神经网络(Artificial Neural Networks,ANN)是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型

    模型输入要求:归一化特征

    模型重要参数:网络层数及节点数

    优点:具有实现任何复杂非线性映射的功能

    缺点:收敛速度慢、计算量大、训练时间长,易收敛到局部最优

    应用场景:图像处理,模式识别

    4.支持向量机
    

    根据结构风险最小化准则,以较大化分类间隔构造最优分类超平面来提高学习机的泛化能力

    模型输入:二分类,归一化

    模型重要参数:核函数

    优点:可以解决小样本情况下的机器学习问题,可以解决高维问题 可以避免神经网络结构选择和局部极小点问题

    缺点:核函数敏感,不加修改的情况下只能做二分类

    应用场景:高维文本分类,小样本分类

     5.决策树
    

    决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别

    模型输入:可处理连续值,类别型变量需one-hot

    模型重要参数:树的高度

    优点:超强的学习能力和泛化能力,训练速度快

    缺点:易过拟合,改进为随机森林(Random Forest, RF)

    应用场景:搜索排序

     6.LR
    

    根据现有数据对分类边界线建立回归公式,依次进行分类

    模型输入:连续值需离散化,类别型变量需one-hot

    模型重要参数:输入特征离散化

    优点:训练速度快,适合实时场景

    缺点:拟合能力较差,不能处理非线下场景,需要人为设置组合特征

    应用场景:各种实时系统:如ctr 预估
    转自 http://f.dataguru.cn/thread-896022-1-1.html

    展开全文
  • 分类与预测是机器学习监督学习任务代表,要求估计预测值,是“回归任务”,要去判断因变量属于哪个类别时,是“分类任务”。 1.回归分析 1.1线性回归 线性回归,使用矩条件,计量经济学中系统学过,需要...

    这是学习的第二个部分,第一部分中复习了or学习了一些基础知识,这里进入到第二部分的建模应用篇,还有一个好消息,数模论文被推到省赛区组委会,国奖有希望。下面正式进入学习部分。

    分类与预测是机器学习有监督学习任务的代表,要求估计预测值,是“回归任务”,要去判断因变量属于哪个类别时,是“分类任务”。

    1.回归分析

    1.1线性回归

    线性回归,使用矩条件,计量经济学中有系统的学过,需要一定的线性代数基础。

    矩阵推导线性回归的参数

    上面的思想必须要知道,实现的时候可以用sklearn库实现,不需要自己再写重复的轮子,下面使用代码实现:

    #波士顿房价预测问题
    import numpy as np 
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression
    
    boston=load_boston()
    
    x=boston.data[:,np.newaxis,5]
    y=boston.target
    lm=LinearRegression()
    lm.fit(x,y)
    print(lm.score(x,y))#输出R-squre
    
    plt.scatter(x,y,color="green")
    plt.plot(x,lm.predict(x),color="blue",linewidth=3)
    plt.show()

    1.2逻辑回归

    逻辑回归是对数几率回归,属于广义线性模型,函数图像为S型,计量经济学同样教授过,一般的因变量取值只有0或1,Logistic函数,确定权重的时候用的极大似然估计。

    逻辑回归算法介绍

    逻辑回归代码实现:

    import pandas as pd 
    from sklearn.linear_model import LogisticRegression
    from sklearn.cross_validation import train_test_split
    data=pd.read_csv('LogisticRegression.csv',encoding='utf-8')
    #类型变量进行度热编码,分离成多个虚拟变量,划分等级
    data_dums=pd.get_dummies(data,prefix='rank',columns=['rank'],drop_first=True)
    x_train,x_test,y_train,y_test=train_test_split(data_dums.ix[:,1:],data_dums.ix[:,0],test_size=.1,random_state=520)
    lr=LogisticRegression()
    lr.fit(x_train,y_train)
    lr.score(x_test,y_test)

    2.决策树

    import pandas as pd 
    from sklearn.tree import DecisionTreeClassifier
    data=pd.DataFrame()
    data=pd.read_csv("titanic_data.csv")
    data.drop(['PassengerId'],axis=1,inplace=True)
    data.loc[data['Sex']=='male','Sex']=1
    data.loc[data["Sex"]=='female',"Sex"]=0
    data.fillna(int(data.Age.mean()),inplace=True)
    dtc=DecisionTreeClassifier(criterion="entropy")
    dtc.fit(data.iloc[:,1:3],data.iloc[:,0])
    dtc.score(data.iloc[:,1:3],data.iloc[:,0])

    3.神经网络模型

    这部分,有点难。。。以后再学,以后学习tensorflow等,具体自己以后推导公式

    4.KNN算法

    k-近邻分类。分类属于有监督学习,而聚类属于无监督学习。

    主要思想:随机一个点,寻找离这个点最近的K个点。在这K个点中,可能会有a,b,c三种类别。若a的出现频率最高,则这个点属于a类

    import numpy as np 
    import matplotlib.pyplot as plt 
    from matplotlib.colors import ListedColormap
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.datasets import load_iris
    
    iris=load_iris()
    x=iris.data[:,:2]
    y=iris.target
    
    cmap_light=ListedColormap(["#FFAAAA","#AAFFAA","#AAAAFF"])
    cmap_bold=ListedColormap(["#FF0000","#00FF00","#0000FF"])
    clf=KNeighborsClassifier(n_neighbors=15)
    clf.fit(x,y)
    #画出决策边界,原理就是把不同的区域,画出很多点,并且颜色不同
    x_min,x_max=min(x[:,0])-1,max(x[:,0])+1
    y_min,y_max=min(x[:,1])-1,max(x[:,1])+1
    #生成网格点坐标矩阵
    xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02))
    #np的ravel()方法实现的是降维处理,将多维矩阵将为一维,
    # 如X=np.array([[1,2,3],[4,5,6]])
    #X.ravel()就是[1,2,3,4,5,6],但是这个矩阵是原来矩阵的一个视图,改变这个矩阵会改变原来的映射矩阵(初始矩阵)
    z=clf.predict(np.c_[xx.ravel(),yy.ravel()]).reshape(xx.shape)
    
    plt.figure()
    plt.pcolormesh(xx,yy,z,cmap=cmap_light)
    
    plt.scatter(x[:,0],x[:,1],c=y,cmap=cmap_bold)
    #设置坐标的最大最小值
    plt.xlim(xx.min(),xx.max())
    plt.ylim(yy.min(),yy.max())
    plt.show()

    5.朴素贝叶斯分类算法,适用于垃圾邮件分类

    • 普通的,贝叶斯公式,极大似然估计,离散数据
    • 高斯朴素贝叶斯,处理连续数据
    • 多项式朴素贝叶斯,用来处理多分类问题
    from sklearn import datasets
    from sklearn.naive_bayes import GaussianNB
    iris=datasets.load_iris()
    gnb=GaussianNB()
    gnb.fit(iris.data,iris.target)
    y_pre=gnb.predict(iris.data)
    iris.data.shape[0]
    (iris.target!=y_pre).sum()
    #150个,6个预测失败,成功率很高

     

    展开全文
  • 朴素贝叶斯,决策树,支持向量机等都是属于离散型监督分类,本文要讲是连续型监督分类:回归(regression)其实回归太常见不过了,我们学过一元一次方程,x作为自变量,y作为因变量,就是一个连续型回归,...
  • 朴素贝叶斯,决策树,支持向量机等都是属于离散型监督分类,本文要讲是连续型监督分类:回归(regression)其实回归太常见不过了,我们学过一元一次方程,x作为自变量,y作为因变量,就是一个连续型回归,...
  • 摘要:回顾Task1,分类属于有监督学习应用之一,其因变量是连续型变量下面我们来详细解读一下分类,掌握分类的基本模型 机器学习基础 度量指标 MSE均方误差:MSE(y,y^)=1nsamples∑i=0nsamples−1(yi−y^i)2.\...
  • 当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。 这里,Y的值从0到1,它可以用下方程表示。 odds= p/ (1-p) = probability of event occurrence / probability of not event...
  • 在函数体中也类型说明, 这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数返回值, 此时函数类型符可以写为void。 我们可以改为一个函数定义: void Hello() { printf ("Hello,world \n...
  • 不可变类型:如果变量名引用内存空间值不能够修改,数字、字符串、布尔值、元组属于不可变类型。可变类型:变量名引用内存空间值能够修改,可以向容器中增删对象,将容器中某个元素索引赋...
  • 但是在学习之前是要一定数学基础, 我下学期想选机器学习和计算机视觉还有计算机图像处理,请大神能将下面的数学基础分一下类, 以下数学基础分别属于哪一门课,拜谢! 我在网上买了一些课程, 目录如下: •...
  • 最后一层隐藏单元个数为4,为所分数目,输出值表示属于每个类概率。 Softmax函数具体步骤如下图: 简单来说三步: 计算z值(4×1矩阵) 将z作为指数,得到中间变量t(维度同z) 对t归一化,得到a...
  • 逻辑回归+Python3实现

    2020-09-07 10:14:59
    文章目录1.什么是逻辑回归2. 逻辑回归判定边界3.代价函数4.Python3实现逻辑回归5.总结 1.什么是逻辑回归 logistic回归又称logistic回归分析,是一种广义线性回归...将因变量(dependent variable)可能属于的两个
  • php高级开发教程说明

    2008-11-27 11:39:22
    前面提到每一种语言代表一种解决问题特定方法,这些问题多属于具有特殊要求某 一特殊种类。因为这些语言集中在一个有限应用领域内,他们成功性也限制在这些领域。 像C和P a s c a l这样语言变得如此流行...
  • 5)判断循环执行次数几个变量:$first、$last、$item@iteration(从1开始)、$item@index(从0开始),可以使用if语句来控制在循环执行到特定次数时给一个特别样式,在推荐位多行时,可能对每行最后一个推荐内容要...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    20.ejb的分类及区别 21.你对现在软件业以及国内软件业看法 22.谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 25.路由协议种类及特点 26.javaawt和swing组件GUI设计关键 27.对于java流...

空空如也

空空如也

1 2 3 4
收藏数 65
精华内容 26
关键字:

下面属于分类变量的有