重返MySQL之MySQL基础
重返MySQL之MySQL基础
本章详细介绍了,什么是数据库,常见的关系型数据库有哪些,什么是MySQL,及MySQL中DDL操作表,DML操作表记录。
1.0 数据库概述
1.1 数据存储的方式
- 目前来说如果我们要进行数据存储,有几种方式:
- 我们可以使用集合等方式将数据保存在内存中,但是数据不能持久化保存,断电/程序退出,数据就清除了
- 我们还可以将数据保存在普通文件中,可以持久化保存,但是查找,增加,修改,删除数据比较麻烦,效率低
- 所以我们需要一个既可以持久化保存数据又可以方便操作的地方来存储数据,这就是接下来要给大家介绍的数据库
1.2 什么是数据库
- 数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合. 还是以文件的方式存在服务器的电脑上的。
- 说白了就是数据的仓库, 用来持久化保存数据的.
1.3 常见的关系型数据库
- MySql :开源免费的数据库,中小型的数据库,后来Sun公司收购了MySql,而Sun公司又被Oracle收购
- Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MySql.
- DB2:IBM公司的数据库产品,收费的.银行系统中.
- SQLServer:MS公司.收费的中型的数据库.
- SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.
- SQLite: 嵌入式的小型数据库,应用在手机端.

2.0 知识点-数据库结构
- 数据库是用来存储数据的,那么到底通过什么样的方式来存的. 结构是怎么样的呢?
- 数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
- 数据库管理系统、数据库和表的关系如图所示:

3.0 什么是MySQL
3.1 MySQL始出
- MySQL是开源,多线程的关系型数据库,支持双重授权模式,最早是在瑞典MySQL AB公司开发,其MySQL取名,来源于Monty 大女儿My,MySQL以免费,可靠性,易用性,广受好评。
- 1996年MySQL发布1.0版本,同年十月MySQL发布3.11.1版本,当时只提供Solaris下的二进制版本,又一个月后,Linux下二进制包也发布,此时MySQL还非常简陋,只能在一个表中进行增删查改操作,并无其他功能。
- 之后MySQL被Sun公司收购,随后Sun被Oracle收购,所以目前MySQL属于Oracle旗下产品
4.0 MySQL安装
- MySQL安装没有什么技术要求,几乎是一路next,其中间只需要设置一下密码即可,我原来MySQL一直安装在虚拟机上面,所以本次也发布了一篇Windows10安装MySQL5.6的图文介绍其中包含了MYSQL安装与启动登录,文章连接:https://www.41it.cn/index.php/2021/08/01/mysqlinstall/
- MySQL图形化工具下载连接,解压即用无安装技术
- 链接:https://pan.baidu.com/s/1Dw5k-zI1yNcCil5-VGpjdQ
提取码:41it
5.0 SQL概述
5.1 什么是sql?
- SQL:Structure Query Language。(结构化查询语言),通过sql操作数据库(操作数据库,操作表,操作数据)
- SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准
- 各数据库厂商(MySql,oracle,sql server)都支持ISO的SQL标准。
- 各数据库厂商在标准的基础上做了自己的扩展。 各个数据库自己特定的语法

5.2 sql的语法
- 每条语句以分号结尾(命令行里面需要),如果在navicat,java代码中不是必须加的。
- SQL在window中不区分大小写,关键字中认为大写和小写是一样的
5.3 sql的分类
- Data Definition Language (DDL数据定义语言) 如:操作数据库,操作表
- Data Manipulation Language(DML数据操纵语言),如:对表中的记录操作增删改
- Data Query Language(DQL 数据查询语言),如:对表中的记录查询操作
- Data Control Language(DCL 数据控制语言),如:对用户权限的设置
6.0 DDL操作数据库

6.1 数据库增删查改
create database 数据库名 [character set 字符集][collate 校对规则] 注: []意思是可选的意思
-- 创建一个数据库名为41itblog的数据库
create database 41itblog;
-- 创建一个为41itblog2的数据库指定编码为GBK
create database 41itblog2 character set gbk;
-- 查看所有数据库
show databases;
-- 查看41itblog数据库定义结构
show create database 41itblog;
-- 删除数据库
drop databse 数据库名;
-- 修改数据库
alter database 数据库名 character set 字符集;
-- 切换数据库
use 数据库名;
-- 查看正在使用的数据库
select database();
7.0 DDL操作表增删查改
7.1 DDL创建表语法
create table 表名(
字段名 字段类型 [约束],
字段名 字段类型 [约束],
........
字段名 字段类型 [约束]
);
7.2 数据库数据类型
- 数据库数据类型一般可以分为三类,字符串,数值,日期
- 整型 一般使用int 或者bigint
- 浮点/双精度型
- 默认的范围 float或者double
- 指定范围 float(M,D) eg: float(4,2) 表达的范围: -99.99~99.99
- 字符串
- 固定长度 char(n) eg: char(20), 最大能存放20个字符. ‘aaa’, 还是占20个字符的空间
- 可变长度 varchar(n) eg:varchar(20), 最大能存放20个字符. ‘aaa’, 占3个字符的空间
- 一般使用varchar(n) 节省空间; 如果长度(eg:身份证)是固定的话 可以使用char(n) 性能高一点
- 关于大文件
- 一般在数据库里面很少存文件的内容, 一般存文件的路径
- 一般不使用二进制存, 使用varchar(n)存文件的路径
- 日期
- DATE 只有日期
- DATETIME 日期和时间

7.3 数据库字段约束
即规则,规矩 限制;
作用:保证用户插入的数据保存到数据库中是符合规范的
约束 约束关键字 主键 primary key 唯一 unique 非空 not null
约束种类:
- not null: 非空 ; eg: username varchar(40) not null username这个字段不能为空,必须要有数据
- unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo char(18) unique; cardNo字段不能出现重复的数据
- primary key;主键约束(非空+唯一); 一般用在表的id列上面. 一张表基本上都有id列的, id列作为唯一标识的
- auto_increment: 自动增长,必须是设置了primary key之后,才可以使用auto_increment
- id int primary key auto_increment; id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.
注意:
- 先设置了primary key 再能设置auto_increment
- 只有当设置了auto_increment 才可以插入null 自己维护 否则插入null会报错
id列: - 给id设置为int类型, 添加主键约束, 自动增长
- 或者给id设置为字符串类型,添加主键约束, 不能设置自动增长
7.4 创建数据库表
创建一张博客用户表(含有id字段,网名字段,性别字段.QQ字段 id为主键自动增长)
-- 创建一张博客用户表(含有id字段,网名字段,性别字段.QQ字段 id为主键自动增长)
create table blog_user(
id int primary key auto_increment,
name varchar(40),
sex varchar(40),
qq int
);

7.5 查看数据库表
-- 查看所有的表
show tables;
-- 查看表定义结构
desc 表名;
7.6 修改数据库表
- 修改数据库表语法
- 增加一列;alter table 表 add 字段 类型 约束;
- 修改列的类型约束; alter table 表 modify 字段 类型 约束 ;
- 修改列的名称,类型,约束;alter table 表 change 旧列 新列 类型 约束;
- 删除一列; alter table 表名 drop 列名;
- 修改表名 ; rename table 旧表名 to 新表名;
- 给blog_user表添加一个地址字段
alter table blog_user add address varchar(60) not null;
- 给blog_user表的sex字段改成int类型
alter table blog_user modify sex int;
- 给blog_user表的address字段修改成phone字段
alter table blog_user change address phone varchar(20);
- 把class字段删除
alter table blog_user drop phone;
- 把blog_user表修改成blog_article
rename table blog_user to blog_article;
7.7 删除数据库表
-- 删除表语法
drop table 表名;
-- 删除blog_article
drop table blog_article;
8.0 DML操作表记录-增删改
准备工作: 创建一张博客用户表(用户id,用户名字,用户年龄,用户地址
create table blog_user(
user_id int primary key auto_increment,
user_name varchar(40),
user_age int,
user_address varchar(80)
);
8.1 插入数据
- 插入方式一: 插入指定列,如果没有把这个列进行列出来, 以null进行自动赋值了
insert into 表(列,列..) values(值,值..);
- 插入方拾二:插入所有列
-- 注意 创建数据库时候需要将编码设置为utf8
insert into 表 values(值,值....);
eg:
insert into blog_user values(null,'张三',18,'河南');
insert into blog_user values(null,'李四',19,'湖南');
insert into blog_user values(null,'王二',50,'河北');
insert into blog_user values(null,'赵武',7,'湖北');
8.2 更新记录
- 更新记录语法
update 表 set 列 =值, 列 =值 [where 条件]
-- 将所有用户年龄改为18
update blog_user set user_age = 18;
-- 将用户名是张三的年龄改为50
update blog_user set user_age =50 where user_name='张三';
-- 将用户名是李四的年龄改为25地址改为北京
update blog_user set user_age =25 , user_address='北京' where user_name='李四';
-- 用户名是王二的年龄在原有的基础上增加两岁
update blog_user set user_age =user_age+2 where user_name='王二';
8.3 删除记录
- delete删除记录语法
delete from 表 [where 条件]
-- 删除名字为张三的数据
delete from blog_user where user_name='张三';
-- 删除年龄小于25的数据
delete from blog_user where user_age < 25;
-- 删除所有记录
delete from blog_user ; - truncate 删除表
truncate table 表;
- delete 和truncate区别
- DELETE 删除表中的数据,表结构还在; 删除的记录可以找回
- TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表(空)。删除的记录不可以找回
- 逻辑删除和物理删除
- 物理删除: 真正的删除了, 数据不在, 使用delete就属于物理删除
- 逻辑删除: 没有真正的删除, 数据还在. 搞一个标记, 其实逻辑删除是更新 eg: state字段 1 启用 0禁用
- delete 和truncate区别
- 这里只有DML操作表其中的增删改,关于DML操作表的查询语法将在下一个章节叙述,查询表相对来说稍有复杂其中还包含,单表查询,多表查询,子查询,外连接,内连接,左右外连接等。
重返MySQL之MySQL基础的更多相关文章
- MySQL 调优基础(一) CPU与进程
一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...
- 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建
数据库基础概述 大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...
- (2.16)Mysql之SQL基础——函数
(2.16)Mysql之SQL基础——函数 关键词:mysql函数,mysql自定义函数,mysql聚合函数,mysql字符串函数,mysql数值函数 1.自定义函数 -- (1)一般形式 creat ...
- (2.15)Mysql之SQL基础——开发设计最佳规范
(2.15)Mysql之SQL基础——开发设计最佳规范 关键字:mysql三大范式,mysql sql开发规范 分析: show profile.mysqllsla.mysqldrmpslow.exp ...
- (2.14)Mysql之SQL基础——游标
(2.14)Mysql之SQL基础——游标 关键词:Mysql游标 -- (1)定义游标 declare cur_name cursor for select * from table_name wh ...
- (2.13)Mysql之SQL基础——触发器
(2.13)Mysql之SQL基础——触发器 关键词:Mysql触发器 1.一般形式 -- 0.查看触发器[1]SHOW TRIGGERS;[2]SELECT * FROM `information_ ...
- (2.11)Mysql之SQL基础——存储过程与变量
(2.11)Mysql之SQL基础——存储过程 关键字:mysql存储过程 查看存储过程: []SELECT * FROM information_schema.ROUTINES WHERE ROUT ...
- (2.10)Mysql之SQL基础——约束及主键重复处理
(2.10)Mysql之SQL基础——约束及主键重复处理 关键词:mysql约束,批量插入数据主键冲突 [1]查看索引: show index from table_name; [2]查看有约束的列: ...
- (2.9)Mysql之SQL基础——索引的查看与删除
(2.9)Mysql之SQL基础——索引的查看与删除 关键词:mysql索引查看,mysql索引删除 1.索引查询(以下包括主键,唯一,普通,复合,全文,但不包括外键) (1)按库查询 select ...
随机推荐
- XML从入门到深入(超详细)
一:什么是XML XML (eXtensible Markup Language)指可扩展标记语言,标准通用标记语言的子集,简称XML.是一种用于标记电子文件使其具有结构性的标记语言. XML可以标记 ...
- 开关电源(1)之BUCK降压变换器工作原理及Multisim实例仿真
开关电源(Switching Mode Power Supply)即开关稳压电源,是相对于线性稳压电源的一种的新型稳压电源电路,它通过对输出电压实时监测并动态控制开关管导通与断开的时间比值来稳定 ...
- Siamese network总结
前言: 本文介绍了Siamese (连体)网络的主要特点.训练和测试Siamese网络的步骤.Siamese网络的应用场合.Siamese网络的优缺点.为什么Siamese被称为One-shot分类 ...
- 单臂路由&链路捆绑
单臂路由&链路捆绑 目录 一.单臂路由 1.1.单臂路由作用 1.2.单臂路由实现不同VLAN间通信的原理 二.单臂路由相关命令配置 三.链路捆绑 3.1.以太网链路聚合原理 3.2.命令配置 ...
- 《算法详解:C++11语言描述》已出版
经过漫长的编写.修订和印刷过程,书籍<算法详解:C++11语言描述>终于出版了!目前本书已在各大电商平台上架,搜索书名即可找到对应商品.本书的特色在于: 介绍最新的C++11.C++14和 ...
- DDoS攻击的工具介绍
1.低轨道离子加农炮(LOIC) 1.1 什么是低轨道离子加农炮(LOIC)? 低轨道离子加农炮是通常用于发起DoS和DDoS攻击的工具.它最初是由Praetox Technology作为网络压力测试 ...
- 什么是DDoS黑洞路由?
1. 什么是DDoS黑洞路由? DDoS黑洞路由/过滤(有时称为黑孔)是缓解DDoS攻击的一种对策,网络流量将被路由到"黑洞"中并且丢失.如果在没有特定限制条件下实施黑洞过滤,合法 ...
- 2020年12月-第01阶段-前端基础-HTML CSS 项目阶段(四)
1. 品优购项目(四) 1). 详情页 detail.html 常用单词 名称 说明 主体 de_container 面包屑导航 crumb_wrap 产品介绍 product_intro ( int ...
- SpringBoot系列(十五)整合缓存,项目会用得到的技术
一.缓存有什么用? 缓存应该是我们每一个系统都应该考虑使用的,这样可以加速系统的访问,提升系统的性能.比如我们经常需要访问的高频数据,将此类数据放在缓存中,可以大幅度提升系统的响应速度.原因就是一般 ...
- 关于 C#的一些记录
1, 注意: 使用Linq to Sql 查询数据库的时候,进行where 判断需要注意.我使用的EF,以下为我的记录使用Contain 需要 使用 *.Contains("" + ...