初始MySQL

1 数据库和SQL概述

1.1 数据库简介

数据库指的是长期存在计算机内、有组织、可共享的、大量数据的集合。数据是按照特定的数据模型来组织、存储在数据库中的。

1.2 数据库的好处

​ 1.持久化数据到本地
​ 2.可以实现结构化查询,方便管理

1.3 数据库相关概念

  • DB(database):数据库,保存一组有组织的数据的容器
  • DBMS(Database Management System):数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据
    • 常见DBMS:MySQL、Oracle、DB2、SqlServer等
  • SQL:结构化查询语言,用于和数据库通信的语言

1.4 SQL的语言分类

  • DML(Data Manipulate Language):数据操纵语言,用于添加、删除、修改数据库记录,并检查数据完整性

    关键字:insert, delete, update 等

  • DDL(Data Define Languge):数据定义语言,用于库和表的创建、修改、删除

    关键字:create, drop,alter等

  • TCL(Data Control Language):数据事务语言

  • DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)

    关键字:select, where 等

2 MySQL介绍和安装

2.1 MySQL介绍

MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。该数据库系统是由瑞典的 MySQL AB 公司开发、发布并支持,由 MySQL 的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的

官方网址:https://www.mysql.com/

2.2 MySQL安装

注意:安装路径不要包含中文或者空格等特殊字符(使用纯英文目录),默认安装在C盘。

具体安装步骤请参见《MySQL数据库安装手册》

2.3 MySQL服务的启动和停止

​ 方式一:计算机——右击管理——服务——MySQL
​ 方式二:通过管理员身份运行cmd命令提示行
​ net start mysql(启动服务)
​ net stop mysql(停止服务)

2.4 MySQL服务的登录和退出

​ 方式一:通过MySQL自带的客户端
​ 只限于root用户

​ 方式二:通过cmd命令提示行关闭,未配置MySQL环境变量,需在MySQL安装的bin下启动cmd

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

​ 退出:
​ exit或ctrl+C

2.5 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

2.7 MySQL的语法规范

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

使用“;”结尾

各子句一般分行写

关键字不能缩写也不能分行

合理使用缩进

注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */

2.7 DQL语言

2.7.1 简单查询
1. 查询表中所有记录
	* select * from 表名;

2. 基础查询
	1. 多个字段的查询
		select 字段名1,字段名2... from 表名;
		* 注意:
			* 如果查询所有字段,则可以使用*来替代字段列表。
	2. 查询常量值
		SELECT 100;
		SELECT 'john';
	3.查询表达式
		SELECT 100%98;
	6.查询函数
		SELECT VERSION();
		
	7.起别名
/*
①便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开来
*/
		#方式一:使用关键字AS
		SELECT 100%98 AS 结果;

		SELECT 
		last_name AS,
		first_name ASFROM employees;

		#方式二:使用空格
		SELECT last_name 姓,
		first_name 名
		FROM employees;
		
		# 案例:查询salary,显示结果为 out put
		SELECT salary  AS "out put" FROM employees;
	8. 去除重复:
		* distinct
		#案例:查询员工表中涉及到的所有的部门编号
		 SELECT DISTINCT `department_id` FROM `employees`;
	9.+号的作用 (运算符)
/*运算符
select 100+90 "结果"; 两个操作都是数值型,则是做加法运算
select '123' + 90;其中一个是字符型,试图将字符型转换成数值型,如果成功则是做加法运算
select 'john'+90;转换失败,则将字符符型转为0再做加法运算
select null+100;只要一方为null,结果肯定为null;
*/
		#案例:查询员工名和姓连接成一个字段,并显示为姓名
		SELECT CONCAT(`first_name`,`last_name`) AS "姓名" FROM `employees` ;
	10.ifnull() 判断是否为空,为空时可自定义返回值
		select ifnull(字段名,返回值) as 别名 , 字段名
		from employees;
	11.isnull() 判断是否为空,空返回1,不为空返回0
		select isnull(字段名) as 别名
		from employees;
		
课堂练习
1.下面的语句是否可以执行成功
	select last_name , job_id , salary as sal from employees;
	对的
2.下面的语句是否可以执行成功
	select  *  from employees;
	对的
3.显示表departments的结构,并查询其中的全部数据
	desc departments;
	select * from department;
4.显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
select
concat(`first_name`,',',`last_name`,',',IFNULL(`commission_pct`,0),',',`job_id`) AS "out_put"
from
	`employees`;

2.7.2 条件查询

# 进阶2:条件查询
/*
 语法:
	select  
		查询列表
	from
		表名
	where
		筛选条件;
		
分类:
	一、按条件表达式筛选
		条件运算符:> , < , = , != / <> , >= , <=
		
	二、按逻辑表达式筛选
	逻辑运算符:&& and 、|| or 、! not
		
	三、模糊查询
		like:一般和通配符搭配使用(%任意多个字符,包含0个字符 ;_任意单个字符)
		between and 
		in
		is null/is not null
		
*/

# 一、按条件表达式筛选 > , < , = , != / <> , >= , <=
#案列1:查询工资>12000的员工信息
SELECT 
	*
FROM 
	`employees` 
WHERE 	
	`salary`>12000;
#案列2:查询部门编号不等于90号的员工名和部门编号
SELECT 
	CONCAT(`last_name`,`first_name`) AS 员工名,
	`department_id` AS 部门编号
FROM 
	`employees`
WHERE
	`department_id`<>90;
	
	
# 二、按逻辑表达式筛选 && and 、|| or 、! not
# 案例1:查询工资在10000到20000之间的员工名、工资、奖金
SELECT 
	CONCAT(`last_name`,`first_name`) AS 员工名,
	`commission_pct` AS  奖金,
	`salary` AS 工资
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
# 案列1:查询员工名中包含字符a的员工信息
SELECT
	*
FROM
	`employees`
WHERE
	`last_name` LIKE '%a%';
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT
	`last_name`,
	`salary`
FROM 
	`employees`
WHERE
	`last_name` LIKE '__n_l%';
#案例3:查询员工名中第二个字符为_的员工名
SELECT
	`last_name`
FROM 
	`employees`
WHERE
	`last_name` LIKE '_$_%' ESCAPE '$'; #关键字escape转移标志,将其他符号作为转义字符

# 2.between and
/*
	①可以提高语句简洁度
	②包含临界值
	③两个临界值不能换顺序
*/
#案例1:查询员工编号在100到120之间的员工信息
SELECT
	*
FROM
	`employees`
WHERE
	`employee_id` BETWEEN 100 AND 200;

# 3.in
/*
	含义:判断某个字段的值是否属于in列表中的某一项
	特点:  ①使用in提高语句简洁度
		②in列表的值类型必须一致或兼容
		③不支持在字段中写通配符
*/
#案例1:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT
	`last_name`,
	`job_id`
FROM
	`employees`
WHERE
	`job_id` IN ('IT_PROG','AD_VP','AD_PRES');
	
# 4.is 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;
	
# 【补充】安全等于
# 案列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值,建议使用
<=>:可读性差

课堂练习
1. 查询员工号为176的员工的姓名和部门号和年薪
SELECT
	CONCAT(`last_name`,`first_name`) AS 姓名,
	`job_id` AS 部门号,
	`salary`*12 *(1+IFNULL(`commission_pct`,0))AS 年薪
FROM
	`employees`
WHERE
	`employee_id`=176;
2. 选择工资不在500012000的员工的姓名和工资
SELECT
	CONCAT(`last_name`,`first_name`) AS 姓名,
	`salary` AS 工资
FROM
	`employees`
WHERE
	`salary`<5000 OR `salary`>12000;
3. 选择在2050号部门工作的员工姓名和部门号
SELECT
	CONCAT(`last_name`,`first_name`) AS 姓名,
	`department_id` AS 部门号
FROM
	`employees`
WHERE
	`department_id`IN ('20','50');
4. 选择姓名中有字母a和e的员工姓名
SELECT
	CONCAT(`last_name`,`first_name`) AS 姓名
FROM
	`employees`
WHERE
	`last_name` LIKE "%a%e%";
5. 显示出表employees部门编号在80-100之间的姓名、职位
SELECT
	CONCAT(`last_name`,`first_name`) AS 姓名,
	`job_id`
	
FROM
	`employees`
WHERE
	`department_id` BETWEEN 80 AND 100;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值