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

yum -y install ncurses ncurses-devel bison cmake
# 安装MySQL环境依赖包

useradd -M -s /sbin/nologin  mysql
# 创建程序用户MySQL

tar zxvf mysql-boost-5.7.20.tar.gz
# 解压安装包

cd ./mysql-5.7.20/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
# 用cmake设置安装路径,模块添加、环境变量设置

make -j2 && make install

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
# 更改mysql安装目录和配置文件的属主属组

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile
# 设置环境变量,使其可以使用tab补全

cd /usr/local/mysql/bin/

./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
# 初始化数据库

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
# 添加mysqld系统服务

mysqladmin -u root -p password "abc123" 
# 修改mysql的登录密码,给root账号设置密码为abc123
# 他会先让你输入原来的密码,按下回车即可

mysql -u root -pabc123
# 以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.查看当前服务器中的数据库

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

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

use class1
# 进入 class1 库

SHOW TABLES;
# 查看库里所有表

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

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

2.3.SQL语句

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

SQL语句分类:

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

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

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

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

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

create database class1;
# 建立新的数据库class1

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

drop database class1;
drop table student1;
# 删除库 删除表

2.5.管理表中的数据记录

select * from student1;
# 查看表内容

insert into student1 (id,name,sex,age,address) values (3,'张五','男',24,'江苏省南京市');
# 添加student1表的内容

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

select * from student1 limit 2;
# 显示前2行

select * from student1 limit 1,2;
# 显示1行后的2行,即2到3行

 

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

 

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

2.6.修改表名和表结构

alter table student1 rename student;
# 修改表名

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

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

2.7数据表高级操作

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

truncate table student1;
# 清空表

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

alter table profession add constraint PK_pid primary key (pid);
# 指定主键

alter table student12 add constraint FK_pro foreign key (proid) references profession (pid);
# 指定外键

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

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

2.8.数据库用户管理

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

CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';
# 新建用户user1 仅主机登录 密码123456
select user();
# 查看当前用户信息
RENAME USER 'user1'@'localhost' TO 'user2'@'localhost';
# 重命名用户
DROP USER 'user2'@'localhost';
# 删除用户
SET PASSWORD = PASSWORD('abc123');
# 修改当前登录用户密码
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('abc123');
# 修改其他用户密码
1.忘记密码
vim /etc/my.cnf
# 修改 /etc/my.cnf 配置文件,不使用密码直接登录到 mysql

[mysqld]
skip-grant-tables
# 添加,使登录mysql不使用授权表

systemctl restart mysqld
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('abc123') where user='root';
# 使用 update 修改 root 密码,刷新数据库

FLUSH PRIVILEGES;
quit

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

2.9数据库用户授权

GRANT select ON kgc.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
# 允许用户 zhangsan 在本地查询 kgc 数据库中 所有表的数据记录,但禁止查询其他数据库中的表的记录。

GRANT ALL [PRIVILEGES] ON *.* TO 'lisi'@'%' IDENTIFIED BY '123456';
# 允许用户 lisi 在所有终端远程连接 mysql ,并拥有所有权限。

flush privileges;
quit
SHOW GRANTS FOR 'lisi'@'%';
# 查看lisi的权限
REVOKE ALL ON *.* FROM 'lisi'@'%';
# 回收权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值