• mysql表、视图、索引、函数、触发器相关示例(三)


    mysql表、视图、索引、函数、触发器相关示例

    表相关

    1、创建

    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `year` int(11) NOT NULL COMMENT '年',
      `month` tinyint(4) NOT NULL COMMENT '月',
      `is_xxx` unsigned tinyint COMMENT '表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)',
      `updator` varchar(11) NOT NULL,
      `updateTime` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=321 DEFAULT CHARSET=utf8 COMMENT='测试表';
    
    
    实例解析:
      1.表名、字段名必须使用小写字母或数字,,禁止出现数字开头,禁止两个下划线中间只出现数字
      2.如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
      3.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
      4.PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
      5.ENGINE 设置存储引擎,CHARSET 设置编码。
    

    2、修改

    (1)修改表名:

    alter table table_name rename table_new_name
    

    (2)新增字段:

    ALTER TABLE table_name ADD column_name datatype
    

    (3)修改字段名:

    ALTER TABLE table_name ALTER COLUMN column_name new_column_name varchar(100);
    

    (4)修改字段类型:

    ALTER TABLE table_name ALTER COLUMN column_name datatype
    

    (5)删除字段:

    ALTER TABLE table_name DROP COLUMN column_name
    

    3、删除

    DROP TABLE `test`;
    

    视图相关

    1、创建

    CREATE VIEW view_name AS
        SELECT column_name(s) FROM table_name
            WHERE condition;
    

    2、修改

    CREATE OR REPLACE VIEW v_test1 AS
        SELECT * FROM ceshi ;
        
    --方案2
    alter view bankview as select bid from bank;
    

    3、删除

    DROP VIEW view_name
    

    4、查看

    show table status where comment='VIEW';
    

    索引相关

    1、创建

    (1)在表上创建一个简单的索引

    CREATE INDEX index_name ON table_name (column_name,column_name2)
    

    (2)在表上创建一个唯一的索引

    CREATE UNIQUE INDEX index_name ON table_name (column_name)
    

    2、删除

    ALTER TABLE table_name DROP INDEX index_name
    

    存储函数创建删除和使用

    --创建
    create function hello(s char(20) charset utf8)
    returns char(50)
    reads sql data
    begin
      return concat('hello ',s,' !');
    end
    $
    
    --调用
    select hello('hdw')$
    +--------------+
    | hello('hdw') |
    +--------------+
    | hello hdw ! |
    +--------------+
    
    --删除
    drop function hello$
    
    --创建存储函数
    create function getcid(n char(20) charset utf8)
    returns int
    reads sql data
    begin
      return (select cid from stu where sname=n);
    end
    $
    --存储函数可以用在sql语句中
    select cname from class where cid=getcid('小猫')$
    

    触发器创建删除和使用

    --删除班级自动触发删除学生
    create trigger del_class_stu after delete on class
    for each row
    begin
      delete from stu where cid=old.cid;
    end
    $
    
    --触发器作业
    创建文章表含标题、作者、发布时间字段
    如果只添加了标题,发布时间字段自动设置为当前时间,
    作者字段设置为123网
    d $
    create trigger this_name before insert on this_table for each row
    begin
    if new.uname is null then
    set new.uname='123';
    end if;
    if new.timer is null then
    set new.timer=unix_timestamp(now());
    end if;
    end
    $
    
    --查询已有触发器
    show triggers;
    --注释:触发器是设置好当执行某一个行为时执行另一个方法!
    
  • 相关阅读:
    大哥带我走渗透8--CSRF的应用
    大哥带我走渗透7----解析漏洞
    大哥带我走渗透6(下)---文件上传
    视频学习XSS
    大哥带我走渗透5--南方数据
    大哥带我走渗透4(中)----oracle报错注入
    大哥带我走渗透ii--时间盲注,布尔盲注
    SQL语言基础和数据库操作
    less-7
    less-6
  • 原文地址:https://www.cnblogs.com/linuxtop/p/13434630.html
Copyright © 2020-2023  润新知