MySQL基础&SQL入门


MySQL基础&SQL入门

1. 数据库的基本概念

1.1 什么是数据库

  • 1. 数据库(DataBase) 就是存储和管理数据的仓库
  • 2. 其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上

1.2 为什么使用数据库

数据存储方式的比较

 

 

 

通过上面的比较,我们可以看出,使用数据库存储数据, 用户可以非常方便对数据库中的数据进行增加, 删除, 修改及查询操作。

1.3 常见的数据库软件排行榜

2020年数据库排行

开发中常见的数据库

为什么选择MySQL ?

  • 1. 功能强大,足以应付web应用开发
  • 2. 开源, 免费

2. MySQL的安装及配置

2.1 安装MySQL

  • 详见 MySQL安装文档

2.2 卸载MySQL

  • 详见 MySQL卸载文档

2.3 MySQL环境变量配置

  • 详见 MySQL环境变量配置文档

2.4 MySQL的启动与关闭

2.4.1 方式一 : window服务启动 MySQL

1) 右键此电脑 --> 管理

2) 选择服务--> 找到MysQL服务

3) 右键选择 --> 启动或停止

2.4.2 方式二: DOS 命令方式启动

1) 首先以管理员身份 打开命令行窗口

2) 启动MySql

3) 关闭MySql

2.5 命令行登录数据库

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。

命令演示:

退出命令

2.6 SqlYog的使用

1) 简介

SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用 SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL 数据库

2) 具体安装教程 请查看

  • SQLyog安装教程

  

2.7 MySql的目录结构

1) MySQL安装目录

MySql的默认安装目录在 C:\Program Files\MySQL\MySQL Server 5.7

2) MySQL配置文件 与 数据库及 数据表所在目录

  • my.ini 文件 是 mysql 的配置文件,一般不建议去修改
  • data<目录> Mysql管理的数据库文件所在的目录
  • 几个概念
  • 数据库: 文件夹
  • 表: 文件
  • 数据: 文件中的记录

2.8 数据库管理系统

1) 什么是数据库管理系统 ?

  数据库管理系统(DataBase Management System,DBMS):指一种操作和管理维护数据库的大型软件。
  MySQL就是一个 数据库管理系统软件, 安装了Mysql的电脑,我们叫它数据库服务器.

2) 数据库管理系统的作用

  用于建立、使用和维护数据库,对数据库进行统一的管理。

3)数据库管理系统、数据库 和表之间的关系

  MySQL中管理着很多数据库,在实际开发环境中 一个数据库一般对应了一个的应用,数据库当中保存着多张表,每一张表对应着不同的业务,表中保存着对应业务的数据。

 

 

 

2.9 数据库表

  • 数据库中以表为组织单位存储数据
  • 表类似我们Java中的类,每个字段都有对应的数据类型

那么我们使用熟悉的Java程序来与关系型数据对比,就会发现以下关系:

3. SQL(重点)

3.1 SQL的概念

1) 什么是SQL ?

  结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

2) SQL 的作用

  • 是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL
  • 所有的关系型数据库都可以使用SQL
  • 不同数据库之间的SQL 有一些区别 方言

3.2 SQL通用语法

1) SQL语句可以单行 或者 多行书写,以分号 结尾 ; (Sqlyog中可以不用写分号)
2) 可以使用空格和缩进来增加语句的可读性。
3) MySql中使用SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写。
4) 注释方式

3.3 SQL的分类

注: 我们重点学习 DML 与 DQL!

3.4 DDL操作 数据库

3.4.1 创建数据库

3.4.2 查看/选择数据库

3.4.3 修改数据库

3.4.4 删除数据库

3.5 DDL 操作 数据表

3.5.1 MySQL常见的数据类型

1)常用的数据类型:

2) 详细的数据类型(了解即可)

注意:MySQL中的 char类型与 varchar类型,都对应了 Java中的字符串类型,区别在于:

  • char类型是固定长度的: 根据定义的字符串长度分配足够的空间。
  • varchar类型是可变长度的: 只使用字符串长度所需的空间

比如:保存字符串 "abc"

适用场景:

  • char类型适合存储 固定长度的字符串,比如 密码 ,性别一类
  • varchar类型适合存储 在一定范围内,有长度变化的字符串

3.5.2 创建表

语法格式:

  • 需求1: 创建商品分类表
  • SQL实现
  •  

     

  • 需求2: 创建测试表
  • SQL实现
  •  

     

  • 需求3: 快速创建一个表结构相同的表(复制表结构)
  • 语法格式:
  • 代码示例:

3.5.3 查看表

代码示例:

3.5.4 删除表

代码示例:

3.5.5 修改表

1)修改表名

语法格式:

需求: 将category表 改为 category1

2) 修改表的字符集

语法格式:

需求: 将category表的字符集 修改为gbk

3)向表中添加列, 关键字 ADD

  • 语法格式:
  • 需求: 为分类表添加一个新的字段为 分类描述 cdesc varchar(20)

4)修改表中列的 数据类型或长度 , 关键字 MODIFY

  • 语法格式:
  • 需求:对分类表的描述字段进行修改,类型varchar(50)

5)修改列名称 , 关键字 CHANGE

  • 语法格式
  • 需求: 对分类表中的 desc字段进行更换, 更换为 description varchar(30)

6)删除列 ,关键字 DROP

  • 语法格式
  • 需求: 删除分类表中description这列

3.6 DML 操作表中数据

  • SQL中的DML 用于对表中的数据进行增删改操作

3.6.1 插入数据

  • 语法格式:

1)代码准备,创建一个学生表:

2)向学生表中添加数据,3种方式

  • 方式1: 插入全部字段, 将所有字段名都写出来
  • 方式2: 插入全部字段,不写字段名
  • 方式3:插入指定字段的值

注意:
  1) 值与字段必须要对应,个数相同&数据类型相同
  2)值的数据大小,必须在字段指定的长度范围内
  3)varchar char date类型的值必须使用单引号,或者双引号 包裹。
  4)如果要插入空值,可以忽略不写,或者插入null
  5) 如果插入指定字段的值,必须要上写列名
  

3.6.2 更改数据

语法格式1:不带条件的修改

语法格式2:带条件的修改

1)不带条件修改,将所有的性别改为女(慎用!!)

2)带条件的修改,将sid 为3的学生,性别改为男

3)一次修改多个列, 将sid为 2 的学员,年龄改为 20,地址改为 北京

3.6.3 删除数据

语法格式1:删除所有数据

语法格式2: 指定条件 删除数据

1)删除 sid 为 1 的数据

2) 删除所有数据

3) 如果要删除表中的所有数据,有两种做法
  1. delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低
  2. truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高

3.7 DQL 查询表中数据

3.7.1 准备数据

复制代码
#创建员工表
表名 emp
表中字段:
eid 员工id,int
ename 姓名,varchar
sex 性别,char
salary 薪资,double
hire_date 入职时间,date
dept_name 部门名称,varchar
#创建员工表
CREATE TABLE emp(
eid INT,
ename VARCHAR(20),
sex CHAR(1),
salary DOUBLE,
hire_date DATE,
dept_name VARCHAR(20)
);
#添加数据
INSERT INTO emp VALUES(1,'孙悟空','男',7200,'2013-02-04','教学部');
INSERT INTO emp VALUES(2,'猪八戒','男',3600,'2010-12-02','教学部');
INSERT INTO emp VALUES(3,'唐僧','男',9000,'2008-08-08','教学部');
INSERT INTO emp VALUES(4,'白骨精','女',5000,'2015-10-07','市场部');
INSERT INTO emp VALUES(5,'蜘蛛精','女',5000,'2011-03-14','市场部');
INSERT INTO emp VALUES(6,'玉兔精','女',200,'2000-03-14','市场部');
INSERT INTO emp VALUES(7,'林黛玉','女',10000,'2019-10-07','财务部');
INSERT INTO emp VALUES(8,'黄蓉','女',3500,'2011-09-14','财务部');
INSERT INTO emp VALUES(9,'吴承恩','男',20000,'2000-03-14',NULL);
INSERT INTO emp VALUES(10,'孙悟饭','男', 10,'2020-03-14',财务部);
INSERT INTO emp VALUES(11,'兔八哥','女', 300,'2010-03-14',财务部);
复制代码

3.7.2 简单查询

  • 查询不会对数据库中的数据进行修改.只是一种显示数据的方式 SELECT
  • 语法格式
  • select 列名 from 表名
  • 需求1: 查询emp中的 所有数据
  • SELECT * FROM emp; -- 使用 * 表示所有列
  • 需求2: 查询emp表中的所有记录,仅显示id和name字段
  • SELECT eid,ename FROM emp;
  • 需求3: 将所有的员工信息查询出来,并将列名改为中文
  • 别名查询,使用关键字 as
  • 复制代码
    # 使用 AS关键字,为列起别名
    SELECT
    eid AS '编号',
    ename AS '姓名' ,
    sex AS '性别',
    salary AS '薪资',
    hire_date '入职时间', -- AS 可以省略
    dept_name '部门名称'
    FROM emp;
    复制代码
  • 需求4:查询一共有几个部门
  • 使用去重关键字 distinct
  • -- 使用distinct 关键字,去掉重复部门信息
    SELECT DISTINCT dept_name FROM emp;
  • 需求5: 将所有员工的工资 +1000 元进行显示
  • 运算查询 (查询结果参与运算)
  • SELECT ename , salary + 1000 FROM emp;

3.7.3 条件查询

如果查询语句中没有设置条件,就会查询所有的行信息,在实际应用中,一定要指定查询条件,对记录进行过滤

语法格式

select 列名 from 表名 where 条件表达式
* 先取出表中的每条数据,满足条件的数据就返回,不满足的就过

运算符

1) 比较运算符

运算符 说明
> < <= >= = <> != 大于、小于、大于(小于)等于、不等于
BETWEEN ...AND...

显示在某一区间的值
例如: 2000-10000之间: Between 2000 and 10000

IN(集合)

集合表示多个值,使用逗号分隔,例如: name in (悟空,八戒)
in中的每个数据都会作为一次条件,只要满足条件就会显示

LIKE '%张%' 模糊查询
IS NULL 查询某一列为NULL的值, 注: 不能写 = NULL

2) 逻辑运算符

运算符 说明
And && 多个条件同时成立
Or || 多个条件任一成立
Not 不成立,取反。

需求1:

# 查询员工姓名为黄蓉的员工信息
# 查询薪水价格为5000的员工信息
# 查询薪水价格不是5000的所有员工信息
# 查询薪水价格大于6000元的所有员工信息
# 查询薪水价格在5000到10000之间所有员工信息
# 查询薪水价格是3600或7200或者20000的所有员工信息

代码实现

复制代码
# 查询员工姓名为黄蓉的员工信息
SELECT * FROM emp WHERE ename = '黄蓉';
# 查询薪水价格为5000的员工信息
SELECT * FROM emp WHERE salary = 5000;
# 查询薪水价格不是5000的所有员工信息
SELECT * FROM emp WHERE salary != 5000;
SELECT * FROM emp WHERE salary <> 5000;
# 查询薪水价格大于6000元的所有员工信息
SELECT * FROM emp WH# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
# 查询薪水价格是3600或7200或者20000的所有员工信息
-- 方式1: or
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2: in() 匹配括号中指定的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);ERE salary > 6000;
复制代码

需求2:

# 查询含有'精'字的所有员工信息
# 查询以'孙'开头的所有员工信息
# 查询第二个字为'兔'的所有员工信息
# 查询没有部门的员工信息
# 查询有部门的员工信息

模糊查询 通配符

通配符 说明
% 表示匹配任意多个字符串
_ 表示匹配 一个字符
复制代码
# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';
# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';
# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';
# 查询没有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NULL;
-- SELECT * FROM emp WHERE dept_name = NULL;
# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;
复制代码

 

 

 



posted @   阿胖的阿多  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示