重返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: 嵌入式的小型数据库,应用在手机端.

重返MySQL之MySQL基础

2.0 知识点-数据库结构

  • 数据库是用来存储数据的,那么到底通过什么样的方式来存的. 结构是怎么样的呢?

  • 数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。

  • 数据库管理系统、数据库和表的关系如图所示:

重返MySQL之MySQL基础

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.s1g.cn/index.php/mysql/12.html
  • 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标准。
  • 各数据库厂商在标准的基础上做了自己的扩展。 各个数据库自己特定的语法

重返MySQL之MySQL基础

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操作数据库

重返MySQL之MySQL基础

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 日期和时间
    重返MySQL之MySQL基础

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, 自动的增长进行填充进去, 避免重复了.

注意:

  1. 先设置了primary key 再能设置auto_increment
  2. 只有当设置了auto_increment 才可以插入null 自己维护 否则插入null会报错
    id列:
  3. 给id设置为int类型, 添加主键约束, 自动增长
  4. 或者给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
);

重返MySQL之MySQL基础

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 表;
  1. delete 和truncate区别
    • DELETE 删除表中的数据,表结构还在; 删除的记录可以找回
    • TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表(空)。删除的记录不可以找回
  2. 逻辑删除和物理删除
    • 物理删除: 真正的删除了, 数据不在, 使用delete就属于物理删除
    • 逻辑删除: 没有真正的删除, 数据还在. 搞一个标记, 其实逻辑删除是更新 eg: state字段 1 启用 0禁用
  3. 这里只有DML操作表其中的增删改,关于DML操作表的查询语法将在下一个章节叙述,查询表相对来说稍有复杂其中还包含,单表查询,多表查询,子查询,外连接,内连接,左右外连接等。

Original: https://www.cnblogs.com/lmhcblog/p/15102752.html
Author: 泪梦红尘blog
Title: 重返MySQL之MySQL基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590659/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • go interface{}使用

    先上代码 为什么会报错? 因为空接口拥有两个指针,内存布局上会占用两个机器字长。 对于长度为n的空接口切片而言,它的每个元素都是以2机器字长为单位的连续空间,因此总共会占用 2n个…

    数据库 2023年6月9日
    076
  • Atlassian Confluence 6.15.5 添加甘特图

    Atlassian Confluence 6.15.5 添加甘特图 Atlassian Confluence 编辑模式 工具栏 “+”→其它宏→视觉&amp…

    数据库 2023年6月9日
    085
  • mysql数据库创建数据库创建用户授权

    Liunx下登录数据库 mysql -u 用户名 -p 创建myblog用户,本地登录,口令是myblog create user ‘myblog’@&#8…

    数据库 2023年6月11日
    094
  • 能尽量用数据库代替内存就用吧,减少整天担心内存问题

    游戏不好搞啊,设计的东西,能尽量简单就简单,代码太多判断就写死行了,反正它运行起来是对的就行了。 情形:09:00 昨天发生了很痛苦的一件事情,那就是游戏中data内存同步不到da…

    数据库 2023年6月14日
    066
  • 使用JMeter进行MySQL的压力测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 前言 1. JMeter安装 2…

    数据库 2023年5月24日
    095
  • 一文读懂Redis

    Redis与NoSQL概述 Nosql的优势 使用nosql解决cpu与内存压力 使用nosql解决I/O压力 Nosql数据库的概述 NoSql= Not Only SQL 采用…

    数据库 2023年6月6日
    0106
  • proxySQL with MGR

    环境信息 hostname IP port role comm ms81 192.168.188.81 3399 master ms82 192.168.188.82 3399 s…

    数据库 2023年6月16日
    078
  • 组管理和权限管理

    组管理和权限管理 在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。 文件所有者,谁创建了这个文件就是这个文件的…

    数据库 2023年6月16日
    0220
  • Redis缓存雪崩、缓存穿透、缓存击穿

    缓存雪崩 Redis中的缓存数据是有过期时间的,当在同一时间大量的缓存同时失效时就会造成缓存雪崩。解决方案1、设置Redis中的key永不过期,缺点是会占用很多内存2、使用Redi…

    数据库 2023年6月14日
    092
  • Java压缩图片

    压缩图片 一、压缩原理 一张原始图像(1920×1080),如果每个像素32bit表示(RGBA),那么,图像需要的内存大小1920x1080x4 = 8294400 B…

    数据库 2023年6月6日
    088
  • MySQL函数1(单行函数)

    单行函数 函数的理解 分类 数值函数 基本函数 PI()无参数 CETL \ CETLING()天花板函数(取比自己大的相邻的数) FLOOR()地板函数(取比自己小的相邻的数) …

    数据库 2023年5月24日
    0100
  • MySQL 8 新特性之Clone Plugin

    Clone Plugin是MySQL 8.0.17引入的一个重大特性,为什么要实现这个特性呢?个人感觉,主要还是为Group Replication服务。在Group Replic…

    数据库 2023年6月11日
    0114
  • [LeetCode]7. 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321示例 2: 输入: -123输出: -321示例 3: 输入: 1…

    数据库 2023年6月9日
    081
  • MySQL8.0.26的安装与配置——详细教程

    网上的教程有很多,基本上大同小异。 但是安装软件有时就可能因为一个细节安装失败。 我也是综合了很多个教程才安装好的,所以本教程可能也不是普遍适合的。 二、Mysql 配置 1.解压…

    数据库 2023年6月9日
    092
  • mysql 5.7命令行安装(windows)

    下载mysql-5.7.xx-winx64 ZIP版,https://dev.mysql.com/downloads/mysql/5.7.html 拷贝压缩包文件mysql-5.7…

    数据库 2023年5月24日
    073
  • 用户后台管理

    User Management 这是通过SpringBoot完成的用户后台管理系统 一些解释说明也在代码里面, 源码及资源 会放在文末哦!!! – 这是效果图 大概就这…

    数据库 2023年6月16日
    0114
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球