八数据类型
数值类型 | 字节 |
---|---|
int或integer | 4 |
float | 4 |
double | 8 |
decimal(位数,小数) | M+2 |
BIT\BLOB(二进制) |
日期和时间 | 字节 | 格式 |
---|---|---|
date | 3 | YYYY-MM-DD |
time | 3 | HH:MM:SS |
year | 1 | YYYY |
datetime | 8 | YYYY-MM-DD HH:MM:SS |
timestamp | 4 | YYYYMMDD HHMMSS |
插入系统当前时间日期
insert into 表 values (current_time()),(current_date()),(now());
year:
00~69→2000~2069
70~99→1970~1999
0→0000
2166→0000
time:
1112→00:11:12
11:12→11:12:00
23:23→23:23:00
210:10→2*24+10=58:10:00 DHH→D*24+HH
10→00:00:10
101112→10:11:12
107010→00:00:00超出时间范围
字符串 | |
---|---|
char | 固定长度字符 |
varchar | 长度可变 |
text | 不删除尾部空格,BLOB\text可以存储图像、声音,会降低性能,可存文件路径 |
enum | |
set |
enum
enum值 | 索引 |
---|---|
null | null |
‘ ’ | 0 |
first | 1 |
second | 2 |
third | 3 |
例1
创:create table tmp9(
enm enum(‘first’,’second’,’thrid’));
查:select enm,enm+0 from tmp9;
结:
first 1
second 2
thrid 3
null null
例2
创:
create table tmp10
(soc int,level enum(‘excellent’,’good’,’bad’));
插:
insert into tmp10 values(70,’good’),(90,1),(75,2),(50,3),(100,’best’);
结:
soc, 70 , 90 , 75 , 50 , 100
level,good,excellent,good,bad
set
创:
create table tmp11(
s set(‘a’),(‘b’),(‘c’),(‘d’);
插:insert into tmp11 values(‘a’),(‘a,b,a’),(‘c,a,d’),(‘a,x,b,y’);
结:a,ab,acd,ab
九运算符
运算符 | |
---|---|
算数运算符 | +-*/% |
比较运算符 | <、>、<=、>=、=、!=、<>、<=>安全等于 |
in、not in、is null、is not null、between and | |
greatest(最大值)、least(最小值)、like(%/_)、regexp | |
逻辑运算符 | 1(true)0(false)、NOT\AND\OR、!\&&\||、xor(异或) |
位操作运算符 | &、|、~、^、《、》 |
特殊字符() | ‘、“”、\、\r回车、\n换行、\tab、\b退格 |
优先级 | |
---|---|
低 | =,::= |
||,or | |
xor | |
and,&& | |
not | |
between and,case,when,then,else | |
=比较,<=>,>=,>,<=,<,<>,!=,is,likerecgexp,in | |
| | |
& | |
《》 | |
-+ | |
*/% | |
^ | |
-负号,~位反转 | |
高 | ! |
1算术运算符
create table tmp14(num int);
insert into tmp14 value(64);
select num,num+10,num*2,num/2,num%3,num/0,num%0 from tmp14;
64,74,128,32.00,1,null,null
2比较运算符
例1:
select 1=0,’2’=2,2=2,’0.02’=0,’b’=’b’,(1+3)=(2+2),null=null;
结:0,1,1,0,1,1,null
<=>结:0,1,1,0,1,1,1
例2:字符串
查:select null<>null,’good’<=’good’,null<=null
结:null,0,null good第3个0>god第3个d
‘a’=’A’返回1 使用binary二进制返回0
例3:isnull
查:select null is null ,is null(null),isnull(10),10 is null;
结:1,1,0,1
例4:
select 4 between 4 and 6,‘x’between ‘f’and‘g’;
结:1,0
例5:
select least(2,0),least(‘a’,’b’,’c’),least(10,null),greatest(10,null);
结:0,a,null,null
例6:
select 2 in(13,5,‘think’),2 not in(1,3,5,‘think’),null in(1,3,‘thinks’),10 in(null,1);
结:0,1,null,null
3like
%匹配任何数目字符,包括0字符
_一个字符
select ‘stud’ like ‘%d’ ,’s’ like null;
1,null
4regexp正则表达式
符号 | 作用 | 例子 | 示例 |
---|---|---|---|
^ | 该字符开头 | ^b | book |
$ | 该字符结尾 | st$ | test,perst |
. | 任何一个单字符 | b.t | bit,but |
* | 匹配零个或多个在它前面的字符 | f*n | fan,fn |
+ | 前面字符一个以上 | ba+ | ba,bag,bare |
[……] | 匹配括号内任意字符 | [0-9][a-z] | |
[^] | 不再括号内 | [^abc] | desk,fox |
{n} | 匹配两个或多个b | b{2} | bbb,bbbbbbbbbbbb |
{n,m} | 最少两个最多4个 | b{2,4} | bb,bbb,bbbb |
x*匹配任何数量x | [0-9]匹配任何数量数字 | .*匹配任何数量任意字符 |
select ‘ssky’ regexp ‘^s’,from 表 where f_id regexp ‘[ot]’或’[^a-e 1-2]’或’x{2}’;
5逻辑运算符
1)not -!
select not10,not(1-1),!-5,not(!)null,not(!)1+1;
结:0,1,0,null,1
2)and-&&
select 1 and-1,1and0,1 && null,0 && null;
结:1,0,null,0
3)or-||
select 1 or -1 or 0,10 or null,0 || null,null || null
结:1,1,null,null
4)xor a xor b=a and (not b)或(not a) and b
逻辑异或运算符
操作数有null返回null
操作数都非0或为0,返回0
一个为0,一个为非0,返回1
select 1 xor 1,0 xor 0,1 xor 0,1 xor null,1 xor 1 xor 1;
结:0,0,1,null,0
6位运算
①或:|
select 10|15,9|4|2;→15,15
10:1010
15:1111
15:1111=
9:1001
4:0100
2:0010
15:1111=
②异位:^
操作数不同→1
操作数相同→0
select 10^15,1^0,1^1;→5,1,0
10:1010
15:1111
=5:0101
③左移《
select 1《2,4《2;→4,16
1:0000 0001
《:0000 0100=4
《:0001 0000=16
③右移》
select 1》1,16》2;→0,4
④取反~
select 5&~1;→4 ~高于&
1:0001
取反:1110
5:0101
&:0100=4