day01 与MySQL的第一次亲密接触&基础查询&条件查询

《尚硅谷》MySQL系统课程一共6天,下面介绍第1天的学习内容,主要涉及MySQL的内容介绍、进阶1基础查询和进阶2条件查询。干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收获,那我们现在开始吧。

目录

与MySQL的第一次亲密接触

一、为什么要学习数据库

二、数据库的相关概念

三、数据库存储数据的特点

四、初识MySQL

(一)MySQL的背景

(二)MySQL的优点

(三)MySQL的安装

(四)MySQL服务的启动和停止

(五)MySQL服务的登录和退出

(六)MySQL常见的命令

(七)Mysql语法规范

(八)图形化用户界面客户端的安装

(九)SQL的语言分类

(十)补充

进阶1:基础查询

语法:

特点:

代码分析:

进阶2:条件查询

语法:

分类:

代码分析:

与MySQL的第一次亲密接触

一、为什么要学习数据库

保存数据的容器:数组,集合(前两个内存),文件

数据库的好处:实现数据持久化;使用完整的管理系统统一管理,便于查询

二、数据库的相关概念

1.DB 数据库(database):存储数据的仓库,它保存了一系列有组织的数据。

2.DBMS数据库管理系统(Database Management System):数据库是通过DBMS创建和操作的容器。

常见的数据库管理系统:MySQL、Oracle(贵)、DB2(海量数据)、SqlServer(只能安装在windows系统下)等

3.SQL结构化查询语言(Structure Query Language),用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库​软件通用的语言。

SQL的优点

①不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL

②简单易学

③虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

三、数据库存储数据的特点

1、数据存放到表中,然后表再放到库中

2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己

3、表具有一些特性,这些特性定义了数据在表中如何存储,类似于java中“类”的设计

4、表中有一个或多个列,列又称为“字段”,相当于java中“属性”

5、表中的每一行数据,相当于java中“对象”

四、初识MySQL

MySQL产品的介绍

(一)MySQL的背景

前身属于瑞典的一家公司,MySQL AB

08年被sun公司收购

09年sun被oracle收购

(二)MySQL的优点

1、开源、免费、成本低

2、性能高、移植性也好

3、体积小,便于安装

(三)MySQL的安装

属于c/s架构的软件,一般来讲安装服务端

• DBMS分为两类: 

– 基于共享文件系统的DBMS (Access ) 

– 基于客户机——服务器的DBMS (MySQL、Oracle、SqlServer)

企业版(收费)

社区版(免费)

Windows平台下下载:http://dev.mysql.com/downloads/mysql 

第一次安装建议放在默认路径下,一般在C盘,安装过程一直点击下一步。

(四)MySQL服务的启动和停止

方式一:通过命令行   以管理员身份运行cmd

    net start 服务名

    net stop 服务名

方式二:计算机——右击——管理——服务

(五)MySQL服务的登录和退出

方式一:通过程序自带的客户端登录(这种方式不建议使用,只适用于windows用户)

退出:输入exit或者Ctrl + C

方式二:通过windows自带的客户端登录

mysql 【-h 主机名 -P 端口号】 -u 用户名 -p密码

例如:C:\WINDOWS\system32>mysql -hlocalhost -P3306 -u root -p  

回车--输入隐藏密码

简写:C:\WINDOWS\system32>mysql -u root -p    默认连接本机

退出:exit或ctrl+C 

(六)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 --V

(七)Mysql语法规范

    1.不区分大小写,但建议关键字大写,表名、列名小写

    2.每条命令最好用分号结尾

    3.每条命令根据需要,可以进行缩进或换行

    4.注释

        单行注释:#注释文字

        单行注释:-- 注释文字

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

(八)图形化用户界面客户端的安装

推荐:SQLyog客户端     Navicat Premium客户端(可自行搜索安装)

(九)SQL的语言分类

1、DQL语言的学习--数据查询语言

基础查询

条件查询

排序查询

常见函数

分组函数

分组查询

连接查询

子查询

分页查询

union联合查询

2、DML语言的学习--数据操作语言

插入语句

修改语句

删除语句

3、DDL语言的学习--数据定义语言

库与表的管理

常见数据类型介绍

常见约束

4、TCL语言的学习--事务控制语言

事务与事务处理

(十)补充

1、视图的讲解

2、存储过程和函数

3、流程控制结构

 

进阶1:基础查询

语法:

select 查询列表 from 表名;

类似于:System.out.println(打印东西);

特点:

1、查询列表可以是:表中的字段、常量值、表达式、函数

2、查询的结果是一个虚拟的表格

代码分析:

USE myemployees;

#1.查询表中的单个字段

SELECT last_name FROM employees;


#2.查询表中的多个字段

SELECT last_name,salary,email FROM employees;


#3.查询表中的所有字段

#方式一:

SELECT 

    `employee_id`,

    `first_name`,

    `last_name`,

    `phone_number`,

    `last_name`,

    `job_id`,

    `phone_number`,

    `job_id`,

    `salary`,

    `commission_pct`,

    `manager_id`,

    `department_id`,

    `hiredate` 

FROM

    employees ;

#方式二:  

 SELECT * FROM employees;


 #4.查询常量值

 SELECT 100;

 SELECT 'john';


 #5.查询表达式

 SELECT 100%98;


 #6.查询函数

 SELECT VERSION();


 #7.起别名

 /*

 ①便于理解

 ②如果要查询的字段有重名的情况,使用别名可以区分开来

 */

 #方式一:使用as

SELECT 100%98 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;


#8.去重

#案例:查询员工表中涉及到的所有的部门编号

SELECT DISTINCT department_id FROM employees;


#9.+号的作用

/*

java中的+号:

①运算符,两个操作数都为数值型

②连接符,只要有一个操作数为字符串


mysql中的+号:

仅仅只有一个功能:运算符


select 100+90; 两个操作数都为数值型,则做加法运算

select '123'+90;只要其中一方为字符型,试图将字符型数值转换成数值型

            如果转换成功,则继续做加法运算

select 'john'+90;   如果转换失败,则将字符型数值转换成0


select null+10; 只要其中一方为null,则结果肯定为null

*/

#案例:查询员工名和姓连接成一个字段,并显示为 姓名

SELECT CONCAT('a','b','c') AS 结果;


SELECT 

    CONCAT(last_name,first_name) AS 姓名

FROM

    employees;

【案例讲解】基础查询

#1. 下面的语句是否可以执行成功  

SELECT last_name , job_id , salary AS sal

FROM employees; 


#2.下面的语句是否可以执行成功  

SELECT  *  FROM employees; 


#3.找出下面语句中的错误 

SELECT employee_id , last_name,

salary * 12 AS "ANNUAL  SALARY"

FROM employees;


#4.显示表departments的结构,并查询其中的全部数据

DESC departments;

SELECT * FROM `departments`;


#5.显示出表employees中的全部job_id(不能重复)

SELECT DISTINCT job_id FROM employees;


#6.显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT

SELECT 

    IFNULL(commission_pct,0) AS 奖金率,

    commission_pct

FROM 

    employees;

#-------------------------------------------

SELECT

    CONCAT(`first_name`,',',`last_name`,',',`job_id`,',',IFNULL(commission_pct,0)) AS out_put

FROM

    employees;

进阶2:条件查询

语法:

select  查询列表  ③

from  表名  ①

where  筛选条件   ② ;

分类:

    1、按条件表达式筛选

    简单条件运算符:> < = != <> >= <=

    2、按逻辑表达式筛选

    逻辑运算符:

    作用:用于连接条件表达式

        && || !

        and or not

    &&和and:两个条件都为true,结果为true,反之为false

    ||或or: 只要有一个条件为true,结果为true,反之为false

    !或not: 如果连接的条件本身为false,结果为true,反之为false

    3、模糊查询

        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:查询工资z在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

between and

in

is null|is not null

*/

#1.like

/*

特点:

①一般和通配符搭配使用

    通配符:

    % 任意多个字符,包含0个字符

    _ 任意单个字符

*/

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

select 

    *

from

    employees

where

    last_name like '%a%'; #abc

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

select

    last_name,

    salary

FROM

    employees

WHERE

    last_name LIKE '__n_e%';

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

SELECT

    last_name

FROM

    employees

WHERE

    last_name LIKE '_$_%' ESCAPE '$';#last_name LIKE '_\_%';

#2.between and

/*

①使用between and 可以提高语句的简洁度

②包含临界值(左&右)

③两个临界值不要调换顺序

*/

#案例1:查询员工编号在100到120之间的员工信息

SELECT

    *

FROM

    employees

WHERE

    employee_id >= 100 AND employee_id<=120;

#----------------------

SELECT

    *

FROM

    employees

WHERE

    employee_id BETWEEN 100 AND 120;

#3.in

/*

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

特点:

    ①使用in提高语句简洁度

    ②in列表的值类型必须一致或兼容

    ③in列表中不支持通配符

*/

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

SELECT

    last_name,

    job_id

FROM

    employees

WHERE

    job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';

#------------------

SELECT

    last_name,

    job_id

FROM

    employees

WHERE

    job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');


#4、is null

/*

=或<>不能用于判断null值

is null或is not null 可以判断null值

*/

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

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

    last_name,

    commission_pct

FROM

    employees

WHERE 

    salary IS 12000;

#推荐:安全等于  <=>


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

SELECT

    last_name,

    commission_pct

FROM

    employees

WHERE

    commission_pct <=>NULL;    

#案例2:查询工资为12000的员工信息

SELECT

    last_name,

    salary

FROM

    employees

WHERE 

    salary <=> 12000;

    
#is null pk <=>

IS NULL:仅仅可以判断NULL值,可读性较高,建议使用

<=>    :既可以判断NULL值,又可以判断普通的数值,可读性较低

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值