mysql查询基本点

mysql的常见命令

1.查看当前所有的数据库

show databases;

2.打开指定的库

use 库名;

3.查看当前库的所有表

show tables;

4.查看其他库的所有表

show tables from 库名;

5.创建表

create table 表名(

列名 列类型,

列名 列类型,

......

)

6.查看表结构

desc 表名;

7.查看服务器的版本

方式一:登录到mysql服务端
SELECT version();
方式二:没有登录到mysql服务端
mysql --version
或
mysql --version()

MySQL的语法规范

  1. 不区分大小写,但建议关键字用大写,表名,列名小写;
  2. 每条命令最好用分号结尾;
  3. 每条命令根据需要,可以进行缩进或换行
  4. 注释 单行注释:#注释内容 单行注释:–注释内容 多行注释:/注释内容/

基础查询

语法: SELECT 查询列表 FROM 表名 类似于System.out.println(打印东西); 特点:
1.查询列表可以是:表中的字段,常量值,表达式,函数;
2.查询的结果是一个虚拟的表格;

		一.查询表中的单个字段
		
		SELECT 列名称 FROM 表名称
		
		二.查询表中所有字段
		
		SELECT * FROM 表名称
		
		三.查询常量值,表达式,函数
		
		SELECT 100;
		SELECT 100%98;
		SELECT VERSION();
		
		四.起别名
		
		方式一:使用AS
		例:SELECT 100%98 AS 结果;
		
		方式二:使用空格
		例:SELECT 100%98 结果;
		
		五.去重
		
		SELECT DISTINCT 列名称 FROM 表名称;
		
		六.+号的作用
		
		MySQL中的+号仅仅只有一个功能,运算符
		SELECT 100+90;两个操作都为数值型,则做加法运算
		SELECT '123'+90;其中一方为字符型,试图将字符型转化成数值型,如果转换成功,则继续做加法运算
		SELECT 'jojh'+90;如果转换失败,则将字符型转换成0;
		SELECT null+10;只要其中一方为null,则结果肯定为null;
		
		七.CONCAT函数
		用于将两个字符串连接起来,形成一个单一的字符串;
		CONCAT(str1,str2,......);
		例:SELECT CONCAT('11','22','33');
		结果:112233;

条件查询

语法: SELECT 查询列表 FROM 表名 WHERE 筛选条件;
分类:
一.按条件表达式筛选
条件运算符:> < = != <> >= <=;
二.按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
三.模糊查询
like
between and
in
is (not)null
注: like 通常与%和_结合使用
‘%a’ / /以a结尾的数据
‘a%’ / /以a开头的数据
‘%a%’ / /含有a的数据
a’ / /三位中中间为a的数据
a’ / /两位且结尾字母是a的
'a
’ / /两位且开头字母是a的;
between and
1.使用between and可以提高语句的简洁度
2.包含临界值
3.两个临界值不要调换位置;

in 含义:判断某字段的值是否属于in列表中的某一项 特点:
1.使用in可以提高语句简洁度;
2.in列表的值类似必须一致或兼容;

is (not)null
=或<>不能用于判断null值 is null或is not null 可以判断null值

三.排序查询

引入: SELECT * FROM 表名称 语法: SELECT 查询列表 FROM 表 (WHERE 筛选条件)
ORDER BY 排序列表(asc | desc)
特点:
1.asc代表的是升序,desc代表的是降序,如果不写,默认为升序;
2.ORDER BY子句中可以支持单个字段,多个字段,表达式,函数,别名
3.ORDER BY字句一般放在查询语句的最后面,limit字句除外;

四.常见函数

概念:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名; 好处:1.隐藏了实现细节;2.提高代码的重要性;
调用:SELECT 函数名(实参列表) (FROM 表);

特点:
1.叫什么(函数名)
2.干什么(函数功能) 分类:
1.单行函数
如CONCAT,length,ifnull等;
2.分组函数
功能:做统计使用,又称为统计函数,聚合函数,组函数
例:SELECT SUM(列名称)和AVG(列名称) 平均,MAX(列名称) 最大值,MIN(列名称) 最小值 FROM 表名称;

一.分组函数

功能:用于统计使用,又称为聚合函数或统计函数或组函数; 分类: sum 求和,avg 平均值,max 最大值,min 最小值,count
计算个数;

特点:
1.sum,avg一般用于处理数值型
max,min,count可以处理任何类型
2.以上分组函数是忽略NULL值
3.可以喝distinct搭配实现去重的运算
4.count函数一般使用count(*)用作统计行数
5.和分组函数一同查询的字段要求是GROUP BY 后的字段

count函数效率:MYISAM存储引擎下,count()的效率高;INNODB存储引擎下,count
(
) 和count(1)效率差不多,比count(字段)要高一些

五.分组查询

语法: SELECT 分组函数,列(要求出现在GROUP BY的后面) FROM 表 (WHERE 筛选条件)
GROUP BY 分组的列表 (ORDER BY 子句) 注意: 查询列表必须特殊,要求是分组函数和GROUP
BY后出现的字段;

六.连接查询

含义:又称多表查询,当查询字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有m行 表2有n行,结果=m*n行;
发生原因:没有有效的连接条件; 如何避免:添加有效的连接条件;

#一.sq192标准
#1.等值连接
#案例一:查询女生名和对应的男生名
SELECT NAME,boyname 
FROM boys,beauty 
WHERE beauty.boyfriend_id=boys.id;
#案例二:查询员工名和对应的部门名
SELECT last_name,department_name
FROM employee,departments
WHERE employee.‘department——id’=departments.‘department_id';
2.为表起别名
提高语句的简洁度
区分多个重名的字段
注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定;
4.可以加筛选?
#案例:查询有奖金的员工名,部门名
SELECT last_name,department_name,commission_pct
FROM employee e,departments d
WHERE e.‘department_id’=d.‘department_id’
AND e.‘commission_pct’IS NOT NULL
#案例2:查询城市名中第二个字符为o的部门名和城市名
SELECT department_name,city
FROM departments d,locations l
WHERE d.’location_id‘=l.‘location_id’
AND city LIKE ‘_o%’;

5.可以加分组?
#案例1:查询每个城市的部门个数
SELECT COUNT(*) 个数,city
FROM departments d,locations l
WHERE d.‘location_id’=l.‘location_id’
GROUP BY city;

#案例2:查询有奖金的每个部门的部门名和部门的领导编号和该部门的最低工资
SELECT department_name,manager_id,MIN(salary)
FROM departments d,employees e
WHERE d.‘department_id’=e.'department_id'
AND commission_pct IS NOT NULL
GROUP BY department _name,manager_id;

七.分类查询

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 (join
type join 表 on 连接条件 where 筛选条件 group by 分组字段 having
分组后的筛选 order by 排序后的字段) limit offset size;
offset要显示条目的起始索引(起始索引从0开始) size 要显示的条目个数; 例:查询第11条-第25条
SELECT * FROM 表名称 LIMIT 10,15; 特点:
1.limit 语句放在查询语句的最后
2.公式 要显示的页数page,每页的条目数size SELECT 查询列表 FROM 表 LIMIT (page-1)*size,size; 例:
size=10
page
1 0
2 10
3 20

八.联合查询

union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union …

应用场景: 要查询的结果来自多个表,且多个表没有直接的连接关系 特点:
1.要求多条查询语句的查询列数是一致的;
2.要求多条查询语句的查询的每一列的类型和顺序最好一致;
3.union关键字默认去重,如果使用union all可以包含重复项;

猜你喜欢

转载自blog.csdn.net/weixin_44756468/article/details/102516101