• MySQL


    数据库 分两大类: 关系型数据 SQL         非关系型数据库 NoSQL

    关系型数据库典型代表:MySQL  MariaDB  PostgreSQL(pgsql)  Oracle  SQL Server  DB2

    国产数据库:阿里云 RDB    华为 高斯    阿里 Oceanbase    腾讯 TDBA   

    1.SQL

    SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。

    1.1.MySQL。

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。  

    MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

    1.2.NoSQL

    NoSQL,泛指非关系型的数据库。NoSQL数据库的产生是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题

    NoSQL有如下优点:易扩展,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间也在架构的层面上带来了可扩展的能力。大数据量,高性能,NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

    2.MySQL数据库管理

    2.0.安装MySQL

    1. yum -y install ncurses ncurses-devel bison cmake
    2. # 安装MySQL环境依赖包
    3. useradd -M -s /sbin/nologin mysql
    4. # 创建程序用户MySQL
    5. tar zxvf mysql-boost-5.7.20.tar.gz
    6. # 解压安装包
    7. cd ./mysql-5.7.20/
    8. cmake \
    9. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    10. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    11. -DSYSCONFDIR=/etc \
    12. -DSYSTEMD_PID_DIR=/usr/local/mysql \
    13. -DDEFAULT_CHARSET=utf8 \
    14. -DDEFAULT_COLLATION=utf8_general_ci \
    15. -DWITH_EXTRA_CHARSETS=all \
    16. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    17. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    18. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    19. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    20. -DMYSQL_DATADIR=/usr/local/mysql/data \
    21. -DWITH_BOOST=boost \
    22. -DWITH_SYSTEMD=1
    23. # 用cmake设置安装路径,模块添加、环境变量设置
    24. make -j2 && make install
    25. chown -R mysql:mysql /usr/local/mysql/
    26. chown mysql:mysql /etc/my.cnf
    27. # 更改mysql安装目录和配置文件的属主属组
    28. echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
    29. source /etc/profile
    30. # 设置环境变量,使其可以使用tab补全
    31. cd /usr/local/mysql/bin/
    32. ./mysqld \
    33. --initialize-insecure \
    34. --user=mysql \
    35. --basedir=/usr/local/mysql \
    36. --datadir=/usr/local/mysql/data
    37. # 初始化数据库
    38. cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    39. systemctl daemon-reload
    40. systemctl start mysqld.service
    41. systemctl enable mysqld
    42. # 添加mysqld系统服务
    43. mysqladmin -u root -p password "abc123"
    44. # 修改mysql的登录密码,给root账号设置密码为abc123
    45. # 他会先让你输入原来的密码,按下回车即可
    46. mysql -u root -pabc123
    47. # 以root身份登录mysql数据库

    MySQL由4个部分组成:数据库,数据表,行(记录),列(字段)

    数据库:一个仓库,里面有多个数据表

    数据表:含多行多列

    行(记录):用来描述一个对象的信息

    列(字段):用来描述对象的一个属性

    2.1.常用的数据类型

    int :整型   无符号[0,2^32-1],有符号[-2^31,2^31-1]
    float :单精度浮点    4字节32位
    double :双精度浮点    8字节64位
    char :固定长度的字符类型
    varchar :可变长度的字符类型
    text :文本
    image :图片
    decimal(5,2) :5个有效长度数字,小数点后面有2位

    2.2.查看数据库结构

    1.查看当前服务器中的数据库

    1. SHOW DATABASES;
    2. # 在MySQL中不区分大小写,分号 ; 表示结束

    2.查看数据库中包含的表

    1. use class1
    2. # 进入 class1 库
    3. SHOW TABLES;
    4. # 查看库里所有表

    3.查看表的结构(字段)

    1. desc class1.student1
    2. # 在库中所以不写库名
    3. # desc写全为describe

    2.3.SQL语句

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

    SQL语句分类:

    DDL:数据定义语言,用于创建数据库对象,like 库、表、索引等

    DML:数据操纵语言,用于对表中的数据进行管理

    DQL:数据查询语言,用于从数据表中查找符合条件的数据记录

    DCL:数据控制语言,用于设置或者更改数据库用户或角色权限

    2.4.创建及删除数据库和表

    1. create database class1;
    2. # 建立新的数据库class1
    3. create table class1.student1 (id int,name varchar(10) not null,sex char,age char,address varchar(20) default'地址不详',primary key (id));
    4. # 创建表 student1 并设置表的字段
    5. # not null 不能为空
    6. # primary key (ip) 指定ip为主链(不能重复)
    7. # default '地址不详' 未指定参数时,显示'地址不详'

    1. drop database class1;
    2. drop table student1;
    3. # 删除库 删除表

    2.5.管理表中的数据记录

    1. select * from student1;
    2. # 查看表内容
    3. insert into student1 (id,name,sex,age,address) values (3,'张五','男',24,'江苏省南京市');
    4. # 添加student1表的内容

    1. select name from student1 where address='江苏省南京市';
    2. # 显示表中address为江苏省南京市的name

    1. select * from student1 limit 2;
    2. # 显示前2
    3. select * from student1 limit 1,2;
    4. # 显示1行后的2行,即23

     

    1. update student1 age=18 where sex='女';
    2. # 更新女性的年龄为18

     

    1. delete from student1 where id=4;
    2. # 删除id=4 的这一行

    2.6.修改表名和表结构

    1. alter table student1 rename student;
    2. # 修改表名

    1. alter table student add 学历 varchar(20);
    2. # 给student表添加一列 学历

    1. alter table student drop 学历;
    2. # 移除学历那一列

    2.7数据表高级操作

    1. create table student1 like student;
    2. #通过 LIKE 方法,复制 student 表结构生成 student1 表

    1. truncate table student1;
    2. # 清空表

    1. create temporary table student2 (id int,name varchar(20),age char(10));
    2. # 创建一个临时表 临时表会在连接退出后被销毁

    1. alter table profession add constraint PK_pid primary key (pid);
    2. # 指定主键
    3. alter table student12 add constraint FK_pro foreign key (proid) references profession (pid);
    4. # 指定外键

    1. delete from profession where pid=1;
    2. # 需要先删除从表中的外键,否则无法删除

    1. delete from student where proid=1;
    2. delete from profession where pid=1;

    2.8.数据库用户管理

    CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];

    1. CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';
    2. # 新建用户user1 仅主机登录 密码123456
    1. select user();
    2. # 查看当前用户信息
    1. RENAME USER 'user1'@'localhost' TO 'user2'@'localhost';
    2. # 重命名用户
    1. DROP USER 'user2'@'localhost';
    2. # 删除用户
    1. SET PASSWORD = PASSWORD('abc123');
    2. # 修改当前登录用户密码
    1. SET PASSWORD FOR 'user'@'localhost' = PASSWORD('abc123');
    2. # 修改其他用户密码
    1.忘记密码
    1. vim /etc/my.cnf
    2. # 修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql
    3. [mysqld]
    4. skip-grant-tables
    5. # 添加,使登录mysql不使用授权表
    6. systemctl restart mysqld
    1. UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
    2. # 使用 update 修改 root 密码,刷新数据库
    3. FLUSH PRIVILEGES;
    4. quit

    注意:最后再把 /etc/my.cnf 配置文件里的 skip-grant-tables 删除,并重启 mysql 服务。

    2.9数据库用户授权

    1. GRANT select ON kgc.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
    2. # 允许用户 zhangsan 在本地查询 kgc 数据库中 所有表的数据记录,但禁止查询其他数据库中的表的记录。
    3. GRANT ALL [PRIVILEGES] ON *.* TO 'lisi'@'%' IDENTIFIED BY '123456';
    4. # 允许用户 lisi 在所有终端远程连接 mysql ,并拥有所有权限。
    5. flush privileges;
    6. quit
    1. SHOW GRANTS FOR 'lisi'@'%';
    2. # 查看lisi的权限
    1. REVOKE ALL ON *.* FROM 'lisi'@'%';
    2. # 回收权限
  • 相关阅读:
    std::map中的自定义key避免踩坑
    类文件结构
    Cesium 三维模型使用 blender 调整位置、坐标轴、比例等
    PCL 平面点云边界点按顺/逆时针排序
    Java毕设项目思路:疫情反复?校园疫情信息系统可以这样做
    缓存更新的四种策略及选取建议
    自建SQL server 服务无法启动,提示评估期已过
    Python 中最常用的 4种股票价格移动平均方法(二)
    mysql复习
    东北天坐标系与84坐标系的相互转换
  • 原文地址:https://blog.csdn.net/akk_dian/article/details/132863319