MYSQL的基本使用【表的创建和修改、视图、函数、存储过程、触发器和事件调度器】

原创 2015年11月02日 17:34:56

MySQL5.0以上的基本用法

概况:考虑初学者的方便,特写有关开源数据库MYSQL的基础使用。

附件:

 

  1. 表的相关操作。

一、创建表:注意“表和主键(或外键)同时创建”和“创建表后再增加主键(或外键)”这两者的写法区别。注意:

主键》

1、表和主键同时创建

-- 主表

CREATE TABLE MASTER_TABLE (

ID  INT NOT NULL AUTO_INCREMENT,

REMARKS  VARCHAR(255) NULL ,

CONSTRAINT MASTER_TABLE_PKPRIMARY KEY (ID)

) ENGINE=INNODBAUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;

2、先创建表,再创建主键

-- 主表

CREATE TABLE MASTER_TABLE (

ID  INT NOT NULL,

REMARKS  VARCHAR(255) NULL

) ENGINE=INNODBAUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;

 

添加主键:

     1)ALTER TABLE MASTER_TABLE ADD CONSTRAINT MASTER_TABLE_PKPRIMARY KEY(ID);

     2)ALTER TABLE MASTER_TABLE CHANGE ID ID INT(11) NOT NULLAUTO_INCREMENT;

 

外键》

  1. 表和外键同时创建

    -- 副表

    CREATE TABLE SLAVE_TABLE (

    ID  INT NOT NULL AUTO_INCREMENT,

    MASTER_TABLE_ID  INT NULL,

    REMARKS  VARCHAR(255) NULL ,

    CONSTRAINT SLAVE_TABLE_PKPRIMARY KEY (ID),

    CONSTRAINT SLAVE_TABLE_FKFOREIGN KEY (MASTER_TABLE_ID) REFERENCES MASTER_TABLE (ID)

    ) ENGINE=INNODBAUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;

  2. 先创建表,再创建外键

-- 副表

CREATE TABLESLAVE_TABLE (

ID  INT NOT NULL AUTO_INCREMENT,

MASTER_TABLE_ID  INT NULL,

REMARKS  VARCHAR(255) NULL ,

CONSTRAINT SLAVE_TABLE_PKPRIMARY KEY (ID)

) ENGINE=INNODBAUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;

添加外键:

ALTER TABLE SLAVE_TABLE ADDCONSTRAINT SLAVE_TABLE_FK FOREIGN KEY (MASTER_TABLE_ID) REFERENCES MASTER_TABLE(ID)

 

三、删除表

  DROP TABLE TABLE_NAME;

四、编辑表:

 

  1. 删除主键

1)修改主键ID的属性:AUTO_INCREMENT 去掉:alter table TABLE_NAME CHANGE id id int(11) not null;

2)删除主键:ALTER TABLE TABLE_NAME DROP PRIMARY KEY

  1. 删除外键

    ALTER TABLE slave_tableDROP FOREIGN KEY SLAVE_TABLE_FK;

  2. 删除表数据

    DELETE FROMTABLE_NAME;TRUNCATE table TABLE_NAME;

  3. 删除列和增加列

  1. 删除列:ALTER TABLETABLE_NAME DROP COLUMN COLUMN_NAME(列名)

  2. 增加列:ALTER TABLETABLE_NAME ADD COLUMN COLUMN COLUMN_NAME(列名)VARCHAR(100) NOT NULL

  3. 修改列:

    ALTER TABLEMASTER_TABLE CHANGE ID ID INT(11) NOT NULL AUTO_INCREMENT;


 

  1. 视图的使用

  1. 创建视图。

    CREATE VIEWMASTER_TABLE_VIEW AS select * FROM MASTER_TABLE ;

  2. 视图的调用。

    SELECT * FROM MASTER_TABLE_VIEW;

  3. 思考: 视图有什么用?

     


 

  1. 函数的使用

  1. 函数可以传参和返回值

    CREATE FUNCTIONOUTPUT_PARAM_FUNC(INPUTPARAM VARCHAR(225))

     RETURNS varchar(225)

    BEGIN

         

          RETURN INPUTPARAM;-- 返回值

     

    END;


 

 

  1. 存储过程的使用

  1. 创建能执行SQL的存储过程

    CREATE  PROCEDURE EXECUTE_SQL_PROC(IN excuteSqlVARCHAR(1000))

    BEGIN

     

          SET @NEEDEXCSQL:=excuteSql;-- SQL变量赋值

     

          PREPARE stmt from @NEEDEXCSQL;-- 准备执行SQL语句

          EXECUTE stmt;-- 执行SQL语句

     

          DEALLOCATE PREPARE stmt;-- 释放资源

     

    END;

  2. 参数输入存储过程:注意@的使用,它可以将值保存到内存里。

    CREATE PROCEDUREINPUT_PARAM_PROC(IN INPUTPARAM VARCHAR(1000))

    BEGIN

     

          SET @INPUTPARAM:=INPUTPARAM;-- 将传入的参数赋给内存对象

     

    END;

    调用:select @INPUTPARAM;

  3. 参数输出存储过程

    CREATE PROCEDUREOUTPUT_PARAM_PROC(OUT INPUTPARAM

    VARCHAR(1000))

    BEGIN

     

          SET INPUTPARAM:=123;-- 给输出的对象赋值

     

    END;

    调用测试:CALL OUTPUT_PARAM_PROC(@WRS)

    查看返回的值【已保存在内存里面】:SELECT @WRS

  4. 循环调用存储过程

    CREATE PROCEDURELOOP_DEMO_PROC(IN NB INT)

    PRC_EXITS:

       BEGIN

      

       DECLARE n INT DEFAULT 0; -- 定义变量,当不满足n<NB时,退出循环

      

       IF n<NB -- 条件判断

          THEN

          SET n := n+1;

       ELSE

          LEAVE PRC_EXITS;

       END IF;

     

    END;


 

  1. 触发器

一、创建触发器

1)删除主表数据之前,触发删除副表的对应数据【主外键原因】

CREATE TRIGGERMASTER_TABLE_TRIGGER BEFORE DELETE ON MASTER_TABLE FOR EACH ROW

BEGIN

   DELETE FROM SLAVE_TABLE WHERE MASTER_TABLE_ID = MASTER_TABLE.ID

END;

二、删除触发器

DROP TRIGGERMASTER_TABLE_TRIGGER;

  1. 问题?

    1、插入数据前的触发时如何实现?

    2、修改数据前的触发如何实现?


 

 

  1. 事件调度器

  1. 事件调度器的使用

    CREATE EVENTCUSTOMER_DEMO_EVENT

    ON SCHEDULE EVERY '30'MINUTE_SECOND STARTS NOW()

    ON COMPLETION NOT PRESERVE

    ENABLE

    DO;

二、问题?

1、如何实现10分钟执行一次?

2、如何实现1个小时执行一次?

3、如何实现每天凌晨00:30执行一次?



友情提示:本人提供相关IT技术开发和支持,与其相关技术交流。

如需请加微信号:


表、视图、存储过程、函数、触发器、事件

表:里面存储的都是真实的数据 视图:就是一个表或者多个表的一个映射,一般只做查询使用。比如你想要的数据存在两个表里,但你查询时不想每次都写关联,那么你创建一个视图,以后只查询这个视图就可以(查询时视图...
  • running_nz
  • running_nz
  • 2016年04月10日 11:37
  • 2114

MySQL触发器、存储过程、自定义函数、视图 常用SQL

1.建立一个userinfo表新增记录时的触发器 将新增日志加入到userinfolog 2.建立一个向userinfo表新增记录的存储过程 3.根据userinfo表的出生日期字段 我们将建立一...
  • truelove12358
  • truelove12358
  • 2015年08月07日 10:00
  • 615

mysql中的函数 存储过程和触发器

http://www.cnblogs.com/lyhabc/p/3802704.html MYSQL中创建存储过程和函数分别使用CREATE PROCEDURE和CREATE FUNCTIO...
  • w2393040183
  • w2393040183
  • 2016年07月28日 00:52
  • 1417

事务,游标,索引,视图,存储过程,触发器

事务:transaction  事务是一个逻辑工作单元,是一个不可停顿的系列操作。事务处理必须满足acid原则atom consistant,i ,d.  原子,一致性,隔离,持久。 begin t...
  • liuwenye2010
  • liuwenye2010
  • 2012年10月18日 21:40
  • 478

MySQL-创建、修改和删除表

表是数据库存储数据的基本单位。一个表包含若干个字段或记录。表的操作包括创建新表、修改表和删除表,这些操作都是数据库管理中最基本、也是最重要的操作。 创建表 创建表是在已存在的数据库中建立新表。 ...
  • qq_33642117
  • qq_33642117
  • 2017年06月25日 18:26
  • 852

触发器、存储过程和函数三者 区别

 前今天面试,碰到数据库方面的问题,没答上来,原因是用了Hibernate以后,很少亲自写存储过程和函数了,已至于这么简单的问题都没答对,汗~~~~ 查了一下资料,现总结如下:    存储过程和函数的...
  • menban
  • menban
  • 2007年11月01日 10:50
  • 6170

mysql导出存储过程、函数、视图、触发器

由于通过mysqldump导出的存储过程、函数、视图、触发器包含definer信息,导致很多时候无法正常导入。通过以下SQL可以自动生成创建语句。--导出存储过程和函数SELECT CONCAT("D...
  • m18580239676
  • m18580239676
  • 2015年09月11日 09:26
  • 139

oracle 创建表,序列,索引,视图,触发器,函数,存储过程,定时器,包体

oracle 创建表table: create table abin1( id number(20,0) not null, name varchar2(100)not null, pwd n...
  • wuyongde0922
  • wuyongde0922
  • 2013年12月09日 17:19
  • 1306

索引、视图、游标、存储过程和触发器的理解

1、索引        1-1、索引的概述                 我们把一个表中的一列或者多列和列中元素所在表中记录的物理地址组合成一个新的表。这个表的记录大致为列的内容和该列所在记录的...
  • wz_hua
  • wz_hua
  • 2015年06月25日 16:33
  • 1010

查看与某一个表相关的视图、存储过程、函数

查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '...
  • lin304510260
  • lin304510260
  • 2013年10月17日 11:31
  • 743
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYSQL的基本使用【表的创建和修改、视图、函数、存储过程、触发器和事件调度器】
举报原因:
原因补充:

(最多只允许输入30个字)