目录
MySQL中select的基本语法形式:
Select 属性列表
from 表名
[where 条件表达式1]
[group by 属性名1 [having 条件表达式2]]
[order by 属性名2 [asc | desc]]
Select xm,age from wa2;
从wa2表中查询ZHCJ大于90的记录,按照ZHCJ字段降序进行排序
Select xm,age,zhcj from wa2 where ahcj>90 order by zhcj desc;
* 可以表示所有字段,不能改变字段的排列顺序
select * from wa2
查看数据库中的表结构
desc 表名
distinct去除重复数值
select distinct 字段名 from 表名;
查询指定记录:
Where 条件表达式
select id,xm,ZHCJ,age from wa2 where id=1
Where子句常用查询条件
IN关键字
IN (元素1,元素2....元素n)
Between查询范围
BETWEEN 取值1 AND 取值2
Like匹配查询
like ‘字符串‘
使用like匹配带有通配符‘%’的字符串‘王%
使用like匹配带有通配符‘_’的字符串‘王_’
下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符
AND多条件查询
条件表达式1 AND 条件表达式2
OR多条件查询
条件表达式1 OR 条件表达式2
AND与OR
当AND与OR一起使用时,AND要比OR先运算
LIMIT子句
limit n,m
n:开始位置
m:要检索的行数
对查询结果排序
ORDER BY 属性名 [ASC | DESC]
ASC:升序(默认升序)
DESC:降序
补充 代码后加 limit 1 即可求出最大/最小值
分组查询
GROUP BY 属性名 [having 条件表达式]
集合函数
COUNT()用来统计记录的条数;
SUM()用来计算字段的值的总和;
AVG()用来计算字段的值的平均值:
MAX() 用来查询字段的最大值;
MIN()用来查询字段的最小值。
正则表达式
属性名 REGEXP '匹配方式’
“^”
“^”查询以特定字符或者字符串开头的记录
“$”
“$”查询以特定字符或者字符串结尾的记录
“.”
“.”匹配字符串中的任意一个字符。
注意
“.”只能用于regexp关键字进行匹配
“_”不能用于regexp关键字进行匹配
‘[]’
[..]字符集合。匹配所包含的任意一个字符。
[^字符集合]”
匹配指定字符以外的字符
匹配指定字符串
需要用符号“|”隔开。只要匹配这些字符串中的任意一个即可
“*”和“+”
“+”:至少表示一个字符
“*”:可以表示0个字符
‘{m}’或者’{m,n}’来指定字符串连续出现的次数
{m}:m是一个非负整数。匹配确定的 m 次。
{m,n}:m 和 n 均为非负整数,其中m <= n。
算术运算符
比较运算符
大于、小于、
等于、不等于,主要用于数值
的比较和字符串的匹配上
运算符优先级
注释符
1、“#”,表示单行注释,语法“#注释内容”
2、“-- ”,表示单行注释,语法“-- 注释内容”
3、“/**/”,表示多行注释,语法“/*注释内容*/”
联合查询 : UNION
select * from venus1
union
select * from venus2
Order by 判断数量
嵌套查询
[NOT]IN、ANY、ALL、[NOT]EXISTS
1.子查询
2.子查询可以继续嵌套
3.子查询中不可以使用order by子句,只对最后结果排序
4.子查询要用括号括起来
查询函数
系统用户名:system_user()
查询语句:
select system_user();
select user from mysql.user
用户名:user()
查询语句:
select user();
当前用户名:current_user()
查询语句:
current_date()当前日期
selectcurrent_user();
连接数据库用户名:session_user()
查询语句:
Select session_user();
数据库名:database()
查询语句:
select database();
数据库版本:version()
查询语句:
select version();
数据库读取路径:@@basedir
查询语句:
show variables like '%basedir%';
MYSQL安装路径:@@char
查询语句:
show variables like "%char%";
查看当前系统版本:@@version_compile_os
查询语句:
select @@version_compile_os;
其他相关函数1:
left(s,n) #返回字符串s最左边的字符n是个数
right(s,n)#返回字符串s最右边的字符
substr(s,n,len)mid(s,n,len)
#截取字符串s的第n个字符,且截取长度为len
lpad(string,length,’str2’)rpad(string,length,’str’)
#string:需要填充的字符串length:填充之后的总长度str:填充字符串,默认空格
Locate(‘str’,’str1’) locate(str,str1,pos) locate(‘a’,’locala’,5)
#返回str在str1中第一次出现的位置 pos--从pos位置开始检索
insert(str1,pos,len,str2)
#str1:指定字符串 pos:开始被替换的位置 len:被替换字符串长度 str2:新字符串
instr(field, str)
#返回field字符串中出现str字符串的位置
position(str1 in str2)
#返回字符串中第一次出现的子字符串的位置,若没有返回0
判断当前用户的第一/最后字符
查询语句:
select left(user(),1)=’r’;
select right(user(),1)=’r’;
截取函数:
查询语句:
select substr(database(),2,1)=’e’;
select mid(database(),2,1)=’e’;
其它相关函数2:
concat(str1, str2,...) select concat(“
abc”,NULL,”fg”) NULL
#返回结果为连接参数产生的字符串
concat_ws(separator, str1, str2, ...) select concat_ws(“+”,”123”,”345”) 123+345
#用第一个参数作为连接符号将字符串连接
group_concat(str1)
#将group by产生的同一个分组中的值连接起来,返回一个字符串
if(expr,v1,v2) select if(1<2,1,0);
#expr:条件 满足条件返回V1,不满足条件返回V2
case when expr then v1 else v2 end
#满足expr,则返回V1,不满足则返回V2
sleep(N)
#执行select sleep(N)可以让此语句运行N秒
oct() #转换为8进制 ord() 返回第一个字符串的第一个字符的ascii值
hex() #转换为16进制
char() #转换为字符串
ascii() #ASCII值
数据库函数:
infomation_schema
information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类
型、访问权限等。
infomation_schema.schemata infomation_schema.tables infomation_schema.cloumns