与数据库的初次相遇

MySQL基础&SQL入门

什么是数据库

  • 数据库是管理存储数据的仓库
  • 其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上。

为什么使用数据库

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

开发中常见的数据库

常用数据库比较
为什么选择MySQL?

  • 功能强大,足以应付WEB开发
  • 开源 免费

安装

第一步 安装包

  • 双击安装包文件 进行安安装包

第二步 Mysql协议

  • 同意Mysql协议 , 选择 Server Only安装Mysql服务器即可
    安装界面
    在这里插入图片描述
    第三步 安装前检查
  • 提示需要安装一个软件 visual studio ,我们选择安装一下

在这里插入图片描述

  • 选中同意, Install 安装
    在这里插入图片描述
    在这里插入图片描述

第四步 安装

  • Execut执行安装

在这里插入图片描述
在这里插入图片描述
第五步 产品配置

  • 下一步,开始配置
    在这里插入图片描述
  • 选择单机版配置
    在这里插入图片描述
  • 不用改动, 选择下一步即可

在这里插入图片描述

  • 为root用户 添加密码 确认密码
    在这里插入图片描述
  • 将Mysql添加到服务, 不需要更改,下一步即可

在这里插入图片描述

  • Execute, 进行更改配置

在这里插入图片描述

  • 安装完成 Finish
    在这里插入图片描述
  • Next
    在这里插入图片描述
  • Finish
    在这里插入图片描述
    第六步 安装完成
  • 点击电脑左下角的开始选项,我们可以看到Mysql
    在这里插入图片描述
  • 点击连接一下下,输入密码 回车,连接成功

在这里插入图片描述

MySQL的卸载

Mysql的卸载

  1. 定位数据库的数据文件位置
  1. 首先我们找到 Mysql安装目录下的 my.ini 文件

在这里插入图片描述

注意:
如果找不到,可以使用搜索工具 对 my.ini文件进行搜索

  1. 我们打开my.ini 文件,找到这样一段话
    这个定义的是mysql的数据库及数据表文件,我们将这段配置复制下来来
    datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data
    在这里插入图片描述
  1. 控制面板 卸载Mysql
    在【控制面板】中找到【程序】【卸载程序】,找到MySQL Server 5.5程序,然后点击右键,卸载,如图所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 手动删除 残余文件
    找到 我们第一步定位的,用来保存数据文件的目录
    C:/ProgramData/MySQL/MySQL Server 5.7/Data

在这里插入图片描述

  • 我们直接删除掉Mysql文件夹就可以

在这里插入图片描述

MySQL的环境变量配置

mysql本地环境变量的配置

  1. 找到Mysql的安装位置
    前面步骤完成后安装好MySQL,为MySQL配置环境变量。MySQL默认安装在C:\Program Files下。
    在这里插入图片描述

  2. 选择此电脑 右键属性
    在这里插入图片描述

  3. 选择 高级系统设置 环境变量
    在这里插入图片描述
    在这里插入图片描述

  4. 配置环境变量

  1. 新建MYSQL_HOME变量,并配置: C:\Program Files\MySQL\MySQL Server 5.7
    在这里插入图片描述
    MYSQL_HOME:C:\Program Files\MySQL\MySQL Server 5.6
    在这里插入图片描述
  2. 编辑path系统变量,将 %MYSQL_HOME%\bin 添加到path变量后。
    在这里插入图片描述
    注意:
    在这里插入图片描述
    提示:
    配置path环境变量,也可不新建MYSQL_HOME变量,而是直接将MySQL安装目录下的bin配置到path变量下
    即:C:\Program Files\MySQL\MySQL Server 5.7\bin

MYSQL的启动与关闭

  • 方式一:windows服务器启动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 方式二:DOS命令方式启动
    在这里插入图片描述
    在这里插入图片描述

命令行登录数据库

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

  • mysql -u 用户名 -p 密码
    说明:使用指定用户名和密码登录当前计算机中的MySQL数据库
    演示:mysql -uroot -p123456
  • mysql -h 主机IP -u 用户名 -p 密码
    说明:-h 指定IP 方式,进行 登录(h代表IP地址)
    演示: mysql -h127.0.0.1 -uroot -p123456
  • 退出命令:exit 或者 quit
    在这里插入图片描述

SQLyog

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

SQLyog安装

SQLyog安装教程

  • 本课程提供的是SQLyog 12免费版
  1. 双击 进行安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 修改安装路径
  • 默认是C盘,修改一下盘符
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  1. 测试连接
  • 直接连接就可以,不需要改动
    在这里插入图片描述
  • 连接成功
    在这里插入图片描述

MYSQL目录结构

1.MYSQL安装目录
在这里插入图片描述
2.MYSQL配置文件、数据库以及数据表所在目录
MYSQL目录结构
MYSQL自带数据库介绍
在这里插入图片描述

数据库管理系统

  1. 什么是数据库管理系统?
    数据库管理系统(DataBase Management System,DBMS):指一种操作和管理维护数据库的大型软件。
  2. 数据库管理系统的作用
    用于建立、使用和维护数据库,对数据库进行统一的管理。
  3. 数据库管理系统、数据库 和表之间的关系

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

数据表

  • 数据库中以表为组织单位存储数据
  • 表类似我们Java中的类,每个字段都有对应的数据类型
  • 那么我们使用熟悉的Java程序来与关系型数据对比,就会发现以下关系:
    小案例:在这里插入图片描述
    表与java 中的对应关系示例在这里插入图片描述

SQL的基本概念

  • 什么是SQL?
    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
  • SQL作用?
    1)是所有关系型数据库的统一查询规范,不同的关系型数据库都支持SQL
    2)所有的关系型数据库都可以使用SQL
    3)不同数据库之间的SQL 有一些区别 方言

SQL通用语法

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

  • show databases; 单行注释
  • – show databases; 单行注释
  • /*
    多行注释
    show databases;
    */

SQL的分类

  • 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。
  • 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新
  • 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录
  • 数据库控制语言:简称DCL(Date Control Language),用来定义数据库的访问权限和安全级别,及创建用户。(了解)
    图示更有助于理解:
    SQL分类

DDL操作 数据库

创建数据库

  • create database 数据库名; 创建指定名称的数据库。
    示例: create DATABASE db1;
/*
方式1 直接指定数据库名进行创建
默认数据库字符集为:latin1
*/
CREATE DATABASE db1;
  • 指定字符集:create database 数据库名 character set 字符集;创建指定名称的数据库,并且指定字符集(一般都指定utf-8)
    示例:
/*
方式2 指定数据库名称,指定数据库的字符集
一般都指定为 utf8,与Java中的编码保持一致
*/
CREATE DATABASE db1_1 CHARACTER SET utf8;

查询/查看数据库

  • use 数据库 切换数据库
  • select database(); 查看当前正在使用的数据库
  • show databases; 查看Mysql中 都有哪些数据库
  • show create database 数据库名; 查看一个数据库的定义信息。

示例:

-- 切换数据库 从db1 切换到 db1_1
USE db1_1;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 查看Mysql中有哪些数据库
SHOW DATABASES;
-- 查看一个数据库的定义信息
SHOW CREATE DATABASE db1_1;

修改数据库

  • alter database 数据库名 character set 字符集; 数据库的字符集修改操作。
-- 将数据库db1 的字符集 修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;
-- 查看当前数据库的基本信息,发现编码已更改
SHOW CREATE DATABASE db1;

删除数据库

  • drop database 数据库名 从MySql中永久的删除某个数据库。
    示例:
-- 删除某个数据库
DROP DATABASE db1_1;

DDL操作数据表

1. MySQL常见的数据类型
1)常用的数据类型:
int: 整型
double: 浮点型
varchar :字符串型
date: 日期类型,给是为 yyyy-MM-dd ,只有年月日,没有时分秒
2)详细的数据类型(了解即可)
在这里插入图片描述
注意:MySQL中的 char类型与 varchar类型,都对应了 Java中的字符串类型,区别在于:
– char类型是固定长度的: 根据定义的字符串长度分配足够的空间。
– varchar类型是可变长度的: 只使用字符串长度所需的空间。
示例:
char与varchar的对比结果
使用场景:
– char类型适合存储 固定长度的字符串,比如 密码 ,性别一类
– varchar类型适合存储 在一定范围内,有长度变化的字符串
在这里插入图片描述

2. 创建表
1)语法格式:CREATE TABLE 表名(
字段名称1 字段类型(长度),
字段名称2 字段类型 注意 最后一列不要加逗号
);
案例:创建商品分类表
在这里插入图片描述

-- 切换到数据库 db1
USE db1;
-- 创建表
CREATE TABLE category(
cid INT,
cname VARCHAR(20)
);

创建一个测试表
在这里插入图片描述

-- 创建测试表
CREATE TABLE test1(
tid INT,
tdate DATE
);

快速创建一个表结构相同的表(复制表结构)

  • 语法格式:create table 新表名 like 旧表名
    示例:
-- 创建一个表结构与 test1 相同的 test2表
CREATE TABLE test2 LIKE test1;
-- 查看表结构
DESC test2;

3. 查看表

  • show tables; 查看当前数据库中的所有表名
  • desc 表名; 查看数据表的结构
-- 查看当前数据库中的所有表名
SHOW TABLES;
-- 显示当前数据表的结构
DESC category;
-- 查看创建表的SQL语句
SHOW CREATE TABLE category;

4.删除表

  • drop table 表名; 删除表(从数据库中永久删除某一张表)。
  • drop table if exists 表名; 判断表是否存在, 存在的话就删除,不存在就不执行删除。
-- 直接删除 test1 表
DROP TABLE test1;
-- 先判断 再删除test2表
DROP TABLE IF EXISTS test2;

5.修改表

  • 修改表的名称
    rename table 旧表名 to 新表名
    案例: 将category表 改为 category1
RENAME TABLE category TO category1;
  • 修改表的字符集
    alter table 表名 character set 字符集
    案例: 将category表的字符集 修改为gbk
alter table category character set gbk;
  • 向表中添加列, 关键字 ADD
    alert table 表名 add 字段名称 字段类型
    案例:为分类表添加一个新的字段为 分类描述 cdesc varchar(20)
ALTER TABLE category ADD cdesc VARCHAR(20);
  • 修改表中列的 数据类型或长度关键字 MODIFY
    alter table 表名 modify 字段名称 字段类型
    案例:对分类表的描述字段进行修改,类型varchar(50)。
ALTER TABLE category MODIFY cdesc VARCHAR(50);
  • 修改列名称 , 关键字 CHANGE
    alter table 表名 change 旧列名 新列名 类型(长度);
    案例:对分类表中的 desc字段进行更换, 更换为 description varchar(30)。
ALTER TABLE category CHANGE cdesc description VARCHAR(30);
  • 删除列 ,关键字 DROP
    alter table 表名 drop 列名;
    案例: 删除分类表中description这列。
ALTER TABLE category DROP description;

整体代码总结:

/*
	创建表的语法格式
	create table 表名(
	   字段名称1 字段类型(长度),
	   字段名称2 字段类型,
	   字段名称3 字段类型 最后一个列不要添加逗号
	);
	
	MySql中常见的数据类型
		int 整型
		double 浮点型
		varchar 字符串
		date 日期类型 年月日 没有时分秒 yyyy-MM-dd
		datetime 日期时间类型 yyyy-MM-dd HH:mm:ss
		
*/

-- 创建商品分类表
/*
	表名 category
		cid int 分类id
		cname varchar 分类的名称
*/

-- 选择要使用的数据库
USE db1;

-- 创建分类表
CREATE TABLE category(
	cid INT,
	cname VARCHAR(20)
);

-- 创建测试表
/*
	表名 test1
		tid int 
		tdate date
*/
CREATE TABLE test1(
	tid INT,
	tdate DATE
);

-- 快速创建一个表结构相同的表(复制表结构)
-- 语法结构 create table 新表名称 like 旧表名称

-- 创建一个与test1表结构相同的 test2表
CREATE TABLE test2 LIKE test1;

-- 查看表结构
DESC test1;

-- 查看表
-- 查看当期那数据库中所有的数据表名
SHOW TABLES;

-- 查看创建表的 sql
SHOW CREATE TABLE category;

-- 查看表结构
DESC category;


-- 表的删除

-- 方式1: 将数据库中的某一张表永久删除
-- 语法格式: drop table 表名
DROP TABLE test1;

-- 方式2: 判断表是否存在, 如果存在就删除 如果不存在就不执行删除
DROP TABLE IF EXISTS test2;


/*
	修改表的名称
	修改表的字符集
	修改表中的某一列 (数据类型 名称 长度)
	向表中添加一列
	删除表中的某一列
*/

-- 修改表名称 语法格式: rename table 旧表名 to 新表名
RENAME TABLE category TO category1;

-- 修改表的字符集为 gbk 
-- 语法格式: alter table 表名 character set 字符集
ALTER TABLE category1 CHARACTER SET gbk; 

-- 向表中添加一个字段 关键字: add
-- 语法格式: alter table 表名 add 字段名称 字段类型(长度)
-- 添加分类描述字段
ALTER TABLE category1 ADD cdesc VARCHAR(20);


-- 修改表中列的类型或者长度 关键字 modify
-- 语法格式: alter table 表名 modify 字段名称 字段类型
-- 修改cdesc 字段的长度为 50
ALTER TABLE category1 MODIFY cdesc VARCHAR(50); -- 修改字段长度
ALTER TABLE category1 MODIFY cdesc CHAR(20); -- 修改字段类型

-- 修改列的名称 关键字: change
-- 语法格式: alter table 表名 change 旧列名 新列名 类型(长度)
-- 修改cdesc字段 名称改为 description varchar(30)
ALTER TABLE category1 CHANGE cdesc description VARCHAR(30);


-- 删除列 关键 drop
-- 语法格式: alter table 表名 drop 列名
ALTER TABLE category1 DROP description;

DML 操作表中数据

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

1. 插入数据
insert into 表名 (字段名1,字段名2…) values(字段值1,字段值2…);
1)准备一个学生表
表名:student
表中字段:
学员ID, sid int
姓名, sname varchar(20)
年龄, age int
性别, sex char(1)
地址, address varchar(40)

# 创建学生表
CREATE TABLE student(
sid INT,
sname VARCHAR(20),
age INT,
sex CHAR(1),
address VARCHAR(40)
);

2)向表中插入数据的三种方式:

  • 方式1: 插入全部字段, 将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address) VALUES(1,'孙悟空',20,'男','花果
山');
  • 方式2: 插入全部字段,不写字段名
INSERT INTO student VALUES(2,'孙悟饭',10,'男','地球');
  • 方式3:插入指定字段的值
INSERT INTO category (cname) VALUES('白骨精');

注意:

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

2. 修改表中的数据

  • 语法格式1:不带条件的修改;update 表名 set 列名 = 值
    案例:不带条件修改,将所有的性别改为女(慎用!!)
UPDATE student SET sex = '女';
  • 语法格式2:带条件的修改;update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]。
    案例:1.带条件的修改,将sid 为3的学生,性别改为男
    2.一次修改多个列, 将sid为 2 的学员,年龄改为 20,地址改为 北京
UPDATE student SET sex = '男' WHERE sid = 3;
UPDATE student SET age = 20,address = '北京' WHERE sid = 2;

3. 删除数据

  • 语法格式1:删除所有数据;delete from 表名
  • 语法格式2: 指定条件 删除数据;delete from 表名 [where 字段名 = 值]。
    案例:删除 sid 为 1 的数据;
    删除所有数据;
DELETE FROM student WHERE sid = 1;
DELETE FROM student;
  • 如果要删除表中的所有数据,有两种做法
    ** delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低。
    ** truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高
truncate table student;

DQL查询数据

准备一个数据表
#创建员工表
表名 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',财务部);

简单的查询
注意:查询不会对数据库中的数据进行修改.只是一种显示数据的方式 SELECT

  • 查询emp表中的所有数据
    语法格式:select 列名 from 表名;

案例: 1.查询emp中的 所有数据
2.查询emp表中的所有记录,仅显示id和name字段;
3.将所有的员工信息查询出来,并将列名改为中文;-----别名查询,使用关键字 as
4.查询一共有几个部门;----使用去重关键字 distinct
5. 将所有员工的工资 +1000 元进行显示;----运算查询 (查询结果参与运算)
示例:

SELECT * FROM emp; -- * 表示所有的列
SELECT eid, ename FROM emp;

-- 别名查询 使用关键字 as
SELECT 
	eid AS '编号',
	ename AS '姓名',
	sex AS '性别',
	salary AS '薪资',
	hire_date AS '入职时间',
	dept_name '部门名称'  -- as 可以省略

FROM emp;

-- 查询一共有几个部门
SELECT dept_name FROM emp;

-- 去重操作 关键字 distinct
SELECT DISTINCT dept_name FROM emp;

-- 将我们的员工薪资数据 +1000 进行展示
SELECT ename, salary+1000 AS salary FROM emp;

-- 注意: 查询操作 不会对数据表中的数据进行修改,只是一种显示的方式.

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

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

与查询条件搭配的各种查询运算符
各种查询运算符
案例:

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

代码实现:

# 查询员工姓名为黄蓉的员工信息
-- 1.查哪张表	2.查哪些字段	3.查询条件
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 WHERE salary > 6000;

# 查询薪水价格在5000到10000之间所有员工信息
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 10000;
SELECT * FROM emp WHERE salary >= 5000 AND salary  <= 10000;

# 查询薪水价格是3600或7200或者20000的所有员工信息
SELECT * FROM emp WHERE salary = 3600 OR salary = 7200 OR salary = 20000;
-- 方式2 使用 in() 匹配括号中的参数
SELECT * FROM emp WHERE salary IN(3600,7200,20000);

模糊查询 通配符
通配符
案例:

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

代码实现:

/*
	like '_精'
		% 通配符 ,表示匹配任意多个字符串
		_ 通配符 ,表示匹配一个字符
*/

# 查询含有'精'字的所有员工信息
SELECT * FROM emp WHERE ename LIKE '%精%';

# 查询以'孙'开头的所有员工信息
SELECT * FROM emp WHERE ename LIKE '孙%';

# 查询第二个字为'兔'的所有员工信息
SELECT * FROM emp WHERE ename LIKE '_兔%';

# 查询没有部门的员工信息
-- select * from emp where dept_name = null; 错误方式
SELECT * FROM emp WHERE dept_name IS NULL;

# 查询有部门的员工信息
SELECT * FROM emp WHERE dept_name IS NOT NULL;

-- 条件查询 先取出表中的每条数据,满足条件的就返回,不满足的就过滤.

注意: 查询是否为null,不可以使用 ==,需要使用IS进行判断。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值