# = 等于, <> 不等于, != 不等于, < 小于, <= 小于等于, BETWEEN 两值之间 SELECT vend_id, prod_name FROM products WHERE vend_id <>1003; SELECT prod_name FROM products WHERE prod_price ISNULL;
# AND优先级大于OR SELECT prod_name, prod_price FROM products WHERE vend_id =1002OR vend_id =1003AND prod_price >=10;
# IN操作符一般比OR操作符清单执行更快。IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。 SELECT prod_name, product_price FROM products WHERE vend_id IN (1002, 1003) ORDERBY prod_name; SELECT prod_name, product_price FROM products WHERE vend_id NOTIN (1002, 1003) SELECT prod_id, prod_name FROM products WHERE prod_name LIKE'%jet%';
# _ 匹配单个字符 SELECT prod_id, prod_name FROM products WHERE prod_name LIKE'_jet_';
# 正则表达式 SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000'ORDERBY prod_name;
#匹配1或2或3 [^123]取反 SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Rely'ORDERBY prod_name;
#匹配1-5任意一个数字,[a-z]同理 SELECT prod_name FROM products WHERE prod_anem REGEXP '[1-5] Ton';
#转义 SELECT prod_name FROM products WHERE prod_anem REGEXP '\\.';
#?匹配它前面的任何字符出现0次或1次 SELECT prod_name FROM products WHERE prod_anem REGEXP '\\([0-9] sticks?\\)';
#[:digit:]匹配任意数字 SELECT prod_name FROM products WHERE prod_anem REGEXP '[[:digit:]]{4}'; SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]'ORDERBY prod_name;
CREATE PROCEDURE ordertotal( IN ordernum INT, OUT ordersum DECIMAL(8, 2) ) BEGIN SELECT Sum(item_price * quantity) FROM orderitems WHERE order_num = ordernum INTO ordersum; END;
示例:
获取订单税后金额(订单金额+税收)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
CREATE PROCEDURE ordertotal( IN onum INT, IN taxable BOOLEAN, # 是否计税 OUT ototal DECIMAL(8, 2) ) COMMENT 'order total, adding tax' BEGIN DECLARE total DECIMAL(8, 2); DECLARE taxrate INT DEFAULT 6;
SELECT Sum(item_price * quanlity) FROM orderitems WHERE order_num = onum INTO total;
IF taxable THEN SELECT total + (total / 100 * taxrate) INTO total; END IF; -- SELECT total INTO ototal; END;
调用存储过程:
1 2
CALL ordertotal(20005, 1, @total); SELECT @total;
查看:
创建存储过程的 CREATE 语句。
1
SHOW CREATE PROCEDURE ordertotal;
获得包括何时、由谁创建等详细信息的存储过程列表,使用SHOW PROCEDURE STATUS LIKE 'ordertotal';