sql语句

1,CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型可以是以下值其中的一个:

BINARY[(N)] 

CHAR[(N)] 

DATE 

DATETIME 

DECIMAL 

SIGNED [INTEGER] 

TIME 

UNSIGNED [INTEGER] 

所以我们也可以用

CAST

解决问题:

select server_id from cardserver where game_id = 1 order 

by CAST(server_id as SIGNED) desc limit 10;

也可以使用CONVERT来搞定此问题:

select server_id from cardserver where game_id = 1 order by CONVERT(server_id,SIGNED) desc limit 10;

修改列的类型

alter table 表名 modify  列名 列类型

修改列名

 alter table 表名 change  旧列名  新列名 列类型

ex:

alter table emp change name ename varchar(20); 

增加列

alter table 表名 add column  字段名(列名)  列类型(column 可以有和无标准的应该有column )

 

alter table emp add column moblie int (11);

alter table 表名 add column 字段名(列名) 列类型

after/befor 列名(字段名)删除列

把上面的add改为drop就行了;

修改表名

alter table 表名 rename 新表名;

ex:

alter table emp rename tb_emp; 

rename table 表名 to 新表名

rename table tb_emp to emp;

删除表中的某一个字段(注意删除此字段时此字段一低昂要是不关联的字段,否则删除失败,删除成功数据也伴随着删除了)

语法是:

alter table 表名 drop  字段名;

单行函数:concat(str1,str2,....)连接函数

分组统计:Group by 子句是真正作用在于与各种聚合函数配合使用。它是用来查询出来的数据进行分组。  分组的含义是:把该列具有相同值的多条记录当成一条记录处理,最
后只输出一条记录。分组函数忽略空值。  如果需要排序在用order by  子句。

 如果where 子句中不能使用分组函数,因此用 having 来代替 where;

ex:

select deptno, avg(sal) as '工资平均值',max(sal) as '最高工资',min(sal) as'最低工资',sum(sal) as'工资总和', count(sal) as '总共的记录' from emp  group by
deptno having avg(sal)>3000;

having 语句只能在Group by 后面。分组 加条件 只能用having, where 是在分组前进行条件过滤,where子句中部能使用聚合函数 having是在分组后进行条件过滤。order by一般是都在最后;limit 用来限制显示的行数,他常用来分页。limit的偏移量是从零开始的,所以取出的数据时从偏移量加上1开始取限制的行数.

LEAST运算符

语法格式为:LEAST(值1,值2,...值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

假如任意一个自变量为NULL,则LEAST()的返回值为NULL

GREATEST运算符

语法格式为: GREATEST(值1,值2,...值n),其中n表示参数列表中有n个值。

在有两个或多个参数的情况下,返回最大值。

假如任意一个自变量为NULL,则GREATEST()的返回值为NULL

注:当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;当参数为字符串时,返回字母中顺序最靠后的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL

REGEXP 运算符

在SQLSERVER里是没有正则函数或者运算符的,MYSQL在这方面的确比较完善

用来匹配字符串,语法格式为:expr REGEXP  匹配条件,如果expr满足匹配条件,返回1;

如果不满足,则返回0;

若expr或匹配条件任意一个为NULL,则结果为NULL

 

常用的几种通配符:

(1)'^'匹配以该字符后面的字符开头的字符串

(2)'$'匹配以该字符后面的字符结尾的字符串

(3)'.'匹配任何一个单字符

(4)'[...]'匹配在方括号内的任何字符。例如,“[abc]" 匹配a、b或c。

字符的范围可以使用一个'-',“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字

(5)'*' 匹配零个或多个在他前面的字符。例如,“x*”匹配任何数量的'*'字符,“[0-9]*”匹配任何数量的数字,

而“.*”匹配任何数量的任何字符。

 ex:

1、查询以特定字符或字符串开头的记录

字符“^”匹配以特定字符或者字符串开头的文本

SELECT * FROM fruits WHERE f_name REGEXP '^b'

返回f_name字段以b开头的记录

2、查询以特定字符或字符串结尾的记录

字符“$”匹配以特定字符或者字符串结尾的文本

SELECT * FROM fruits WHERE f_name REGEXP 'y$'

返回f_name字段以y结尾的记录

3、用符号“.”来代替字符串中的任意一个字符

字符“.”匹配任意一个字符

SELECT * FROM fruits WHERE f_name REGEXP 'a.g'

4、使用“*”和“+”来匹配多个字符

星号“*”匹配前面的字符任意多次,包括0次。加号“+”匹配前面的字符至少一次

SELECT * FROM fruits WHERE f_name REGEXP '^ba*'

5、匹配指定字符串

正则表达式可以匹配指定字符串,只要这个字符串在查询文本中即可,如要匹配多个字符串,多个字符串之间使用分隔符“|”隔开

SELECT * FROM fruits WHERE f_name REGEXP 'on|ap'

6、匹配指定字符中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符,即为所查找的文本

SELECT * FROM fruits WHERE f_name REGEXP '[ot]'

方括号[]还可以指定数值集合

SELECT * FROM fruits WHERE s_id REGEXP '[456]'

7、匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符

SELECT * FROM fruits WHERE f_id REGEXP '[^a-e1-2]'

8、使用{n,} 或者{n,m}来指定字符串连续出现的次数

“字符串{n,}”,表示至少匹配n次前面的字符;“字符串{n,m}”表示匹配前面的字符串不少于n次,不多于m次。

 SELECT * FROM fruits WHERE f_name REGEXP 'b{1,}'

 

 

特别提示

某一些MYSQL中的特殊字符需要用转义字符才能插入数据库,否则产生意料之外的结果。

下面的特殊字符需要在输入时加反斜线符号开头

输入单引号需要:\'

输入双引号需要:\''

输入反斜杠:\\

输入回车符:\r

输入换行符:\n

输入制表符:\tab

输入退格符:\b

在插入这些特殊字符到数据库之前一定要进行转义处理

 

posted on 2018-02-02 11:59  让代码飞  阅读(124)  评论(0)    收藏  举报

导航

一款免费在线思维导图工具推荐:https://www.processon.com/i/593e9a29e4b0898669edaf7f?full_name=python