MySQL

本文详细介绍了MySQL数据库的基础知识,包括数据库的概念、关系型数据库的定义、常见数据库产品和MySQL的特点。深入讲解了如何连接MySQL服务器,操作数据库、表的创建、删除和查看,以及SQL语言的基本用法,如插入、查询、更新和删除表记录。内容涵盖了从基础的SQL查询到复杂的多表查询,如连接查询、子查询和分组排序,还涉及到数据库备份与恢复的实践操作。
摘要由CSDN通过智能技术生成

1.数据库概述

1.1 什么是数据库

所谓的数据库就是指存储和管理数据的仓库
扩展内容1:数据库有哪些分类?(了解)

早期: 层次式数据库、网络型数据库
现在:关系型数据库、非关系型数据库

1.2 什么是关系型数据库

底层以二维表的形式保存数据的库就是关系型数据库
stu-学生表

学生编号 姓名 年龄
1001 刘沛霞 35
1002 陈子枢 18

扩展内容2:常见的关系型数据库有哪些?(了解)
sql Server:微软提供,收费,适用于一些中型或大型的项目中,在java中的使用占比不高(.net中使用的较多)
Oracle:甲骨文公司提供,收费,适用于一些大型或者超大型的项目中,在java中的使用占比非常高
mysql:瑞典MySQLAB公司提供,免费开源,适用于一些小型或者中型的项目中,在java中的使用占比较高(小巧轻量)
mariadb其实就是MySQL的一个分支,用法和MySQL完全一样
DB2:IBM公司提供,收费,在一些银行,金融等行业中使用较多。在java中的使用占比也不高
Sqlite:迷你数据库,嵌入式设备中(安卓、苹果手机、pad)

1.3 数据库相关概念

1.3.1 什么是数据库服务器

数据库服务器就是一个软件(比如mysql软件)将数据库软件安装在电脑上,当前电脑就是一个数据库服务器。就可以对外提供存取数据的服务
在一个数据库服务器中可以创建多个数据库(dataBases),每一个数据库都是一个单独的仓库

1.3.2 什么是数据库

数据库就是存储和管理数据的仓库,通常情况下,一个网站的中的所有数据会存放在一个数据库中。例如:

jd.com                db_jd(数据库)
taobao.com        db_taobao(数据库)

1.3.3 什么是表

一个数据库中可以创建多张表,每张表用于存储一类信息(数据库),例如:
jd.com中的用户数据 tb_user(表)
jd.com中的商品数据 tb_product(表)
jd.com中的订单数据 tb_order(表)

1.3.4 什么是表记录

一张表中可以包含多行表记录,每一行表记录用于存储某一个具体的数据

学生编号 姓名 年龄
1001 刘沛霞 35
1002 陈子枢 18

1.4 什么是SQL语言

SQL是一门用于操作关系型数据库的通用的语言(使用SQL可以操作所有的关系型数据库)
使用SQL可以操作数据库、表、表记录
(1)创建数据库、删除数据库、修改数据库、查询数据库
(2)创建表、删除表、修改表、查询表
(3)新增表记录、删除表记录、修改表记录、查询表记录
使用SQL也可以操作存储过程/视图/索引等。
提示:SQL是一个标准通用的操作关系型数据库的语言(普通话),每个数据库厂商为了增强自己数据库的功能,都提供了支持自己数据库的语言,称之为数据库的方言。方言不通用!

2.连接mysql服务器

通过命令行工具可以登录MySQL客户端,连接MySQL服务器,从而访问服务器中的数据

2.1 连接mysql服务器

mysql -uroot -p密码

-u:后面的root是用户名,这里使用的是超级管理员root
-p(小写的p):后面的root是密码,这里在安装MySQL时就已经指定的密码

2.2 连接mysql服务器并指定ip和端口

mysql -uroot -proot -h127.0.0.1 -P3306

-h:后面给出的127.0.0.1是服务器主机名或ip地址,可以省略的,默认连接本机
-P(大写的P):后面的3306是连接端口,可以省略,默认连接3306端口

2.3 退出客服端命令

quit或exit或\q

2.4 FAQ:常见问题

在这里插入图片描述
解决方法:复制mysql安装目录下的bin目录的路径,将bin目录的路径添加到path环境变量中!!
可以在cmd中通过 echo %path% 检查path环境变量的值。
扩展内容3:
(1)在cmd中连接mysql服务器之后,可以使用 #、/**/、-- 等符号添加注释,例如:
在这里插入图片描述
(2)在cmd中连接mysql服务器之后,在书写SQL语句时,可以通过 \c 取消当前语句的执行。例如:
在这里插入图片描述

3.数据库及表操作

3.1 创建、删除、查看数据库

提示: (1)SQL语句对大小写不敏感。推荐关键字使用大写,自定义的名称(库名,表名,列名等)使用小写

show databases; -- 查看当前数据服务器中的所有库
create database mydb1; -- 创建mydb1库

(2)并且在自定义名称时,针对多个单词不要使用驼峰命名,而是使用下划线连接。(例如:tab_name,而不是 tabName )

3.1.1 查看mysql服务器中所有数据库

show databases; -- 查看所有的数据库
show tables; -- 查看所有的表

3.1.2 进入某一数据库(进入数据库后。才能操作库中的表和表记录)

语法:use 库名;

use test; -- 进入/选中test库
use mysql; -- 进入/选中mysql库

查看已进入的库

select database();

3.1.3 查看当前数据库中的所有表

show tables;

3.1.4 删除test库

语法:drop database 库名;

drop database test; -- 删除test库

思考:当删除的库不能存在时,如何避免错误产生

drop database mydb1; -- 删除的库不存在会报错
drop database if exists mydb1; -- 如果存在,则删除mydb1库

3.1.5 重新创建mydb1库,指定编码为utf8

语法:create database 库名 charset 编码;
需要注意的是,mysql中不支持横杠(-),所以utf-8要写成utf8

create database mydb1 charset utf8;

如果不存在则创建mydb1

create database if not exists mydb1 charset utf8;

3.1.6 查看建库时的语句(了解,并验证数据库库使用的编码)

语法:show create database 库名;

show create database mydb1;

3.2 创建、删除、查看表

3.2.1 进入mydb1库,删除stu学生表(如果存在)

语法:drop table 表名;

use mydb1;
drop table if exists stu;

3.2.2 创建stu学生表(编号[数值类型]、姓名、性别、出生年月、考试成绩[浮点型]),建表的语法:

create table 表名(
	列名 数据类型,
	列名 数据类型,
	...
	列名 数据类型
);

sql语句:

use mydb1;
create table stu(
	id int,
	name varchar(20), -- 20表示该列中最多存20个字符
	gender varchar(10),
	birthday date,
	score double
);

3.2.3 查看stu学生表结构

语法:desc 表名;

desc stu;

在这里插入图片描述

4.新增、更新、删除表记录

4.1 往学生表(stu)中插入记录(数据)

语法:insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…);

insert into stu(id,name,gender,birthday,score)
values(1,'tom','male','1985-3-4',90);
/* 插入中文数据前,先 set names gbk; (只对当前窗口有效) */
insert into stu values(2,'王海涛','male','1995-4-5',85);
insert into stu values(3,'刘沛霞','female','1985-6-7',80);
-- 查询stu表中的所有记录
select * from stu;

提示:

(1)当为所有列插入值时,可以省写列名,但值的个数和顺序必须和声明时列的个数和顺序保持一致!
(2)SQL语句中的值为字符串或日期时,值的两边要加上单引号(有的版本的数据库双引号也可以,但推荐使用单引号)。
(3)(针对cmd窗口)在插入数据之前,先设置编码:set names gbk;
或者用以下命令连接mysql服务器:
	mysql --default-character-set=gbk -uroot -proot
等价于:
	mysql -uroot -proot
	set names gbk;

4.2 查询stu表所有学生的信息

语法:select 列名 | * from 表名

select * from stu;

4.3 修改stu表中所有成绩,加10分特长分

修改语法:update 表名 set 列=值,列=值,列=值…[where 子句];

update stu set score=score+10; -- mysql中不支持++

4.4 修改stu表中编号为1的学生成绩,将成绩改为83分

update stu set score=83 where id=1;

提示:where子句用于对记录进行筛选过滤,保留符合条件的记录,将不符合条件的记录剔除

4.5 删除stu表中所有的记录

删除记录语法:delete from 表名 [where 子句]

delete from stu; -- 默认删除表中的所有记录

仅删除符合条件的

delete from stu where id>1; -- 删除id大于1的

5.查询表记录

准备数据:以下练习将使用db10库中的表及表记录,请先进入db10数据库

5.1 基础查询

select语句用于从表中选取数据。结果别存储在一个结果表中(称为结果集)
语法:select 列名称 | * from 表名
提示:(1) *(星号)为通配符,表示查询所有列
(2)但使用 *(星号)有时会把不必要的列也查出来了,并且效率不如直接指定列名

5.1.1 查询emp表中的所有员工,显示姓名,薪资,奖金

select name,sal,bonus from emp;

5.1.2 查询emp表中的所有部门和职位

select dept,job from emp;

思考:如果查询的结果中,存在大量重复的记录,如何剔除重复记录,只保留一条?
在select之后、列名之前,使用distinct剔除重复的记录

select distinct dept,job from emp;

5.2 where子句查询

where子句查询语法;select 列名称 | * from 表名称 where 列 运算符 值
where子句后面跟的是条件,条件可以有多个,多个条件之间用连接词(or | and)进行连接
下面的运算符可在where子句中使用

操作符 描述
= 等于
<>或!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
between 在某个范围内
like 搜索某种模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值