目录
select length(null), length(' '), length('1');
#显示字符串长度
select * from city where name is null;
#显示为null值的值
select * from city where name is not null;
#显示除了null以外的所有值
select * from city where name = '';
#显示为空值的值
select * from city where name <> '';
#显示不等于空值的值
select count(*) from city;
#显示所有数据的总和
select count(name) from city;
#显示所有数据总和除了不要null值
总结:
描述 | 匹配模式 | 实例 |
---|---|---|
^ | 匹配文本的开始字符 | ‘^bd’ 匹配以 bd 开头的字符串 |
$ | 匹配文本的结束字符 | ‘qn$’ 匹配以 qn 结尾的字符串 |
. | 匹配任何单个字符 | ‘s.t’ 匹配任何 s 和 t 之间有一个字符的字符串 |
* | 匹配零个或多个在它前面的字符 | ‘fo*t’ 匹配 t 前面有任意个 o |
+ | 匹配前面的字符 1 次或多次 | ‘hom+’ 匹配以 ho 开头,后面至少一个m 的字符串 |
字符串 | 匹配包含指定的字符串 | ‘clo’ 匹配含有 clo 的字符串 |
p1|p2 | 匹配 p1 或 p2? | ‘bg|fg’ 匹配 bg 或者 fg |
[...] | 匹配字符集合中的任意一个字符 | ‘[abc]’ 匹配 a 或者 b 或者 c |
[^...]? | 匹配不在括号中的任何字符 | ‘[^ab]’ 匹配不包含 a 或者 b 的字符串 |
{n} | 匹配前面的字符串 n 次? | ‘g{2}’ 匹配含有 2 个 g 的字符串 |
{n,m} | 匹配前面的字符串至少 n 次,至多m 次 | ‘f{1,3}’ 匹配 f 最少 1 次,最多 3 次 |
?
?
?
?
?
?
?
?
?
语法:
select "字段" from "表名" where "字段" regexp {模式};
DELIMITER $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
CREATE PROCEDURE Proc() #创建存储过程,过程名为Proc,不带参数
-> BEGIN #过程体以关键字 BEGIN 开始
-> select * from Store_Info; #过程体语句
-> END $$ #过程体以关键字 END 结束
DELIMITER ; #将语句的结束符号恢复为分号
call proc;
show create procedure [数据库.]储存过程名; #查看某个存储过程的具体信息
show create procedure proc;
show procedure status like '%proc%' \G;
delimiter $$
create procedure proc1(in inname char(16))
-> begin
-> select * from store_info where store_name = inname;
-> end $$
delimiter ;
call proc1('Boston');
create procedure 存储过程名(in 传入参数名 参数数据类型, out 传出参数名 参数数据类型)
begin
select 字段 into 传出参数 from 表 where 字段 = 传入参数;
end$$
call 存储过程名(参数值|@变量名; @变量名);
#传入参数指定的值可以是纯量值,也可以是变量名;传出参数指定的值只能是变量名
create procedure 存储过程名(inout 参数名 参数数据类型)
begin
select 字段 into 参数名 from 表 where 字段 = 参数名;
end$$
set @变量名 = 传入的值; #设置传入的值
call 存储过程名(@变量名); #传入传出参数指定的值只能是变量名
select @变量名; #查看传出的值
DROP PROCEDURE IF EXISTS Proc;
#仅当存在时删除,不添加 IF EXISTS 时,如果指定的过程不存在,则产生一个错误
create table t (id int(10));
insert into t values(10);
DELIMITER $$
CREATE PROCEDURE proc2(IN pro int)
-> begin
-> declare var int;
-> set var=pro*2;
-> if var>=10 then
-> update t set id=id+1;
-> else
-> update t set id=id-1;
-> end if;
-> end $$
DELIMITER ;
CALL Proc2(6);
DELIMITER $$
CREATE PROCEDURE proc3()
-> begin
-> declare var int(10);
-> set var=0;
-> while var<6 do
-> insert into t values(var);
-> set var=var+1;
-> end while;
-> end $$
DELIMITER ;
CALL Proc3;
delimiter $$
create procedure proc7 ()
begin
declare i int;
set i = 1;
create table test03 (id int primary key auto_increment, name varchar(20));
while i <= 100000
do insert into test03 (name) values (concat ('student', i));
set i = i + 1;
end while;
end$$
delimiter ;
call proc7