• MySql数据库的初步安装与管理


    内容预知

     1.数据库的相关了解

     1.1 数据库的概念

     1.2 数据库的分类 

    关系型数据库 

     非关系型数据库

     2. mysql的yum安装与源码编译安装

     1.1 源码编译安装mysql

    1.2 yum安装 mysql5.7 

     2.mysql的数据类型

     2.1 常用的数据库类型

    2.2  重点了解:char与varchar的区别 

    3.mysql的数据库结构 

    3.1 查看库信息 

    3.2 查看表信息 

     方式一:先切换库,再查看

    方式二:直接查看 

    3.3 查看表的字段结构 

     方式一:先切换库,在查看指定表的字段

    方式二:直接查看表结构 

     4.SQL语句

     4.1  SQL中的名词介绍

    4.2  SQL语言规范

    数据库对象和命名:

    4.3 SQL语言分类 

    5.Mysql数据库基本的增删改查命令 

     5.1  创建数据库及数据库表

    条件判断创建数据表 

    5.2 插入数据 

    方法一:指定字段插入数据 

    方法二:直接按照字段顺序插入 

    5.3 查找数据库表中的数据 

    5.4 修改表中的数据 

    5.5 删除表中的数据

    5.6 删除指定的表 

    5.7   删除指定的库

     6.表结构的管理

    6.1 修改表名

    6.2 扩展表结构(增加字段) 

    6.3 修改字段名,添加唯一健 change

    6.4 删除字段 drop

     6.5 复制表结构

     方式一:创建新表,导入数据

    方式二:复制表 

    6.6 临时表的创建 

    6.7  清除表的两种方式比较

    方式一:delete清空 

     7.Mysql中常见的约束

     总结

    查看数据库和表:

    创建及删除数据库和表:

    表数据的增删改查:

    主键


     1.数据库的相关了解

     1.1 数据库的概念

     数据库(database)是用来组织、存储和管理数据的仓库

    数据库管理系统(DBMS):是实现对数据有效组织,管理和存取的系统软件。

    数据的建立和维护功能,数据定义功能,数据操纵功能,数据库的运行管理功能,通信功能 

    数据库系统是一个人机系统,由硬件,os,数据库,DBMS ,应用软件和数据库用户组成。

    用户可以通过DBMS 或则 应用程序来操作数据库 

     

     1.2 数据库的分类 

    随着时代的发展,当今数据库可分为两大类:关系数据库(SQL)非关系数据库(NO SQL)两大类 。

    关系型数据库 

     关系数据库的存储结构是二维表格 ,表是有行和列。行称为记录,是用来描述一个对象的信息。列称为字段,是用来描述对象的一个属性

    关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL 

     非关系型数据库

    非关系型的数据库有以下常见的几个种类:

          缓存性数据库: redis     Memcache

          索引型数据库:  ES(Elasttic search)

          时序型数据库:Prometheus

           文档型数据库:MongoDB

     非关系型数据库:是键对值的存储结构(key ——————>   VALUE)

    优点:可高并发读写,对海量数据依旧保持着高效率的存储和访问,具有高扩展性和高可用性

     

     2. mysql的yum安装与源码编译安装 

     1.1 源码编译安装mysql

    1. ---------------安装环境包-----------------
    2. 确认安装 gcc 、 gcc-c++ 、make、cmake
    3. ncurses-devel、(字符终端屏幕控制基本库)
    4. bison、(语法分析器)
    5. libaio-devel (支持同步I/O)的软件包
    6. yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake libaio-devel
    7. yum install autoconf -y ####安装5.6版本是需要安装autoconf库
    8. ---------------添 加mysql用户并加入到mysql组----------------
    9. useradd -s /sbin/nologin mysql
    10. mkdir -p /usr/local/mysql
    11. tar zxvf mysql-5.5.24.tar.gz -C /opt/
    12. cd mysql-5.5.24
    13. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    14. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    15. -DDEFAULT_CHARSET=utf8 \
    16. -DDEFAULT_COLLATION=utf8_general_ci \
    17. -DWITH_EXTRA_CHARSETS=all \
    18. -DWITH_MYISAM_STORAGE_ENGINE=1 \
    19. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    20. -DWITH_MEMORY_STORAGE_ENGINE=1 \
    21. -DWITH_READLINE=1 \
    22. -DENABLED_LOCAL_INFILE=1 \
    23. -DMYSQL_DATADIR=/home/mysql \
    24. -DMYSQL_USER=mysql \
    25. -DMYSQL_TCP_PORT=3306
    26. 指定安装路径
    27. 指定家目录 sock 数据库连接文件
    28. 指定字符集
    29. 指定字符编码
    30. 扩展性的字符集 支持其他的字符集
    31. 开启各种功能的存储引擎机
    32. 存储引擎机
    33. 存储引擎机
    34. 支持readline程序平台 读取数据按行读取,一行是一个对象
    35. 本地写入文件,方便导入导出
    36. 数据库的家目录 数据库存放的路径
    37. 指定管理用户和端口号
    38. make -j 2 && make install
    39. ------如果报错,清空缓存文件-如果正常可忽略-------
    40. find -name CMakeCache.txt
    41. rm -f ./CMakeCache.txt
    42. ---------------------------------
    43. chown -R mysql:mysql /usr/local/mysql
    44. export PATH=$PATH:/usr/local/mysql/bin/ \*开机时刷新*\
    45. 或者可选择vi /etc/profile 在最后一行加入后 运行source /etc/profile
    46. cp support-files/my-medium.cnf /etc/my.cnf
    47. cp support-files/my-default.cnf /etc/my.cnf
    48. cp support-files/mysql.server /etc/init.d/mysqld
    49. chmod 755 /etc/init.d/mysqld
    50. chkconfig --add /etc/init.d/mysqld
    51. chkconfig mysqld --level 35 on
    52. --------------初始化数据库------------------------------------------------
    53. /usr/local/mysql/scripts/mysql_install_db \
    54. --user=mysql \
    55. --ldata=/var/lib/mysql \
    56. --basedir=/usr/local/mysql \
    57. --datadir=/home/mysql
    58. ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock /*直接建立软连接*/
    59. vi /etc/init.d/mysqld #####46行和47行添加
    60. basedir=/usr/local/mysql
    61. datadir=/home/mysql
    62. service mysqld start
    63. netstat -tnl 3306
    64. mysql #####初始登录mysql
    65. grant all privileges on *.* to 'root'@'%' identified by 'abc123'; ### ##授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限。
    66. #数据库密码设置
    67. mysqladmin -u root password "abc123"
    68. ---------------------------------------------------------------
    69. mysql -u root -p
    70. abc123
    71. mysql>show databases;

    1.2 yum安装 mysql5.7 

    1. 1. #创建mysql安装包的在线源
    2.  cd /etc/yum.repos.d/
    3.  vim mysql.repo
    4.  [mysql]
    5.  name=mysql5.7
    6.  baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
    7.  gpgcheck=0
    8.  
    9.  2. #安装服务mysql-community-server
    10.  yum -y install mysql-community-server
    11.  
    12.  3. #启动服务
    13.  systemctl start mysqld
    14.  ss -ntap |grep 3306
    15.  
    16.  4. #此时无法使用mysql命令直接登入数据库。需要查看本地root用户的默认密码,使用密码登录。
    17.  grep password /var/log/mysqld.log    #查看默认密码
    18.  mysql -u root -p'34/Jeoiq0fZb'       #使用密码登录,特殊符号用单引号引起来
    19.  
    20.  5. #登入数据库后必须修改密码。
    21.  mysql> alter user root@'localhost' identified by 'abc123';
    22.  ​
    23.  #为保证安全,密码的复杂性要足够,需要包含英文字母大小写、数字和特殊字符。
    24.  ​
    25.  #可以使用"\h;"查看帮助

     数据库当前使用的端口查看:

     

    show global variables like 'port';
    

     

     2.mysql的数据类型

     2.1 常用的数据库类型

    类型名称含义
    tinyint(n)1个字节,范围(-128~127)
    smallint(n)2个字节,范围(-32768~32767)
    mediumint(n)3个字节,范围(-8388608~8388607)
    int(n)4个字节(32个比特位),整数型,范围(-2147483648~2147483647)
    bigint(n)8个字节,整数型,范围(+-9.22*10的18次方)
    float(m,d)单精度浮点,8位精度,4字节32位。m数字总个数,d小数位
    double(m,d)双精度浮点,16位精度,8字节64位 。m总个数,d小数位
    char固定长度的字符类型
    varchar可变长度的字符类型
    text文本
    image图片
    decimal(5,2)5个有效长度数字,小数点后面有2位(例如123.56)

    2.2  重点了解:char与varchar的区别 

    CHAR(4)存储需求VARCHAR(4)存储需求
    ''' '4个字节''1个字节
    'ab''ab '4个字节'ab '3个字节
    'abcd''abcd'4个字节'abcd'5个字节
    'abcdefgh''abcd'4个字节'abcd'5个字节

    CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。 

    字节大小:

    • char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
    • varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。

    优劣比较

    • varchar比char节省磁盘空间。
    • 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,e而varchar在多次增删改查中会产生一些磁盘空间碎片

    3.mysql的数据库结构 

    3.1 查看库信息 

    1. #查看数据库中的所有库
    2. mysql> show databases;

    3.2 查看表信息 

     方式一:先切换库,再查看

    1. #格式:use 库名
    2. mysql> use mysql;
    3. mysql> show tables;

     

    方式二:直接查看 

    1. #格式: show tables from 库名
    2. mysql> show tables from mysql;

    3.3 查看表的字段结构 

     方式一:先切换库,在查看指定表的字段

    1. USE 数据库名; #切换库
    2. SHOW TABLES; #查看库中的表
    3. DESCRIBE 表名; #查看指定表的结构( DESCRIBE 可以缩写为DESC

     

    由于屏幕占比问题与字段数量问题,会导致有些表结构的效果呈现并不好。(由于默认查看为横向的查看 ) 

     纵向查看方式:

    1. desc 表名\G;

     

    方式二:直接查看表结构 

    1. DESCRIBE [数据库名.]表名;
    2. 可缩写成:DESC 数据库名.表名;

     4.SQL语句

    关系型数据库,都是使用SQL语句来管理数据库中的数据。

    SQL,即结构化查询语言(Structured Query Language) 。

    SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

     4.1  SQL中的名词介绍

    • 数据库:database
    • 表:table,行:row 列:column
    • 索引:index
    • 视图:view
    • 存储过程:procedure
    • 存储函数:function
    • 触发器:trigger
    • 事件调度器:event scheduler,任务计划
    • 用户:user
    • 权限:privilege

    4.2  SQL语言规范

    • 在数据库系统中,SQL 语句不区分大小写,建议用大写。
    • SQL语句可单行或多行书写,默认以 " ; " 结尾。
    • 关键词不能跨多行或简写。
    • 用空格和TAB 缩进来提高语句的可读性。
    • 子句通常位于独立行,便于编辑,提高可读性。

    数据库对象和命名:

        数据库的组件(对象):

        数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等。

        命名规则:

    • 必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
    • 不要使用MySQL的保留字,如table、select、show、databases。
    • 数据库名、表名、用户名区分大小

    4.3 SQL语言分类 

    1、DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。

    例如:CREATE,DROP,ALTER 等。

    2、DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。

    例如: SELECT、UPDATE、INSERT、DELETE 等。

    3、DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。

    例如: SELECT

    4、DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限

    例如: GRANT,REVOKE

    5、TCL:事务控制语言(Transaction Control Language),用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。

    例如: COMMIT,ROLLBACK,SAVEPOINT

    5.Mysql数据库基本的增删改查命令 

     5.1  创建数据库及数据库表

    CREATE DATABASE 数据库名;

     CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);

     

     主键:共同点:字段的值都是唯一的,不允许有重复值。

    条件判断创建数据表 

    1. create table if not exists 表名 (
    2. 字段1 数据类型 约束1 约束2
    3. ...................
    4. 字段n 数据类型 约束 );

     

    5.2 插入数据 

    方法一:指定字段插入数据 

    1.  ​
    2. #为指定字段插入值
    3.  INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);    #注意字段的属性not null,则必须为该字段插入值

     

     此外只要是指定的字段不是主键,或则为设置“非空”,也可以不插入数据

    方法二:直接按照字段顺序插入 

    1. 为所有字段插入值
    2.  insert into 表名 values (所有字段的值);   #每个字段值用逗号相隔;

     

    5.3 查找数据库表中的数据 

    1.  SELECT * FROM 表名;   #查询表中所有记录
    2.  ​
    3.  #按条件查找数据记录,且只显示指定字段的值
    4.  SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
    5.  ​
    6.  #mysql的分页语句:
    7.  select * from 表名 limit 2;
    8.  select * from 表名 limit 2,3;   #显示第2行后的前3行(即显示第3~5行)

     

    5.4 修改表中的数据 

    修改时:建议指定的条件表达式为主键,主键具有唯一性,避免错改 

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

     

    5.5 删除表中的数据

     DELETE FROM 表名 [WHERE 条件表达式];     #删除一定要加条件,不然会删除整个表

    5.6 删除指定的表 

    1. DROP TABLE 数据库名.表名;
    2. USE 库名;
    3. DROP TABLE 表名;

     

    5.7   删除指定的库

    DROP DATABASE 数据库名;

     

     6.表结构的管理

    6.1 修改表名

     ALTER TABLE 旧表名 RENAME 新表名

     

    6.2 扩展表结构(增加字段) 

     ALTER TABLE 表名 ADD 字段名 数据类型;

     

    6.3 修改字段名,添加唯一健 change

     ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束];

    6.4 删除字段 drop

     ALTER TABLE 表名 DROP 字段名;

     6.5 复制表结构

     方式一:创建新表,导入数据

    1. create table 新表名 like 旧表名; #通过LIKE方法,复制旧表的结构生成新表
    2. insert into 新表名 select * from 旧表名; #再将旧表数据导入新表

     

    方式二:复制表 

     create table 新表名 (select * from 旧表名);

     

    6.6 临时表的创建 

    CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[, ...] [, PRIMARY KEY (主键名)]);

     创建方式与创建表完全一致,最大的区别是,临时表只在当前的数据库连接生效,当数据库连接断开或重新连接终端时,该临时表均失效,无法查看。

    6.7  清除表的两种方式比较

    方式一:delete清空 

     delete from 表名;

    方式二:truncate清空 

     truncate table 表名;    

    两者区别:(1)delete清空属于按照行清空,一行一行进行,效率低,速度慢(对于表数据较多的情况) truncate相当于删除表数据,保留表结构,重新创建一个与原表结构相同的表 

    (2)当数据表中有自增型约束字段时,delete清除表数据后,在插入数据时,自增字段的数值会接着被删除表数据的最后一个自增数,计数。(eg:被删除表数据最后一行id(自增),为10,再创建时,该id从11开始)。truncate清空后,自增型字段会从1开始计数

     7.Mysql中常见的约束

    • 主键约束(primary key) PK

    主键具有唯一性,不可重复性,不可为空的特点。一般用于删除,查询时条件语句的条件。主键在一张表中只能有一个

    • 自增长约束(auto_increment)

    该约束针对于整数类型的字段,当插入该字段数据为空时,系统会根据上一个数,自动加1

    • 非空约束(not null)

    该约束到字段后,该字段中的数据插入不能为空

    • 唯一性约束(unique)

    该约束添加后,该字段的数据每行均为唯一的,不可重复。唯一性约束可以在一张表中有多个

    • 默认值约束(default)

    默认值约束,为该字段设置初始值,如果没有为该字段插入数据,就为初始值

    • 零填充约束(zerofill)

    零填充针对整数型的字段,例如int默认为11位,除了填写的数字以外其他用零填充

    • 外键约束(foreign key)FK

    外键约束,至少将两张表进行关联。我们将这两张表分为主表和从表,主表的主键作为从表的外键。增加数据时,先进行主表操作,如果增加的数据外键值在主表中没有,就要先在主表中添加。

    若进行删除操作,就要先进行从表操作,只要将从表有关主表(主键值)全部清除后,才能清除该主表的主键值

     总结

    查看数据库和表:

    show databases;

    use 库名;

    show tables;

    desc 表名;

    desc 表名\G

    show  table 表名;


    创建及删除数据库和表:

    create database 库名;

    create table 表名(字段1 数据类型 [属性], 字段2 .....);

    DROP TABLE [数据库名.]表名;

    DROP DATABASE 数据库名;


    表数据的增删改查:

    insert into 表名 values (所有字段的值);

    insert into 表名 (指定字段名称) values(字段的值);

    delete from 表名 [where ...];

    update 表名 set 字段=值[, 字段2=....] [where ...];

    select 字段1[,字段2....] from 表名 [where ...];

    select * from 表名;


    主键

    主键:primary key    特点:具有唯一性和不可复用性。通常作为条件表达式用于查询,删除,修改的条件

  • 相关阅读:
    5自由度串联机械臂实现颜色分拣功能
    双向RNN和双向LSTM
    20套面向对象程序设计选题Java Swing(含教程) (二) 持续更新 建议收藏
    Java项目:SSM失物招领管理系统
    Controller接收Postman的raw参数时,属性值全部为空
    jacob解决freemaker导出word文档手机无法预览问题(附下载地址)
    《Effective C++》条款12
    Visual Studio Code将中文写入变量时,中文老是乱码问题
    两种将JS关联数组转化为JSON格式字符串的方法
    最短路径Dijkstra算法详解
  • 原文地址:https://blog.csdn.net/qq_62462797/article/details/127391898