数据库的建表、序列

今天学习了序列,一般用于序号递增,值得注意的是如果出错的话最好重新创建序列,不要再做操作,还讲了一些建表操作。

  1.创建sequence表

CREATE TABLE `sequence` (

  `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '序列的名字',

  `current_value` int(11) NOT NULL COMMENT '序列的当前值',

  `increment` int(11) NOT NULL DEFAULT '1' COMMENT '序列的自增值',

  PRIMARY KEY (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;



2.创建–取当前值的函数

BEGIN

    DECLARE value INTEGER;

    SET value = 0;

    SELECT current_value INTO value

          FROM sequence

          WHERE name = seq_name;

    RETURN value;

END


3.创建–取下一个值的函数

DROP FUNCTION IF EXISTS nextval;

DELIMITER $

CREATE FUNCTION nextval (seq_name VARCHAR(50))

    RETURNS INTEGER

    LANGUAGE SQL

    DETERMINISTIC

    CONTAINS SQL

    SQL SECURITY DEFINER

    COMMENT ''

BEGIN

    UPDATE sequence

          SET current_value = current_value + increment

          WHERE name = seq_name;

    RETURN currval(seq_name);

END

$

DELIMITER ;


4.创建–更新当前值的函数

DROP FUNCTION IF EXISTS setval;

DELIMITER $

CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)

    RETURNS INTEGER

    LANGUAGE SQL

    DETERMINISTIC

    CONTAINS SQL

    SQL SECURITY DEFINER

    COMMENT ''

BEGIN

    UPDATE sequence

          SET current_value = value

          WHERE name = seq_name;

    RETURN currval(seq_name);

END

$

DELIMITER ;


还讲了视图,

视图是表的select 返回的结果集,操作视图的基表也会改变视图,操作视图也会改变基表,不过一般都不会改动视图,会造成很大的影响,所以设置为只读的。  视图可以看作是JAVA中的封装方法,多次使用简化时,才用得上。不是多次使用的不推荐使用。


今天暂时到这里,明天还有= = !

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容