创建一张表,表的字段和数据来查询语句

语法:create table 表名 as select 星号 from 另一张表 where 1=1; 创建一张表会把另一张表中的字段和对应的数据全部复制过去
如果我们只想要字段,不要数据
create table 表名 as select * from 另一张表 where 1=2;
如果我只想还要个别字段
create table 表名 as select 表名.字段名,表名.字段名2 from 另一张表 where 1=2;

我创建的这张表也可以来自一个子查循
create table 表名 as 子查询

存储过程

概念:储过程是数据库中的一个对象,存储在服务端,用来封装多条SQL语句且带有逻辑性,可以实现一个功能,由于他在创建时,就已经对SQL进行了编译,所以执行效率高,而且可以重复调用,类似与我们Java中的方法`

语法:DELIMITER $$
                CREATE
                PROCEDURE `performance_schema`.`myTestPro`()

                 BEGIN

                 END$$

                DELIMITER ;

注意:创建过程需要管理员分配权限

所用到的参数:

in:输入参数
                        out:输出参数
                        inout:输入输出参数

例如:

DELIMITER $$
  
  CREATE
      PROCEDURE `performance_schema`.`myTestPro`(IN num INT,OUT r INT)
      BEGIN
  	DELETE FROM emp WHERE empno=num;  删除指定数据
  	SELECT COUNT(*) FROM emp INTO r;         
      END$$
  
  DELIMITER ;

调用存储过程: call
删除存储过程利用 drop drop procedure MytextPro;

带有逻辑的存储过程

带有if逻辑的存储

DELIMITER $$
  CREATE PROCEDURE pro_testIf(IN num INT,OUT str VARCHAR(20))
  BEGIN
  	IF num=1 THEN
  		SET str='星期一';
  	ELSEIF num=2 THEN              --注意elseif  连在一块
  		SET str='星期二';
  	ELSEIF num=3 THEN
  		SET str='星期三';             -- 注意要用分号结束
  	ELSE
  		SET str='输入错误';
  	END IF;                        -注意要结束if  后面有分号
  END $$
  
写入值需要set

带有while的存储过程

DELIMITER $
  CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT)
  BEGIN
  	-- 定义一个局部变量
  	DECLARE i INT DEFAULT 1;
  	DECLARE vsum INT DEFAULT 0;
  	WHILE i<=num DO
  	      SET vsum = vsum+i;
  	      SET i=i+1;
  	END WHILE;  -- 要记得结束循环
  	SET result=vsum;
  END $

再循环语句中可以利用两个关键字来控制循环

leave 相当于java中的 break

iterate相当于java中的continue

变量

全局变量:可以再多个会话中去访问它

查看所有全局变量: show variables
	 查看某个全局变量: select @@变量名
	 修改全局变量: set 变量名=新值
	 character_set_client: mysql服务器的接收数据的编码
	 character_set_results:mysql服务器输出数据的编码
	 SET character_set_client=gbk   –设置数据库编码
	 SELECT @@character_set_client  --查看数据库编码
	 会话变量: 只存在于当前客户端与数据库服务器端的一次连接当中。如果连接断开,那么会话变量全部丢失!
	定义会话变量: set @变量=值
	查看会话变量: select @变量

局部变量:在存储过程中使用的变量(只要存储过程执行完毕,局部变量就丢失)

定义局部变量的语法:DECLARE i INT DEFAULT 1;  
	给变量设置值 set i=10;