mysql一些常用命令

TIMESTAMP                    将字段类型设为  

CURRENT_TIMESTAMP()         将默认值设为  
            
            自增长获得id的三种方法https://blog.csdn.net/qq_30715329/article/details/80868411 八种方法
1.SELECT LAST_INSERT_ID();    因为 LAST_INSERT_ID 是基于 Connection 的,只要每个线程都使用独立的 Connection 对象,LAST_INSERT_ID 函数 将返回该 Connection 对 AUTO_INCREMENT列 最新的 insert or update* 作生成的第一个 record 的ID。
2.select max(id) from user;    这个方法的缺点是不适合高并发。如果同时插入的时候返回的值可能不准确。
3.select @@IDENTITY            @@identity 是表示的是最近一次向具有 identity 属性(即自增列)的表插入数据时对应的自增列的值,是系统定 义的全局变量

DISTINCT                      筛选多余的值(它是以整个查询为判断的,筛选出每条数据都没有重复的)  

limit                        展示几条到几条信息

HAVING                        写在WHERE | GROUP BY 分组后的条件判断    

GROUP BY                    分组

ORDER BY                     排序 ASC | DESC    升序|降序    默认升序(ASC)

CREATE TABLE ## AS SELECT * FROM ??;        复制

commit                        提交

savepoint b;

ROLLBACK TO SAVEPOINT b;    提交回滚操作,如果savepoint a 前面执行完成后,后面的发生错误则前面的不发生回滚操作

savepoint                    (保存点)

rollback                    (回滚)

truncate table                 删除表中数据,相比delete更节省资源,和速度更快,,,,但它删除后不记入日志

between ...and                 (是否在两个值之间)

in(s,s,s,s....)                匹配多个(经常用于子查询)

any/some                    和in比较相似,(=any = in)(<>any = not in)左边的功能实现的相同的
                            除了=,any还可以进行> , < , >= , <=等运算符(ANY 运算符不能与固定的集合相匹配)

like                        (模糊匹配字符模式 _模糊匹配一个 ,%模糊匹配0个到多个)

UNION                          链接两个表或多个表进行查询(默认覆盖重复的值)

UNION ALL                    (同上,不覆盖重复值)


一,DDL:    create(创建)
alter(更改)
truncate(截断)
drop(删除)

二,DML:    select(查询)
delete(删除)
insert(插入)
update(更新)

三,DCL:    grant(授予)
revoke(回收)

MYSQL中的函数

一.聚合函数
1.sum(i)                求和
2.min(i)                求最小
3.max(i)                求最大
4.age(i)                求平均
5.count(i)                求总数

二.字符函数
1.length(s)                字符长度(m)
2.substring(s,h,len)    截取字符(f,h,m)
3.concat(x(n))            字符串拼接
4.mysql支持+进行字符串拼接,不过在运算的时候回尝试将其转换为数值,如何转换失败默认为0
5.concat_ws                可以在待拼接的字符串之间加入指定的分隔符
6.lower(s)                转小写
7.upper(s)                转大写
8.trim(s)                截取字符串两侧空格
9.left(s,len)            提供两位数,从左开始截取字符串
10.right(s,len)            同上,从开始截取字符串
11.replace(s,fo,to)        替换字符串(string,被替换的字符,替换字母)
12.ascll(s)                ASCII转换为ASCII编码,字符串取第一个字符
13.char(s)                数值ASCII转换为字符
14.soundex(s)            发音判断,这个函数通过计算字符串的发音特征值,这个特征值为四个字符串

三.数学函数
1.abs(i)        求绝对值
2.power(i)        求幂,接受两个数,第一个为待求幂的表达式,第二个为幂
3.sqrt(i)        平方根函数,
4.rand()        随机数    
5.ceiling(i)        向上取整(天花板)
6.floor(i)        向下取整(地板)
7.round(i)        四舍五入,提供两位数,一个是值,一个是保留几位小数(建议大家试试负数)
8.PI()            圆周率π(3.1415926)
9.MOD(i)        求整数余数
10.LOG(i)        求自然数
    
四.日期函数    
1.NOW()                                    当前时间日期(yyyy-mm-dd hh:mm:ss)
2.CURDATE()                                当前时间(yyyy-mm-dd)    
3.CURTIME()                                当前时间(hh:mm:ss)
4.DATE_ADD(d,interval i type)                        MYSQL日期自增自减函数,(她提供了很多属性)
5.DATEDIFF(x,y)                                判断两个日期的差额(如果y在x之后,返回正值,否则返回负)
6.DAYNAME(d)                                计算一个日期是星期几
7.DATE_FORMAT(d,for)                            取得日期的指定部分

五.其他函数
1.CAST(expression AS type)                显示格式转换(type可以是:BINARY(字符串),CHAR(字符串),DATE(日期),DATETIME(时间日期类型),SIGNEDINTEGER(用符号整数),TIME(时间类型),UNSIGNEDINTEGER(无符号整数))
2.CONVERT(expression ,type)                同上功能相同
3.COALESCE (e,v1,v2…,v)                 判断是否为空,e表示列,如果e为空,就使用v1,v1为空使用v2,v2为空,使用v以此类推
4.UNLLIF()                        同上,精简版
5.CASE()                        逻辑判断处理,流程控制函数
用法1:
SELECT 
FName, 
 (CASE FName 
WHEN 'Tom' THEN 'GoodBoy' 
WHEN 'Lily' THEN 'GoodGirl' 
WHEN 'Sam' THEN 'BadBoy' 
WHEN 'Kerry' THEN 'BadGirl'
ELSE 'Normal' 
END) as isgood 
FROM T_Person 

用法2:
SELECT 
FName, 
FWeight, 
 (CASE
WHEN FWeight<40 THEN 'thin' 
WHEN FWeight>50 THEN 'fat' 
ELSE 'ok' 
END) as isnormal 
FROM T_Person

六.各数据库独有函数MYSQL
1.IF()                        如果逻辑判断只是true或false,mysql提供类似三目运算符的函数IF(age>18,'成年','未成年')
2.CONV(N,F,T)                进制转换,N为要转换的字符或数字,F为它的进制,T为转换后的进制
3.BIN(i)                    二进制
4.OCT(i)                    十进制    
5.HEX(i)                    十六进制
6.LPAD(str,len,padstr)         左填充
7.RPAD(str,len,padstr)         右填充
8.REPEAT(s,len)                字符s重复len遍
9.REVERSE(s)                字符串颠倒
10.ELT(i,s(n))                简化CASE()函数,通过一个i数找到对应的s(i)    
11.FIELD(s,s(n))            同上,不过相反,通过一个字符s,找到是s(s)对应第几个数
12.FIND_IN_SET(s,'s,s,s,s')    找到集合中那个数是第几位,无返回0
13.GREATEST(s[])            找到集合中整数最大值
14.LEAST(s[])                找到集合中整数最小值

七.辅助函数
1.DATABASE()                返回当前数据库名
2.VERSION()                    返回当前版本信息
3.USER()                    返回当前用户名
4.ENCODE(s,'j')                通过j加密一个字符串
5.DECODE(s,'j')                通过j解密一个字符串
6.MD5(i)                    通过MD5加密成一个32位数
7.SHA1(i)                    通过SHA1加密成一个40位数
8.UUID()                    生成一个几百年不会重复的UUID数


(1)其他数据库操作
给查询出的数据定义新的序号:
第一种方法:
SELECT   (@i:=@i+1)   AS   i,t.*   FROM   t_book t,(SELECT   @i:=0)   AS   it 
第二种方法:
SET @rownum=0;
SELECT @rownum:=@rownum+1 AS rownum ,t.* FROM t_book t LIMIT 0,20;

(2)去除查询出结果的最高和最低:
第一种方法:去除全部最高和最低
SELECT AVG(FCount) FROM T_SaleBillDetail 
WHERE FCount NOT IN

(SELECT MIN(FCount) FROM T_SaleBillDetail), 
(SELECT MAX(FCount) FROM T_SaleBillDetail) 

第二种方法:去除一个最高和最低
SELECT 
CASE COUNT(FCount) 
WHEN 2 THEN NULL
ELSE (SUM(FCount)-MIN(FCount)-MAX(FCount))/(COUNT(FCount)-2) 
END
FROM T_SaleBillDetail; 

(3)将查询出的数据进行随机排序显示:
SELECT * FROM T_Person 
ORDER BY RAND(); 

========================================================================================================================
经过测试 - 
1,发现百万级别数据查询中 * 和单个查询没有差别,几乎一样
2,在mysql 插入中,一次最多插入7100-7200左右的数据
 

猜你喜欢

转载自blog.csdn.net/qq_41426326/article/details/89022746