MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用

文章目录

  • 一.数据库简介
    • 1.概念
    • 2.SQL语言
    • 3.关系型数据库
  • 二.数据库相关术语和概念
  • 三.Linux数据库的开启和连接
    • 1.安装数据库
    • 2.开启数据库服务
    • 3.连接数据库
    • 4.退出数据库
    • 5.强行进入数据库
  • 四.权限管理
    • 1.MySQL权限的两个阶段
    • 2.权限控制安全准则
    • 3.常用操作
  • 五.数据库的操作
    • 1.创建数据库
    • 2.查看数据库
    • 3.选择数据库
    • 4.修改数据库
    • 5.删除数据库
  • 六.表的操作
    • 1.表的创建
    • 2.查看所有的表
    • 3.显示表的结构
    • 4.修改表
    • 5.修改字段
    • 6.复制表
    • 7.删除表
  • 七.CURD语句的基本使用
    • 1.INSERT(插入)
    • 2.SELECT(查询)
    • 3.UPDATE(更新)
    • 4.DELETE(删除)

一.数据库简介

1.概念

数据库是一个按数据结构来存储和管理数据的计算机软件系统。简单来说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

2.SQL语言

SQL 全拼为 Structured Query Language, 即 “结构化查询语言”。
SQL语⾔诞⽣于1974年,是IBM提出的,但是关系型数据库在1970年已经出现,在没有出现SQL语⾔之前当时的查询语⾔依赖于复杂的数学逻辑和符号,查询语⾔成为关系型数据库发展的⼀个主要瓶颈,SQL的出现使没有接受过数学和计算机编程正规训练的用户也能简便的使用。
SQL 是⼀种特殊目的的编程语⾔,是⼀种数据库查询和程序设计语⾔,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本⽂件的扩展名。

3.关系型数据库

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第1张图片

二.数据库相关术语和概念

数据库:数据库是⼀些关联表的集合。
数据表:表是数据的矩阵。在⼀个数据库中的表看起来像⼀个简单的电子表格。
:⼀列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
:⼀行(=元组,或记录)是⼀组相关的数据,例如⼀条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯⼀的。⼀个数据表中只能包含⼀个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为⼀个索引键,⼀般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中⼀列或多列的值进行排序的⼀种结构。类似于书籍的目录。
参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的⼀致性。

三.Linux数据库的开启和连接

1.安装数据库

sudo apt install -y mysql-server mysql-client

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第2张图片

2.开启数据库服务

(1)Ubuntu : service mysql start|stop|restart|status
(2)Deepin : systemctl start|stop|restart|status mysqld
(3)CentOS7 : systemctl start|stop|restart|status mysqld
(4)CentOS6 : service mysqld start|stop|restart|status

3.连接数据库

各个 Linux 系统连接数据库都⼀样
语法: mysql -h localhost -uroot -pxxx -P3306
  -h : host(ip地址)  localhost = 127.0.0.1
  -u : username(用户账户)
  -p : password(密码)
  -P : port(端口,默认端口3306)
  
第一次连接数据库时,可以输入:sudo mysql -uroot,直接进入数据库。

备注:第⼀次使用 root 连接后最好添加⼀个新的用户来操作。出于安全考虑,日常开发中最好不要使用 root,后面会介绍怎么创建新用户,并设置密码。

4.退出数据库

四种方式效果一样:
(1)exit (2)quit (3)\q (4)快捷键:Ctrl + d

5.强行进入数据库

如果我们一开始连接数据库时,输入‘sudo mysql -uroot’进不去时,或者在以后长时间不用数据库,忘记密码时,我们可以通过以下的操作进入数据库
(1)打开配置:sudo vim /etc/mysql/my.cnf
(2)可在文件后面添加以下一段:

[mysqld]
skip-grant-tables

如果文件中已存在 [mysqld] , 则直接将 skip-grant-tables 写到其下方即可。
(3)修改完成后,保存退出,重启服务:
8.0之前的版本:sudo systemctl restart mysqld
8.0之后的版本:sudo systemctl restart mysql.service

查看数据库版本:mysql --version
在这里插入图片描述

四.权限管理

1.MySQL权限的两个阶段

(1)第⼀阶段为连接验证,主要限制用户连接 mysql-server 时使用的 ip 及 密码
(2)第⼆阶段为操作检查,主要检查用户执行的指令是否被允许,⼀般非管理员账户不被允许执行 drop、delete 等危险操作。

2.权限控制安全准则

(1)只授予能满足需要的最小权限,防止用户执行危险操作。
(2)限制用户的登录主机,防止不速之客登录数据库。
(3)禁止或删除没有密码的用户。
(4)禁止用户使用弱密码。
(5)定期清理无效的用户,回收权限或者删除用户。

3.常用操作

(1)创建账户、权限授予
  前面提到过,第⼀次使用 root 连接后最好添加⼀个新的用户来操作,这里会介绍如何创建新用户,并设置密码。
8.0之前的版本

GRANT ALL PRIVILEGES on *.* to '⽤户名'@'主机' IDENTIFIED BY "密 码" WITH GRANT OPTION;

通过下面的命令刷新使权限生效

flush privileges;  

ALL PRIVILEGES : 授予全部权限,也可以指定 select、insert 等
* . * : 代表该用户可以操作任何库、任何表
主机名可以使用’%’, 代表允许该用户从任何机器登陆
WITH GRANT OPTION : 带有该子句说明允许用户将自己拥有的权限授予别⼈

8.0之后的版本

CREATE USER `⽤户名`@`主机` IDENTIFIED BY '密码'; -- 创建账户
GRANT ALL ON *.* TO `⽤户名`@`主机` WITH GRANT OPTION; -- 授权

(2)修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';"

如果你在创建账户或者修改密码,出现了ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement的错误,不要惊慌,这可能是版本带来的问题,这时只需要再次输入:flush privileges; 来刷新就行了。
(3)查看权限

show grants; -- 查看当前用户的权限
show grants for 'abc'@'localhost'; -- 查看用户 abc 的权限

(4)回收权限

revoke delete on *.* from 'abc'@'localhost';

(5)删除用户

use mysql;
select host, user from user;
drop user ⽤户名@'%';

五.数据库的操作

1.创建数据库

create database [if not exists] `数据库名` charset=字符编码(utf8mb4);

[if not exists]:此语句可不加,主要为了防止创建的数据库已存在时报错,当数据库存在时,不会创建新的且不会报错。
为了防止自定义的 数据库名、表名、字段名 与关键字相冲突,可以加上反引号
为了防止遇到一些编码问题,库名、表名、字段名不要使用中文
字符集使用 utf8mb4, 默认的utf8字符集并不完整

在这里插入图片描述

2.查看数据库

show databases;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第3张图片

3.选择数据库

use `数据库的名字`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第4张图片

4.修改数据库

#只能修改字符集
alter database `数据库名` charset=字符集;

在这里插入图片描述

5.删除数据库

drop database [if exists] `数据库的名字`;

[if exists]:此语句可不加,主要为了防止删除不存在的数据库时报错。

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第5张图片

六.表的操作

表是建立在数据库中的数据结构,是⼀类数据的存储集。

1.表的创建

create table `表的名字`(字段名 属性...)charset=utf8mb4  engine=innodb;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第6张图片

字符集如果不指定, 默认继承库的字符集.
engine 默认是innodb

2.查看所有的表

选择数据库后,才能查看表

show tables;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第7张图片

3.显示表的结构

desc `表名`;
describe `表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第8张图片

4.修改表

# 修改表的名称
alter table `old_name` rename `new_name`;
# 修改表的引擎
alter table `表名` engine = innodb|myisam;
# 移动表到指定的数据库
alter table `表名` rename to 数据库名.表名;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第9张图片

5.修改字段

(1)增加⼀个新的字段

alter table `表名` add `字段名` 数据类型 [属性];

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第10张图片
(2)增加⼀个新的字段, 并放在首位

alter table `表名` add `字段名` 数据类型 [属性] first;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第11张图片
(3)增加⼀个新的字段, 并放在某⼀个字段之后

alter table `表名` add `字段名` 数据类型 [属性] after `指定字段`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第12张图片
(4)修改字段的属性

alter table `表名` modify `字段名` 数据类型 [属性];

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第13张图片
(5)修改字段的名称

alter table `表名` change `原字段名` `新的字段名` 数据类型 [属性];

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第14张图片
(6)修改字段的位置

alter table `表名` change `原字段名` `新的字段名` 数据类型 after `指定字段`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第15张图片
(7)删除字段

alter table `表名` drop `字段名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第16张图片

6.复制表

(1)先在创建⼀个表,并在表中插⼊⼀些数据
MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第17张图片
MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第18张图片
MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第19张图片
(2)复制表,并且复制数据

create table `复制表的名称` select * from `原表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第20张图片
此种复制方式的特点:
    完整的复制⼀个表,既有原表的结构,又有原表的数据
    表内字段的属性会丢失,主键的自增等特性不复存在,新插入数据时会有问题
    最好不要使用这种方式复制
    
(3)仅复制表结构, 不复制数据

create table `复制表的名称` like `原表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第21张图片
此种复制方式的特点:
    复制后的表结构与原表完全相同,字段的属性与原表也完全⼀致。但是里面没有数据,是⼀张空表。
    
如果需要,数据可以单独复制:

insert into `复制表的名称` select * from `原表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第22张图片

7.删除表

删除表必须在数据库中进行删除

drop table [if exists] `表名`

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第23张图片

七.CURD语句的基本使用

对表中数据的操作⼀般分为四类, 常记做 “CURD”:
  C: 创建(Create)
  U: 更新(Update)
  R: 读取(Retrieve)
  D: 删除(Delete)

1.INSERT(插入)

完整的insert语句为:

INSERT INTO `表名` (`字段1`, `字段2`, ...) VALUES (`1`, `2`, ...);

其中的INTO在MySQL数据库中可以省略,但在某些数据库中必须要有。
插入一行数据:

insert into `表名` set `字段1`=1, `字段2`=2;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第24张图片
插入多行数据,不指定具体字段时,需要将所有字段的值全部写出来:

insert into `表名` values (null,1,2, ...), (null,1,2, ...);

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第25张图片
插入多行数据,同时指定具体字段,后面的值应该和字段位置一一对应:

insert into `表名` (字段1, 字段2 ...) values (1,2, ...), (1,2, ...);

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第26张图片

2.SELECT(查询)

#通过 * 获取全部字段的数据
select * from `表名`;
#获取指定字段的数据
select `字段1`, `字段2` from `表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第27张图片

3.UPDATE(更新)

修改全表数据:

update `表名` set `字段1`=, `字段2`=;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第28张图片
使用 where 修改满足条件的行,where 类似于 if 条件,只执行返回结果为 True 的语句:

update `表名` set `字段1`=, `字段2`=where `字段`=;
update `表名` set `字段1`=, `字段2`=where `字段`>;
update `表名` set `字段1`=, `字段2`=where `字段`=or `字段`=;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第29张图片

4.DELETE(删除)

删除表中的所有数据 (逐行删除):

delete from `表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第30张图片
MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第31张图片

delete清空表特点:
     逐行清空全表
     速度相对较慢
     清空后,重新插入数据时,ID维持原有计数

清空全表 (⼀次性整表删除):

truncate `表名`;

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第32张图片

truncate清空表特点:
      一次性清空全表
      操作速度非常快
      清空后,重新插入数据时,ID 重新从 1 开始计数

删除满足条件的行

delete from `表名` where `字段` =;
delete from `表名` where `字段` in (1, 2, 3, 4);

MySQL数据库入门:数据库简介、数据库的安装与连接、权限管理、数据库操作、表操作、CURD语句的基本使用_第33张图片

你可能感兴趣的:(MySQL的基础知识,数据库,mysql,数据库及表操作)