MySQL学习笔记

1.特有的SQL命令

  1) 修改字段名称:  alter table tableName change oldName newName type;

    注意:type可以和原来的字段类型不同。

  2) 修改表名称: alter table tableName rename [to] newTableName;

  3) 分页查询: select * from tableName limit startLine,amount;

    注意:startLine -- 将数据库中的第(startLine+1)行作为查询结果的第一条数据,startLine从0开始;

       amount   --显示的条数

  4) 查询数据库的编码格式: show create database databaseName;

2.存储过程

  1) 不带参数的存储过程  

-- 声名结束符
DELIMITER $
-- 创建存储过程
CREATE PROCEDURE pro_test()
BEGIN
    -- 可以添多个SQL语句/逻辑
    INSERT INTO emp VALUES(1,'huwei');
    INSERT INTO emp VALUES(2,'xingkong');
END $

-- 调用存储过程
CALL pro_test();

-- 删除存储过程
-- 注意:最后没有()
DROP PROCEDURE pro_test;

  2) 带输入参数的存储过程

-- 声名结束符
DELIMITER $
-- 创建存储过程(IN 表示输入参数)
CREATE PROCEDURE pro_test(IN eid INT)
BEGIN
  SELECT * FROM EMP WHERE ID = eid;
END $

-- 调用存储过程
CALL pro_test(1);

-- 删除存储过程
-- 注意:最后没有()
DROP PROCEDURE pro_test;

 3) 带输出参数的存储过程

-- 声名结束符
DELIMITER $
-- 创建存储过程(OUT 表示输出参数)
CREATE PROCEDURE pro_out(OUT str VARCHAR(100))
BEGIN
    SET str='Hello Procedure';
END $-- 调用存储过程
CALL pro_out(@str);
--查看结果
SELECT @str;

-- 删除存储过程
-- 注意:最后没有()
DROP PROCEDURE pro_out;

  4)将查询结果作为输出参数的存储过程

DELIMITER $
CREATE PROCEDURE pro_into(OUT ename VARCHAR(20))
BEGIN
    -- into: 将 name 赋值给 ename
    SELECT NAME INTO ename FROM emp WHERE id = 1;
END $

CALL pro_into(@ename);

SELECT @ename

  5) 带输入输出参数的存储过程

-- 声明名结束符
DELIMITER $
-- 创建存储过程(OUT 表示输出参数)
CREATE PROCEDURE pro_InOut(INOUT num INT)
BEGIN
    SET num = num + 1;
END $

-- 设置会话变量num=10
SET @num = 10;
-- 调用存储过程
CALL pro_InOut(@num);
-- 查看输出结果
SELECT @num;

-- 删除存储过程
-- 注意:最后没有()
DROP PROCEDURE pro_InOut;

  6) 带IF-ELSE逻辑的存储结构

DELIMITER $
CREATE PROCEDURE pro_if(IN sorce INT,OUT lev VARCHAR(20))
BEGIN
    IF sorce <= 60 THEN
        SET lev = 'fail';
    ELSEIF sorce <= 80 THEN
        SET lev = 'pass';
    ELSEIF sorce <= 90 THEN
        SET lev = 'good';
    -- else后面不加then
    ELSE
        SET lev = 'great';
    -- 注意:不能忘了结束if及分号
    END IF;
END $

CALL pro_if(33,@lev);
SELECT @lev;

  7) 带WHILE逻辑的存储过程

DELIMITER $
CREATE PROCEDURE pro_while(OUT result INT)
BEGIN
    -- 定义局部变量
    DECLARE i INT DEFAULT 1;
    DECLARE summary INT DEFAULT 0;

    WHILE i <= 10 DO
        SET summary = summary + i;
        SET i = i + 1;
    END WHILE;
    SET result = summary;
END $

CALL pro_while(@result);

SELECT @result;

3.MySQL的三种变量:

  1)全局变量:MySQL内置的变量

    查询所有的全局变量: show variables;

    查询某个全局变量:select @@varName;

    修改全局变量的值:set varName = value;

  2)会话变量:只在本次连接中有效的变量(连接中断,变量销毁)

    定义会话变量: set @varName = value;

    查询会话变量的值: select @varName;

  3)局部变量:在存储过程中定义的变量

    定义局部变量: declare varName type [default value];

  更多内容,请访问:http://www.cnblogs.com/BlueStarWei/

原文地址:https://www.cnblogs.com/BlueStarWei/p/7224908.html