mysql-基础篇

这篇博客详细介绍了MySQL的基础知识,包括数据库的下载、安装、启动和链接,以及SQL语法、数据类型、函数、约束和多表查询等内容。还讨论了数据库版本、数据模型和SQL分类,并提供了大量实操示例,适合初学者入门。
摘要由CSDN通过智能技术生成

Mysql-基础篇

MySQL概述

数据库相关概念

名称 全称 简称
数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB)
数据库管理系统 操纵和管理数据库的大型软件 DataBase Management System(DBMS)
SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准 Structured Query Language(SQL)

MySQL数据库的介绍、下载、安装、启动以及链接

目前市场主流关系型数据库管理系统市场占有率排名:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sVXFEybM-1682390849141)(E:\08_MySQL\01-note\img\1.jpg)]

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。
  • SQL Server:Microsoft 公司推出的收费的中型数据库,C#、.net等语言常用。
  • PostgreSQL:开源免费的中小型数据库。
  • DB2:IBM公司的大型收费数据库产品。
  • SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
  • MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与MySQL数据库有很好的兼容性。

说在后面:

​ 不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用**SQL语言来进行统一操作的,因为SQL语言是操作关系型数据库的统一标准** 。

​ 所以即使我们现在学习的是MySQL,假如我们以后到了公司,使用的是别的关系型数据库,如:Oracle、DB2、SQLServer,也完全不用担心,因为操作的方式都是一致的。

MySQL数据库版本

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

MySQL官方提供了两种不同的数据库版本:

  • 社区版本(MySQL Community Server)
    • 免费, MySQL不提供任何技术支持
    • 本次学习采用的是MySQL最新的社区版-MySQL Community Server 8.0.26
  • 商业版本(MySQL Enterprise Edition)
    • 收费,可以使用30天,官方提供技术支持
MySQL数据库下载

下载地址:https://downloads.mysql.com/archives/installer/

MySQL数据库安装

要想使用MySQL,我们首先将MySQL安装好,可以根据下面的步骤,一步一步的完成MySQL的安装

  1. 双击官方下载下来的安装包文件
  2. 根据安装提示进行安装(输入MySQL中root用户的密码,一定要记得这个密码)
  3. 配置环境变量,将MySQL Server的安装目录下的bin目录添加到环境变量中
MySQL数据库启动停止

MySQL数据库安装完成之后,在系统启动后会自动启动MySQL服务,无需我们在手动启动

当然,我们也可以手动的通过指令启动停止,以管理员的身份运行cmd,进入命令窗口执行如下指令:

net start mysql80
net stop mysql80

-- 上述的mysql80是我们在安装mysql时,默认指定的mysql的系统服务名,不是固定的,如果未改动,默认就是mysql80

以管理员的身份运行cmd,在输入上述两条指令

MySQL数据库客户端链接
  • 使用MySQL提供的客户端命令行工具
    • 直接输入root用户的密码就行
  • 使用系统自带的命令行工具执行指令
    • 使用这种方式进行链接时,需要安装完毕后配置path环境变量
mysql [-h 127.0.0.1] [-p 3306] -u root -p
参数:
	-h :MySQL服务所在的主机IP
	-p :MySQL服务端口号,默认是3306
	-u :MySQL数据库用户名
	-p :MySQL数据库用户名对应的密码

[ ]内是可选参数。如果需要链接远程的MySQL,则需要加上这两个参数来指定远程主机ip,端口;如果是链接本地的MySQL,则无须指定这两个参数。

数据模型

  • 关系型数据库(RDBMS):
    • 建立在关系模型基础上,由多张相互连接的二维表组成的数据库。而所谓二维表,就是由行和列组成的表,类似Exce表格数据。
    • 基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库
    • 使用表存储数据,格式同一,便于维护
    • 使用SQL语言操作,标准同一,使用方便
  • 数据模型
    • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录

SQL

​ 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

SQL通用语法

  • SQL语句可以单行也可以多行书写,以**分号**结尾
  • SQL语句可以使用空格/缩进来增强语句的可读性
  • MySQL数据库的SQL语句**不区分大小写**,关键字建议使用大写
  • 注释:
    • 单行注释:–注释内容 或 #注释内容
    • 多行注释:/* 注释内容 */

SQL分类

SQL语句根据其功能,主要分为四类:

  • DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML: 数据操作语言,用来对数据库表中的数据进行**增删改**
  • DQL: 数据查询语言,用来**查询**数据库中表的记录
  • DCL: 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL(数据定义语言)

数据定义语言,用来定义数据库对象(数据库、表、字段)

数据库操作
  • 查询所有数据库:

show databases;

  • 查询当前数据库:

select database();

  • 创建数据库:

create database [ if not exists ] 数据库名 [ default charset 字符集 ][ collate 排序规则 ];

– 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。可以通过 if not exists 参数来解决这个问题,数据库不存在,就创建该数据库,如果存在,就不创建。

  • 删除数据库:

drop database [ if exists ] 数据库名;

– 如果删除一个不存在的数据库,将会报错。此时,可以加上 if exists ,如果数据库存在,再执行删除操作,否则不执行删除操作

  • 切换数据库:

use 数据库名;

– 我们要操作某一个数据库名下的表时,就需要通过该指令切换到对应的数据库名下,否则是不能操作的。

注意事项
  • UTF8字符集长度为3字节,有些符号占4字节,所以推荐用**utf8mb4**字符集
实操
创建一个itcast数据库,使用数据库默认的字符集
create database itcast;
创建一个ittest数据库,并且指定字符集
create datdbase ittest default chasrset utf8mb4;
表操作
  • 查询当前数据库所有表:

show tables;

  • 查看指定表结构:

desc 表名;

– 通过这条指令,我们可以查看到指定表的字段,字段的类型,以及是否可以为null,是否存在默认值等信息

  • 查询指定表的建表语句:

show create table 表名;

–通过这条指令,主要是用来查看建表语句的。有部分参数我们在建表时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等

  • 创建表结构:
CREATE TABLE 表名(
	字段1 字段1类型 [COMMENT 字段1注释],
	字段2 字段2类型 [COMMENT 字段2注释],
	字段3 字段3类型 [COMMENT 字段3注释],
	...
	字段n 字段n类型 [COMMENT 字段n注释]
)[ COMMENT 表注释 ];

ps:[···]内为可选参数,最后一个字段后没有逗号

表操作实操

创建一张表为 tb_user,对应的结构如下:id,name,age,gender。

create table tb_user(
	id int comment'编号',
  	name varchar(50) comment'姓名',
  	age int comment'年龄',
  	gender varchar(1) comment'性别'
) comment'用户表';
案例
  • 设计一张员工信息表,要求如下:
  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
  • 对应的建表语句如下:
create table emp( 
  
	id int comment '编号', 

	workno varchar(10) comment '工号', 

	name varchar(10) comment '姓名', 

	gender char(1) comment '性别', 

	age tinyint unsigned comment '年龄', 

	idcard char(18) comment '身份证号', 

	entrydate date comment '入职时间' 

) comment '员工表'; 

​ 表结构创建好了,里面的name字段是varchar类型,最大长度为10,也就意味着如果超过10将会报错。

表操作—修改
  • 添加字段:

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];

  • 修改数据类型:

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

  • 修改字段名和字段类型:

alter table 表名 change 旧字段名 新字段名 类型(长度) [ comment 注释][ 约束]

  • 删除字段:

ALTER TABLE 表名 DROP 字段名;

  • 修改表名:

ALTER TABLE 表名 RENAME TO 新表名;

  • 删除表:

DROP TABLE [IF EXISTS] 表名;

– 可选项 [IF EXISTS] 代表只有表名存在时才会删除该表,表名如果不存在,则不会执行删除操作

  • 删除表,并重新创建该表:

TRUNCATE TABLE 表名;

– 在删除表的时候,表中的数据全部都会被删除

表操作—修改—实操
  • 为emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)
ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';
  • 例:将emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';
  • 例:将emp表的字段username删除
alter table emp drop username;
  • 例:将emp表的表名修改为employee
alter table emp rename to employee;
  • 如果tb_user表存在,则删除tb_user表
drop table if exists tb_user;

图形化界面工具

使用DDL语句执行命令进行操作,主要存在以下几点问题:

  • 影响开发效率
  • 使用起来不直观也不方便

所以,在日常的开发中,会借助MySQL的图形化界面,来帮助我们简化开发,并且提高效率。目前MySQL主流的图形化界面工具主要有以下几种:

  1. Sqlyog
  2. Navicat
  3. DataGrip

DataGrip 图形化界面工具功能更加强大,界面提示更加友好

安装
  • 找到事先下载好的安装包,双击开始安装,点击next,一步一步的完成安装(傻瓜式安装)
使用
  • 添加数据源

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaH78xdV-1682390849141)(E:\08_MySQL\01-note\img\2.jpg)]

​ 配置以及驱动jar包下载完毕之后,就可以点击 test connection 就可以测试,是否可以连接MySQL,如果出现successed,就表明链接成功了。

  • 展示所有数据库

连接上MySQL服务之后,我们需要设置展示所有的数据库,Mysql后三个点 → 勾选 all schemas → 刷新

  • 创建数据库

右键 new → schema

  • 创建表

在指定的数据库上面右键:new → table

  • 修改表结构

在需要修改的表上面,右键选择 “modify table···”

  • 在 DataGrip 中执行SQL语句

在指定的数据库上,右键 选择 new → query console,然后就可以在打开的 query console 控制台编写 SQL 并执行SQL

DML(数据操作语言)

用来对数据库中表的数据记录进行 增 删 改 操作

  • 添加数据(insert)
  • 修改数据(update)
  • 删除数据(delete)
添加数据
  • 给指定字段添加数据:

INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …);

  • 给全部字段添加数据:

INSERT INTO 表名 VALUES (值1, 值2, …);

  • 批量添加数据:

INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …);

INSERT INTO 表名 VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …);`

添加数据实操
  • 例:给 employee 表所有的字段添加数据

    insert into employee(id,workno,name,gender,age,idcard,entrydate)
    values(1,'1','Itcast','男',10,'123456789012345678','2000-01-01');
    

    添加数据成功以后:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALwdcEtl-1682390849142)(E:\08_MySQL\01-note\img\3.jpg)]

  • 例:插入数据到employee表

    insert into employee values(2,'2','张无忌','男',18,'123456789012345670','2005-01- 01');
    
  • 例:批量插入数据到 employee 表,具体的SQL语句如下

    insert into employee values
    (3,'3','韦一笑','男',38,'123456789012345670','2005-01- 01'),
    (4,'4','赵敏','女',18,'123456789012345670','2005-01-01');
    
注意事项
  1. 字符串和日期类型数据应该包含在引号中
  2. 插入的数据大小应该在字段的规定范围内
  3. 插入数据时,指定的字段数序需要与值的顺序是一一对应的
修改数据
  • 修改数据:

UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, … [ WHERE 条件 ];

修改数据实操

例:修改id为1的数据,将name修改为Jack

update employee set name = 'jack' where id = 1;

例:修改id为1的数据,将name修改为小昭,将gender修改为女

update employee set name = '小昭',gender = '女' where id = 1;

例:将所有的员工入职日期修改为2022-09-01

update employee set entrydate = '2022-09-01';
注意事项

注意事项:修改语句条件可以有,也可以没有,如果没有条件,则会修改整张表中的所有数据

删除数据

DELETE FROM 表名 [ WHERE 条件 ];

删除数据实操

例:删除gender为女的员工

delete from employee where gender = '女';

例:删除所有员工

delete from employee;
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值