MySQL学习笔记(1)——查询

MySQL学习(一)

①mysql常见命令:

  1. 查看所有数据库

    show database;
    
  2. 打开指定的数据库

    use 库名
    
  3. 查看当前数据库的所有表:

    show tables;
    
  4. 查看其它库的所有表

    show tables from 库名;
    
  5. 创建一个表

    Crete table 表名(
    	列名 列类型,
    	列名 列类型
    	);
    
  6. 查看表结构

    desc 表名;
    
  7. 查看服务器版本

    方式一:
    登录到mysql幅度按:select version();
    方法二:没有登录:
    mysql -version
    

②MySQL规范

  1. 不区分大小写

    image-20210308124140931

(建议关键字大写,表名,列名小写)

  1. 每条命令需要用;结尾,但是你不写也没关系

  2. 每条命令根据需要,我们可以进行缩进或者换行

  3. 注释:

    ​ 单行注释:#注释文字

    ​ 单行注释:-- 注释文字

    多行注释: /* 注释文字 */

③DQL查询语句

1.表中信息分析image-20210308134336171

2.基础查询

语法:

select 查询列表 from 表明;

类似与:System.out.printf(打印的内容);

特点:

  1. 查询的列表可以是:表中的字段,常量值,表达式,函数
  2. 查询的是一个虚拟的表格
1)字段的查询
# 基础查询
#启用myemployees数据库
USE myemployees ;

#查询单个字段
SELECT 
  last_name 
FROM
  employees ;

#查询表中的多个字段
SELECT 
  last_name,
  salary,
  email 
FROM
  employees ;

#查询表中的所有字段
SELECT 
  * 
FROM
  employees ;

# 查询多个字段我们还可以用双击左边的方法进行查询
SELECT 
  `last_name`,
  `phone_number` 
FROM
  employees ;


2)查询其他信息
#查询常量值
SELECT 100;
SELECT 'john';

#查询表达式
SELECT 100*98;
SELECT 200%98

#查询相关函数
SELECT VERSION();
/*
mysql的版本信息*/
3)起别名
#查询常量值
SELECT 100;
SELECT 'john';

#查询表达式
SELECT 100*98;
SELECT 200%98

#查询相关函数
SELECT VERSION();
/*
mysql的版本信息*/

#起别名
/*
①便于理解
②如果需要查询的字段有重名的情况,使用别名可以将其分开
*/

#方法一
SELECT 100%98 AS 结果;
SELECT 
  last_name AS 姓,
  first_name AS 名 
FROM
  employees ;
  
#方法二
  SELECT 100%98 AS 结果;
SELECT 
  last_name 姓,
  first_name 名 
  FROM
  employees;

#案例:查询salary,显示结果为out put(有特殊符号别名加上引号)
SELECT salary AS “output” FROM employees;
  
  
  


image-20210308142515946

4)去重
 #去重
 
 #案例:查询所有的部门编号
 
 SELECT DISTINCT department_id FROM employees;
  
5)+号的作用
 #+号的作用
  /*
	java中的加号的作用:
	 1. 充当运算法
	 2. 充当连接符,只要一个是字符串就是连接符
	 
	 mysql中的加号的作用:
	 1.他只有运算符的作用
	   
	 select "190"+184,其中一个为字符型,他就会试图将其装换为数值型
	 
	 select “john”+90; ==90 如果转换失败那么,就会将字符转换为0
	 
	 select null+0,只要其中一方为null。那他的结果肯定为null
  
  */
  #案例查询员工的姓和名连接为一个字段并显示为姓名
  /*
  错误演示
    SELECT last_name+first_name AS 姓名 FROM employees; 

  */
  #正确示范
  SELECT CONCAT(last_name,first_name)AS 名字 FROM employees;

3. 条件查询

语法:

select 查询列表 from 表名 where 筛选条件

分类:
1. 按条件运算符筛选
 * 条件运算符:>   <  ,  =    ,**!=(<>)**   ,>= ,     <=
2. 按逻辑表达式筛选
 *  逻辑运算符
    	*  &&     ||     !(与或非)
    	*  and or  not
    	*  与的意思就是并且,两个为true才是true
    	*  或只要一个为true,结果就是true
    	*  非 not,连接的条件如果相同那么为true,否则为false
  1. 模糊查询
    • like
    • between and
    • in
    • is null
1)按条件表达式的筛选
#案例一 查询工资>12000的员工信息
SELECT * FROM employees WHERE salary>12000;

#案例二,查询部门名编号不小于90的员工名和部门编号
SELECT
	last_name,
	department_id
FROM
	employees
WHERE 
	department_id!=90;
2)按逻辑运算符筛选
#案例一 查询工资在10000-20000之间的员工名,工资,以及奖金
SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND
	salary<=20000;


#案例二  查询部门编号不是在90-110之间的,或者工资高于15000的员工信息
#方法一
SELECT * FROM 
	employees
WHERE
department_id<90 OR department_id>110 OR salary>15000;

	#方法二
SELECT * FROM 
	employees
WHERE
NOT(department_id>=90 AND department_id<=110) OR salary>15000;


3)模糊查询
①like的使用
#1.like--因为他只是模糊匹配,不是精确匹配
#案例一:查询员工名中包含字符A的员工信息
/*
特点:一般和通配符搭配使用:
%包含任意多个字符,也可以为空
_任意多个字符
*/
SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';
	
	
#案例二 查询员工名单中,第二个位e,第五个为a的员工名和工资
SELECT
 last_name,
 salary
 FROM
	employees
WHERE
	last_name LIKE '_e_a%';

#案例三查询用户名第二个字符为_的员工名
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_\_%'
	
#方法二:定义转义字符
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_@_%' ESCAPE '@';
	
②between and的使用
#2. between的使用
#查询员工编号在100-120之间的所有信息
/*
注意事项:
	1.使用我们的between and可以提高语句的简洁度
	2.包含临界值的
	3.中间的两个值不可以颠倒顺序	
	*/
SELECT 
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;
③in关键字的使用
/*
特点:
	1使用in做筛选比使用or做筛选提高的语句简洁度
	2. 里面的值需要都是同样的数据类型
	3.  不支持使用通配符
*/
#案例 :查询员工的工种编号是:IT_PROC, AD_VD, AD_DRES中的一个的
SELECT last_name ,job_id
FROM
	employees
WHERE
	job_id IN ('IT_PROT', 'AD_VP', 'AD_PRES');

④is null的使用
/*
= 或者<>不能判断不等于
is null 和is not noll 可以判断
*/

#案例一: 查询没有奖金的员工名和奖金率
SELECT 
	last_name,
	commission_pct
FROM

	employees
WHERE
	commission_pct IS NULL;
	
#案例2: 查询有奖金的员工名和奖金率
SELECT 
	last_name,
	commission_pct
FROM

	employees
WHERE
	commission_pct IS  NOT NULL;


#------下面是错误
SELECT
	*
FROM
	employees
WHERE
	salary IS 12000;
⑤安全等于
#安全等于<=>

/*
	1.可以判断null
	2.也可以判断普通类型
*/
#案例一: 查询没有奖金的员工名和奖金率

SELECT 
	last_name,
	commission_pct
FROM

	employees
WHERE
	commission_pct <=> NULL;
	
#案例二:
SELECT
	*
FROM
	employees
WHERE
	salary <=> 12000;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值