• No.1-------MySQL:数据库系统概述、MySQL简介、库操作


    一、数据库系统概述

    数据(Data)

    描述事务的符号记录成为数据。

    数据是数据库中存储的基本对象,出了基本的数字之外、像图书的名称、价格、作者等都可以称为数据。

    列如:在日常生活之中,可以这样描述一本书的信息,《C Primer Plus》是人民邮电出版社出版的图书,作者是普拉塔(Prata S.),定价是89.00,出版日期是2005年2月1日,这样的信息在计算机中就可以使用下面的方式来描述:

    • (C Primer Plus,人民邮电出版社,普拉塔(Prata S.),89.00,2005-2-1)

    • 即,将信息按照“(图书名称,出版社,作者,价格,出版日期)”的方式组织在一起,这样就组成了一条记录。

    如果现在有多条这种记录,那么就可以列成一张表,通过表来管理数据。

    如有几种数据类型:

    • 图书编号、库存:整型数据

    • 图书名称、作者、出版社:字符串类型

    • 价格:小数类型

    每一行的数据都成为记录,那么每一列的内容都称为字段。每一列都有自己的数据类型。

    数据库(Database)

    存放数据的仓库。

    所有的数据在计算机存储设备上保存,而且保存的数据会按照一定的格式进行存储。

    数据库是长期存储在计算机内,有组织的、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有娇小的冗余度、教导的数据独立性和易拓展性,并可以为各种用户共享,所以数据库具有永久存储、有组织和课共享三个基本特点。

    而除了有数据库之外,还要有数据库管理系统,才能对数据很好的管理。

    数据库管理系统(Database Management System,DBMS)

    科学的组织和存储数据,可以高效的获取和维护数据。

    数据库管理系统和操作系统一样时计算机的基础软件,也是一个大型复杂的软件系统,主要功能包括以下几个方面:数据操作功能,数据库的事务管理和运行管理、数据定义功能,数据组织、存储和管理数据的建立和维护功能。

    数据库系统(Database System,DBS)

    数据库系统(Database System,DBS)由硬件和软件共同构成

    硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分主要包括数据库管理系统、支持数据库管理系统运行的操作系统,以及支持多种语言进行应用开发的访问技术等。

    数据库系统是指在计算机系统中引入数据库后的系统。

    它是一整个数据库运行的基础,所有的数据库都需要通过开发工具编写的应用程序进行数据的访问,而数据平时需要被数据库管理员(Database Administrator,DBA)维护。

    什么是SQL

    结构化查询语言

    SQL其发音为字母 S-Q-L 或 sequel,是 Structure Query Language(结构化查询语言)的缩写,是目前广泛使用的关系数据库标准语言。

    该语言由 IBM在20世纪70年代开发出来,被作为IBM关系数据库 System R的原型关系语言,实现关系数据库中信息的检索。

    由于 SQL 简单易学、功能丰富和使用灵活,因此受到众多人的追捧。经过不断的发展、完善和扩充,SOL 被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来又被国际标准化组织(ISO)采纳为关系数据库语言的国际标准。几乎所有的关系型数据库管理系统软件都支持SQL,许多厂商还对SQL基本命令进行了不同程度的扩充。

    SQL 语言有以下几个部分:

    • 数据操作语言(Data Manipulation Language,DML)

      实现对数据的操作,用于检索或修改数据。

    • 数据定义语言(Data Definition Language,DDL)

      用于定义数据的结构,创建、修改或者删除数据库对象。

    • 数据控制语言(Data Control Language,DCL)

      用于控制数据库用户的权限。

    • 事务控制 (Transaction Control,TCL)

      定义了包含事务开始喝结束的相关命令。

    • DDL包含的子部分

      • 完整性约束(integrity constraint )

      • 视图定义 (View Definition)

    SQL具有如下优点∶

    • SQL 不是某个特定数据库供应商专有的语言。几乎所有重要的数据库管理系统都支持 SQL, 所以只要学习了SQL 就能与所有数据库进行交互。

    • SQL 简单易学,该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

    • SQL 高度非过程化,即用SQL进行数据库操作,只需指出"做什么",无须指明"怎么做",存取路径的选择和操作的执行由数据库管理系统自动完成。

    二、MySQL简介

    MySQL 的历史最早可以追溯到1979年,Monty Widenius用BASIC设计了一个报表工具,过了不久,又将此工具使用C语言重写,移植到UNIX平台,当时只是一个底层的面向报表的存储引擎。

    1985年,三个瑞典人 David Axmark、Allan Larsson和 Michael Widenius 成立了一家公司,这就是 MySQLAB 的前身,这个公司最初并不是为了开发数据库产品,而是在实现想法的过程中需要一个数据库并希望能够使用开源的产品。但在当时并没有一个合适的选择。因此自己设计了一个利用索引顺序存取数据的方法,也就是ISAM(Indexed Sequential Access Method)存储引擎核心算法的前身。此软件以创始人之一 Michael Widenius 女儿 My 的名字命名。MySQL的 Logo 为海豚标志,如下图所示,海豚代表了速度、动力、精确等 MySQL所拥有的特性。Logo 中海豚名字叫"sakila",是由来自非洲斯威士兰的开源软件开发者 Ambrose Twebaze 提供的。根据 Ambrose 所说,Sakila来自一种叫 SiSwati 的斯威士兰方言,也是在 Ambrose 的家乡乌干达附近坦桑尼亚的 Arusha 的一个小镇的名字。

    MySQL 是一款免费开源、小型、关系型数据库管理系统。随着该数据库功能的不断完善、性能的不断提高,可靠性不断增强。

    2000年4月,MySQL对旧的存储引擎进行了整理,命名为 MyISAM。

    2001 年,支持事务处理和行级锁存储引擎 InnoDB 被集成到 MySQL 发行版中,该版本集成了MyISAM与 InnoDB存储引擎,MySQL与InnoDB的正式结合版本是4.0。2004年10月,发布了经典的4.1版本。 2005年10月,发布了里程碑的一个版本,MySQL 5.0,在5.0中加入了游标,存储过程,触发器,视图和事务的支持。在 5.0 之后的版本里,MySQL 明确地表现出迈向高性能数据库的发展步伐。MySOL 公司于2008年1月16号被 SUN公司收购,而在2009 年 SUN 又被 Oracle 收购。MySQL的发展前途一片光明。

    MySQL 虽然是免费的,但与其他商业数据库一样,具有数据库系统的通用性,提供了数据的存取、增加、修改、删除或更加复杂的数据操作。同时 MySQL 是关系型的数据库系统,支持标准的结构化查询语言,同时 MySQL 为客户端提供了不同的程序接口和链接库,如C、C++、Java、PHP 等。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,因此许多中小型网站为了降低网站总体拥有成本而选择了MySQL 作为网站数据库。

    相关的启动和安装的命令:

    ①mysqld --install安装mysql服务,移除服务的命令是mysqld --remove

    ②mysqld --initialize --console初始化,记一下初始密码哦~

    ③net start mysql 启动服务,停止服务命令是net stop mysql

    ④mysql -uroot -p

    ⑤自己修改一下密码 set password for 'root'@'localhost'='你的新密码'

    ⑥quit可以退出mysql

    配置my.ini文件

    1. # For advice on how to change settings please see
    2. # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    3. # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    4. # *** default location during install, and will be replaced if you
    5. # *** upgrade to a newer version of MySQL.
    6. [client]
    7. default-character-set = utf8mb4
    8. [mysql]
    9. default-character-set = utf8mb4
    10. [mysqld]
    11. character-set-client-handshake = FALSE
    12. character-set-server = utf8mb4
    13. collation-server = utf8mb4_bin
    14. init_connect='SET NAMES utf8mb4'
    15. # Remove leading # and set to the amount of RAM for the most important data
    16. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    17. innodb_buffer_pool_size = 128M
    18. # Remove leading # to turn on a very important data integrity option: logging
    19. # changes to the binary log between backups.
    20. # log_bin
    21. # These are commonly set, remove the # and set as required.
    22. basedir = D:\MySQL
    23. datadir = D:\MySQL\data
    24. port = 3306
    25. # server_id = .....
    26. # Remove leading # to set options mainly useful for reporting servers.
    27. # The server defaults are faster for transactions and fast SELECTs.
    28. # Adjust sizes as needed, experiment to find the optimal values.
    29. join_buffer_size = 128M
    30. sort_buffer_size = 16M
    31. read_rnd_buffer_size = 16M
    32. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    1. 先移除mysql服务mysqld --remove;

    2. 重新安装mysql服务,并指定配置文件

      1. mysqld --install "MySQL80" --defaults-file="F:\Tools\mysql-8.0.22-winx64\my.ini"
      2. #"MySQL80" 是服务名称
      3. #--defaults-file 是指定配置文件位置
    3. 启动新安装的mysql服务
      net start MySQL80

    MySQL忘记密码怎么办?

    1.用管理员权限打开cmd,关闭mysql服务;

    > net stop mysql

    2.设置启动mysql服务时跳过权限验证;

    > mysqld --console --skip-grant-tables --shared-memory

    3.重新打开!重新打开!重新打开一个cmd窗口(用管理员权限),先前的窗口不要关掉,然后输入mysql,如果成功登录,如下图所示:

    4.使用指定的数据库

    MySQL中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。使用use 命令选择数据库。

    > use mysql;

    5.修改密码

    /*update user set password=password("123456") where user="root";*/
    
    alter user root@localhost identified by '123456';

    卧槽,发现报错了,不要慌,关键来了!!

    • 先更新一下权限 flush privileges;

    • 再执行修改密码命令 alter user root@localhost identified by '123456';   

    6.退出mysql
    
    > quit;

    7.关闭所有控制台,重新打开一个,重启mysql服务,并登录。

    > net start mysql;

    > mysql -uroot -p

    OK!连接成功~

     三、数据库的操作:

    1.批量导入sql文件\查看所有数据库\查看当前数据库下的所有的数据表

    登录MySQL,输入source xxx/test.sql导入sql文件,sql文件实际上是一个脚本文件,里面有多行SQL语句,通过source命令可以批量执行

    使用show databases;查看所有数据库

    使用show tables查看test数据库下所有的数据表

    2.SQL语句规范

    使用SQL语句请遵循以下规范:

    • SQL语句不区分大小写。但字符串常量区分大小写建议命令大写,表名库名小写

    • SQL语句可单行或多行书写,以分号结尾;

    • 用空格和缩进来提高语句的可读性。

    • 注释:有三种风格的注释

      1. 单行注释可以用“#”

      2. 单行注释第二种写法用“-- ”,“--" 与注释之间是有空格的。

      3. 多行注释可以用/* */

     3.数据库的基本操作

            ①MySQL之中有许多的数据库,使用以下命令查看所有数据库show:

    1. SHOW DATABASES;
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema | #主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
    6. | mysql | #MySQL的核心数据库,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。
    7. | performance_schema | #主要用于收集数据库服务器性能参数。
    8. | sys | #sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。
    9. +--------------------+

            ②切换数据库use:

    USE <dbname>;

            ③当前使用的是哪个数据库,可以使用select database();命令来查看:

            ④一个数据库下一定会存在多张数据表,那么这个时候也可以直接利用以下命令查看所有表:

    SHOW TABLES;

            ⑤想要知道某些数据表的表结构,那么可以使用DESC命令:

    DESC emp;

            ⑥想要自己创建数据库,则需要使用以下命令create:

    CREATE DATABASE <dbname>;

            如果数据库已经存在则会报错Can't create database ''; database exists,我们可以先判断数据库是否存在不存在就创建,存在则忽略(只有警告没有报错)。      

    CREATE DATABASE IF NOT EXISTS  <dbname>;

            ⑦如果想要删除数据库drop:

    DROP DATABASE <dbname>;

    如果数据库已经存在则会报错Can't drop database 'ss'; database doesn't exist,所有再删除数据库时可以判断是否存在。

    DROP DATABASE IF EXISTS <dbname>;	#如果数据库存在则删除

    使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复

  • 相关阅读:
    Debezium系列之:PostgreSQL数据库的Debezium连接器
    MySQL问题:2002 - Can‘t connect to server on ‘localhost‘(10061)【已解决】
    PyQt5学习笔记--多线程处理、数据交互
    c++中利用指针或应用如何安全的获取数据
    Android学习笔记 51. 项目发布
    JavaEE——网络原理(网络层 IP协议与数据链路层)
    Redis与分布式:集群搭建
    如此简单的k8s,快速玩转ingress
    jQuery入门
    2023-9-12 多重背包问题(一)
  • 原文地址:https://blog.csdn.net/zjjaibc/article/details/126336163