SQL学习-存储数据

1.创建存储

DELIMITER $$

CREATE PROCEDURE get_clients()

BEGIN

        SELECT * FROM clients; (BEGIN中最后一行要加;)

END $$

DELIMITER ;

获取存储数据

CALL get_clients()

简便创建存储方式:右键Stored Procedures→Create→Apply

2.删除存储

DROP PROCEDURE IF EXISTS get_clients (加上IF EXISTS更加安全不易出错)

3.加参数

DELIMITER $$

CREATE PROCEDURE get_clients_by_state

(

        state CHAR(2)  (多参数用,隔开)

)

BEGIN

        SELECT * FROM clients c

        WHERE c.state = state;

END $$

DELIMITER ;

获取存储数据

CALL get_clients_by_state('参数')

4.加默认值

DELIMITER $$

CREATE PROCEDURE get_clients_by_state

(

        state CHAR(2)  

)

BEGIN

        IF state is NULL THEN 

                SET state ='CA';

        END IF;

        SELECT * FROM clients c

        WHERE c.state = state;

END $$

DELIMITER ;

BEGIN

        SELECT * FROM clients c

        WHERE c.state = IFNULL (state, c.state); (c.state = c.state返回所有值)

END $$

5.更新数据(参数验证)

CREATE PROCEDURE meke_payment

(

        invoice_id INT,

        payment_amount DECIMAL(9,2),

        payment_date DATE

)

BEGIN

        IF payment_amount <= 0 THEN

        SIGNAL SQLSTATE '22003' SET MASSAGE_TEXT = 'Invalid payment amount';

        UPDATE  invoice i

        SET

                i.payment_total = payment_amount,

                i.payment_date = payment_date,

                WHERE i.invoice_id = invoice_id;

END $$

6.触发器

DELIMITER $$

CREATE TRIGGER payments_after_insert (用表payments更新表invoices)                                                   payments_after_delete

        AFTER INSERT ON payments

        FOR EACH ROW

BEGIN 

        UPDATE invoices

        SET payment_total = payment_total + new.amout (减去数据用 - OLD.amount

        WHERE invoice_id = new.invoice_id; (减去数据用 OLD.invoice_id

END $$

DELIMITER ;

改变payments中数据:

INSTER INTO payments

VALUES(, , , )

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值