MySql
1.关系型的数据库是表结构
2.非关系型的是数据库是键值对
Delete :一条一条的删,表结构还是在的。删除后的数据可以找回。
truncate:创建一个新表,直接把之前的表drop,然后再创建一个同样的新表。删除后数据是找不回的,执行的速度比delete块。
NOT 默认不包括null
unique:不认为null是重复
自动增长列:(auto_increment)
1.只能用于数值型的类型
2.中间的值一旦被删除,他不会自动填充,找到最大的值,直接加一操作
备份表结构和表中的数据
1.create table tname2 as select * from tname1;
备份表结构:
create table tname2 like tname1;
ALTER TABLE employee MODIFY job varchar(60);
在mysql中,字符串类型和日期类型都要用单引号括起来。
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10) 'aaa ' 占10位
varchar:可变长度字符串类型; varchar(10) 'aaa' 占3为
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
查看数据库编码的具体信息
show variables like ‘charater%’;
临时更改客户端和服务器结构集的编码
Set character_set_client = gbk;
Set character_set_server = gbk;
DQL
【WHERE --> GOUP BY -->HAVING–> ORDER BY LIMIT】
语法: SELECT selection_list /要查询的列名称/
FROM table_list /要查询的表名称/
WHERE condition /行条件/
GROUP BY grouping_columns /对结果分组/
HAVING condition /分组后的行条件/
ORDER BY sorting_columns /对结果排序/
LIMIT offset_start, row_count /结果限定/
条件查询:
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
=、!=、<>、<、<=、>、>=;
BETWEEN…AND; IN(set); IS NULL; AND; OR; NOT;
多表查询:
-
合并结果集:union (去重),union all(全部):
union:两个表的字段个数和类型必须一致。自动去重
-
连接查询:笛卡儿积(n*m):创建了好多无意义的数据。
并不是必须得有主外键,只要字段类型一样就行
-
内连接:select * from emp e inner jion dept d on e.sss=d.sss;
-
外连接:左外连接 右外连接 全外连接(mysql不支持) 自然连接
自然连接:必须有主外键,可以省了条件
自然连接——表里面相同的字段
select 字段 from 表名 where where条件 group by 分组条件 having having条件
函数是通过select调
聚合函数
-
count() 统计指定列不为null的记录的行数
-
max() 计算指定列的最大值,如果指定列是字符串,那么使用字符串排序运算
-
min() 计算指定列的最小值,如果指定列是字符串,那么使用字符串排序运算
-
sum() 计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
-
avg() 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
having
having与where的区别:
1.having是在分组后对数据进行过滤.where是在分组前对数据进行过滤 .
2.having后面可以使用分组函数(统计函数);where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
mysql中的函数
数学函数:
addtime(date2,time_interval)
ABS(X)返回x的绝对值
MOD(N,M):返回N被M除的余数
FLOOR(x):向下取整
criling(x):向上 取整
pound(x):返回参数的四舍五入
字符串函数:
ascll(str):返回字符串str的最左面字符的ascll,如果str是空字符,返回0,如果str是null,返回null
concat(str1,str2…):返回参数连接的字符串,如果任何参数是null,返回null
length(str):返回字符串str的长度
locate(substr,str):返回字串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0
instr(str,substr):返回字串substr在字符串str中第一个出现的位置
left(str,len):返回字符串str的最左面len个字符
righr(str,len):返回字符串str的最右面len个字符
substring(str,pos):从字符串str的起始位置pos返回一个字串
trim(str):去除前后的空格
LTRIM(str):返回删除了其前置空格字符的字符串str。
RTRIM(str):返回删除了其拖后空格字符的字符串str
prpeat(str,count):返回重复count次数的str组成的字符
reverse(str):反转字符串
insert(str,pos,len,newstr):返回字符串str,在位置pos起始len个长度,由字符串newstr代替。
流程控制函数:
1.case when [condition] then result…else result end
select uuid,mobile- 1
when age >=70 and age <=100 then 2
else 9
end
as "年龄"
from user where mobile="53437569";
2.case when [condition] then result…end
select uuid,mobile,case
when age <= 12 then 1
when age >=70 and age <=100 then 2
end
as "年龄"
from user where mobile="53437569";
3.IF(expr1,expr2,expr3):expr1 判断条件,如果是true的话,走expr2,否则的话走expr3.
SELECT IF(1>2,2,3);
格式化函数:
format(x,n):可以将数字x进行格式化,将x保留到小数点后n位
加序列:
select (@i:=@i+1) pm
from @i:=0