MySQL基础 Day01

MySQL服务端的登录和停止

mysql -u root -p // 登录

exit 或 Ctrl+c // 退出

MySQL常用命令

-- 显示有哪些数据库
show databases;

-- 打开指定数据库
use test;

-- 显示有哪些表
show tables;

-- 显示其他数据库中的表
show tables from mysql;

-- 创建表
create table stuinfo(id int, name varchar(20));

-- 看表的结构
desc stuinfo;

-- 看有哪些数据
select * from stuinfo;

-- 插入数据
insert into stuinfo (id, name) values (1, 'hello');

-- 修改数据
update stuinfo set name='liwei' where id=1;

-- 删除数据
delete from stuinfo where id=1;

查看当前数据库的版本

-- MySQL客户端中
select version();

-- cmd环境下
mysql --version
mysql -V

 MySQL语法规范

  1. 不区分大小写,但建议关键字大写,表名、列名小写;
  2. 每条命令用“;”结尾;
  3. 每条命令根据需要,可以进行缩进、换行。关键字单独一行;
  4. 注释
  5. 单行注释:
    #注释文字
    -- 注释文字(注意加空格!)

    多行注释:

    /* 注释文字 */

     

 

SQLyog

 询问:执行F9,格式化F10,可选中部分执行。

执行sql文件,手动刷新

DQL语言的学习

查询表中的字段

SELECT 查询列表 FROM 表名;

-- 特点:
-- 1. 查询列表可以是:表中的字段、常量值、表达式、函数
-- 2. 查询的结果是一个虚拟的表格

#查询单个字段

SELECT last_name FROM employees;

   

#查询表中的多个字段

SELECT last_name, salary, email FROM employees;

  

查询表中的所有字段

SELECT * FROM employees;

  

查询时的细节注意补充

选中指定的库,下面的操作就都在这个库中。

USE myemployees;

着重号“ ` ”,用来区分字段和关键字。

选中可以部分执行。

查询常量值、表达式、函数

SELECT 100;
SELECT 'john';

SELECT 100%98;

SELECT VERSION();

起别名

①便于理解
②要查询的字段有重名的情况,使用别名可以区分开来。

SELECT 100%98 AS 结果;
-- 方式一:使用AS
SELECT last_name AS 姓, first_name AS 名 FROM employees;

-- 方式二:使用空格
SELECT last_name 姓, first_name 名 FROM employees;

-- 案例:查询salary,显示结果为 out put
SELECT salary AS "out put" FROM employees;

去重

-- 不去重
SELECT department_id FROM employees;
-- 去重
SELECT DISTINCT department_id FROM employees;

+号的作用

java中的+号:

1.运算符:两个操作数都为数值型;
2.连接符:只要有一个操作数为字符串。

MySQL 中的+号:
仅仅用一个功能:运算符

-- 两个操作数都为数值型,则做加法运算 (1)
SELECT 100+90;

-- 只要其中一方为字符型,试图将字符型数值转换为数值型
-- 如果转换成功,则继续做加法运算 (2)
SELECT '123'+90;
-- 如果转换失败,则将字符型数值转换成0 (3)
SELECT 'john'+90;
-- 只要一方为 null,则结果肯定为null (4)
SELECT null+10;

concat

SELECT CONCAT(last_name, first_name) AS 姓名 FROM employees;

【案例讲解】基础查询

test_lesson01 基本SQL-SELECT语句

Q1. 下面的语句是否可以执行成功:

SELECT last_name, job_id, salary AS sal FROM employees;

A:可以执行成功,只是把 salary重命名为sal输出。

Q2. 下面的语句是否可以执行成功:

SELECT * FROM employees;

A:可以执行成功,查询employees数据表中的所有数据。

Q3:找出下面语句中的错误

SELECT employee_id, last_name, salary*12 "ANNUAL SALARY" FROM employees;

   

Q4:显示表 departments 的结构,并查询其中的全部数据

DESC departments;

SELECT * FROM departments;

  

Q5:显示出 表employees 的全部 job_id(不能重复)

SELECT DISTINCT job_id FROM employees;

!!!Q6:显示出表 employees 的全部列,各个列之间用逗号连接,列头显示成 out_put

SELECT CONCAT(`first_name`, ',', `last_name`) AS out_put FROM employees;

条件查询 介绍

SELECT 
        查询列表 
FROM
        表名
WHERE
        筛选条件;

分类:

一、按条件表达式筛选
条件运算符: >  <  =  !=  <>  >=  <=

二、按逻辑表达式筛选
逻辑运算符:&&  ||  !

三、模糊查询

  • like
  • between and
  • in
  • is null

条件运算符的使用

案例1:查询工资 >12000 的员工信息

SELECT 
        * 
FROM 
        employees 
WHERE 
        salary > 12000;

案例2:查询部门编号不等于90号的员工名和部门编号

SELECT
        last_name, 
        department_id
FROM
        employees
WHERE
        department_id <> 90;

逻辑运算符的使用

案例1:查询工资在10000到20000之间的员工名、工资以及奖金

SELECT
	last_name,
	salary,
	commission_pct
FROM 
	employees
WHERE
	salary >= 10000 AND salary <= 20000;

案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

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

模糊查询

like 关键字

一般和通配符搭配使用

通配符:
%任意多个字符,包含0个字符
_任意单个字符

案例1:查询员工名字中包含字符a的员工信息

SELECT 
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

SELECT 
	last_name, salary
FROM
	employees
WHERE
	last_name
LIKE
	'__e_a%';

案例3:查询员工名中的第二个字符为 _ 的员工名

SELECT 
	last_name
FROM
	employees
WHERE
	last_name
LIKE
    -- 转义
	'_\_%'; 
    -- 指定$为转义
    '_$_%' ESCAPE '$'; 

between and关键字

案例1:查询员工编号在100~200之间的员工信息

SELECT 
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

①可以提高语句的简洁度;
②包含临界值;
③两个临界值不能颠倒顺序。

in 关键字

判断某字段的值是否属于 in列表中的某一项

案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个的员工名和工种编号

SELECT
	last_name,
	job_id,
FROM
	employees
WHERE
	job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');

特点:
①提高语句的简洁度;
②in列表的值类型必须一致或兼容;
③不支持通配符。

is null 关键字

案例:查询没有奖金的员工名和奖金率

SELECT 
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

安全等于 <=>

案例1:查询没有奖金的员工名和奖金率

SELECT 
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
案例2:查询工资为12000的员工信息
SELECT
    last_name,
    commission_pct
FROM
    employee
WHERE
    salary <=> 12000;

is null:只可以判断null;
安全等于:既可以判断null值,又可以判断普通的数值,可读性较低。

作业:test_lesson02 过滤数据

1. 查询工资大于 12000 的员工姓名和工资

SELECT
	last_name,
	salary
FROM 
	employees
WHERE 
	salary>12000;

2. 查询员工号为 176 的员工的姓名和部门号和年薪

SELECT
	last_name,
	department_id,
	salary*12
FROM
	employees
WHERE
	`employee_id`>176;

3. 选择工资不在 5000 到 12000 的员工的姓名和工资

SELECT
	last_name,
	salary
FROM
	employees
WHERE
	salary NOT BETWEEN 5000 AND 12000;

4. 选择在 20 或 50 号部门工作的员工姓名和部门号

SELECT
	last_name,
	department_id
FROM 
	employees
WHERE
	department_id BETWEEN 20 AND 50;

5. 选择公司中没有管理者的员工姓名及 job_id

SELECT 
	last_name,
	job_id
FROM
	employees
WHERE
	manager_id IS NULL;

6. 选择公司中有奖金的员工姓名,工资和奖金级别

SELECT 
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

7. 选择员工姓名的第三个字母是 a 的员工姓名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '__a%';

8. 选择姓名中有字母 a 和 e 的员工姓名

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '%e%' AND last_name LIKE '%a%';

9. 显示出表 employees 表中 first_name 以 'e'结尾的员工信息

SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%e';

10. 显示出表 employees 部门编号在 80-100 之间 的姓名、职位

SELECT
	last_name,
	job_title
FROM
	employees,jobs
WHERE
	department_id BETWEEN 80 AND 100;

11. 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位

SELECT
	last_name,
	job_title,
FROM
	employees, jobs
WHERE	
	manager_id IN (100, 101, 110);

测试题1

1. 查询没有奖金,且工资小于18000的salary, last_name

SELECT
	salary, 
	last_name
FROM
	employees
WHERE
	commission_pct IS NULL
AND
    salary<18000;

2. 查询employee表中,job_id不为 'IT' 或者工资为 12000 的工资信息

SELECT
	*
FROM
	employees
WHERE
	job_id<>'IT' OR salary=12000;

3. 查看部门department表的结构,查询效果如下

DESC departments;

4. 查询部门department表中涉及到了哪些位置编号

SELECT DISTINCT location_id FROM departments;

5. 经典面试题:下面两个语句执行结果是否相同?

SELECT * FROM employees;
SELECT * FROM employees WHERE commission_pct LIKE '%%' AND last_name LIKE '%%';

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值