Mysql单表查询

mysql> select 字段名称,字段名称2 from 表名 条件

简单查询:

mysql> select * from t3;

mysql> select name, salary, dep_id from employee5;

避免重复DISTINCT

select post FROM employee5;

select distinct post from employee5;

在字段前面加distinct,它看的是整体,并不是适用于所有的场景。通常仅用于某一字段。

通过四则运算查询

跟表没有关系的四则运算

可以利用mysql做单独的运算,跟任何库,任何表没关系

select 5.8*9.6;

Mysql单表查询_第1张图片

 select 5.8*9.6-(8+2)/3; 

select (5.8*9.6-(8+2)/3)%2;  取模

Mysql单表查询_第2张图片

mysql -u root -p'Helloworld123!' -e 'select 8*5'

 假如系统里面有mysql而且装好了,想做数学运算,不一定非得用shell了,可以调用mysql

mysql -e 'select 8*5'   调用mysql   -e想做什么把式子写上就行。这种没有shell本身简单,但是它的计算能力是shell的很多倍,shell完不成的很多操作它能完成。它的计算能力比shell强,比如,用shell做一个小数运算。

Mysql单表查询_第3张图片

 想拿到40,用awk拿,awk处理会自动忽略这些横线竖线和+号。只当作一个两行的数据

mysql -e 'select 8*5' | awk ‘NR==2{print}’   做复杂运算这是一个选择,但很少有人这么做,因为想用mysql,必须开启mysql访问。

做数学运算python也可以完成。直接调用python就好了,因为系统只要装好了,python百分之百就是装着的,不需要二次安装,yum就是python写的,只要yum能用python就可以用,python的计算能力更强,比mysql还强,shell完不成的可以直接调用python。

python -c 'print 5*9/2'      命令行里可以写也可以写到shell脚本里而且它计算小数的能力非常厉害

跟表有关系的四则运算

select name,post as aa,salary+1000 as salary from employee5; 修改别名 加薪  post 改为aa

mysql>select 5>3;   做关系运算,会拿这种东西当条件用

别名

mysq>select name as xingming,pass from db2.t3

定义显示格式

concat() 函数用于连接字符串,或者可以把不同的字符串连在一起

SELECT CONCAT(name, ' annual salary: ', salary*14) AS Annual_salary FROM employee5;

 单条件查询

select name,salary,sex from employee5 where salary=2200 and sex="male"; 工资是2200的男生

select name,salary,sex from employee5 where not salary=2200 and not sex="male"; 所有工资不是2200并且不是男生的 取反Mysql单表查询_第4张图片

 多条件查询

mysql>select math from db1.t1 where math>50 and math<600 范围

mysql>mysqlselect math from db1.t1 where not math>50;

关键字BETWEEN AND

select name,salary,sex from employee5 where salary between 5000 and 8000;

select name,salary,sex from employee5 where salary>=5000 and salary<=8000;

Mysql单表查询_第5张图片

关键字IS NULL

 NULL说明:

1、 等价于没有任何值、是未0知数。

2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。  

3、对空值做加、减、乘、除等运算操作,结果仍为空。

4、比较时使用关键字用"is null"和"is not null"。

5、排序时比其他数据都小(索引默认是降序排列,小→大),所以NULL值总是排在最前。

这一块记住一件事就行,要么等于空的时候,比如abc是一个字段,abc="" null   

Null和引号里的空是不一样的?

Null是不占内存空间的,它最小是真空。引号里的空是占内存空间的。

它也可以当做条件,比如哪个字段是空的可以用where t1 is null;(where 后面+字段名称 或者是非空的is not null)

排序查询

看里面有没有能按大小排序的列,如果有,就可以用排序查询,比如按工资进行排序,order by

mysql> select china from t1 order by china;  默认是升序的

mysql> select china from t1 order by china desc; 这里desc降序全称descending

mysql> select china from t1 order by china desc limit 3;  取前几个,默认初始位置为0

mysql> select china from t1 order by china desc limit 1,3; 取前几个

按多列排序:

select * from emp order by hire_date desc,salary desc;先按入职时间,再按薪水排序

限制查询的记录数

SELECT * FROM employee5 ORDER BY salary DESC LIMIT 3,5; //从第4条开始,共显示5条

分组查询

mysql> select count(gender),gender from t3 group by gender; 不适用于所有情况,比如,按男女分组,用的时候看场景

SELECT dep_id,GROUP_CONCAT(name) FROM employee5 GROUP BY dep_id; 按部门id分组

模糊查询

挺重要,将来在搞,备份恢复,和权限相关时就会用到,mysql里的通配符) 

在shell里的通配符  ?代表任意单个字符,在这里下划线代表任意单个字符,% 所有字符             *

mysql> select * from t1 where china like '%0%';  like像,模糊查询

正则查询

mysql> select name,salary,sex from employee5 where sex regexp 'e$';   以e结尾的

mysql> select name,salary,sex from employee5 where sex regexp '^m';   以m开头的

子查询

mysql> select name from t2 where math=(select max(math) from t2);函数

count() 数数

max() 最大值

min() 最小值

avg() 平均值

database() 查看当前数据库

user() 当前用户

now() 现在的时间

sum() 取和,比如想知道所有人的工资之后是多少

Mysql单表查询_第6张图片

 password()  设置密码的时候可能用到,用来给字符串加密的

md5()   用来判断某一个文件的内容是不是被修改了

比如系统里面,b.txt它就会有一个md5sum,里面的值是永远不会发生变化的,除非这个文件的内容发生变化。多了一个a一旦发生了变化,再去查md5值就发生了变化。可以用来判断某一个文件的内容是不是被人修改了。比如现在test目录下面有好多文件,我要去监控里面的文件是不是被人修改过,五分钟监控一次。这时就会用到md5sum。

power()  select power(3,2); 3的2次方

你可能感兴趣的:(Mysql,mysql,数据库,java)