数据库管理软件基础 SQL语言增删改查
Posted 我的紫霞辣辣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库管理软件基础 SQL语言增删改查相关的知识,希望对你有一定的参考价值。
数据库管理软件的由来
1、程序所有的组件就不可能运行在一台机器上
- 如果程序所有的组件全部运行在一台机器上,那么这台机器一旦挂掉就意味着整个软件的崩溃,程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
- 于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。
2、数据安全问题
- 我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
- 于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。
3、并发
- 根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:
- 远程连接(支持并发)
- 打开文件
- 读写(加锁)
- 关闭文件
我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
数据库管理软件分类
关系型数据库:方便管理
- 关系型数据库需要有表结构
常见的关系型数据库:
mysql、oracle、db2、sqlserver、mariadb =====》注意:sql语句通用
非关系型数据库:查询快
- 非关系型数据库是key-value存储的,没有表结构
常见的非关系型数据库:
mongodb,redis,memcache =====》现在企业更多会把redis,memcache当作缓存用
redis,memcache是把数据存入内存的,并不是直接存入硬盘
Mysql数据库管理软件
安装数据库,需要安装客户端和服务端
yum -y install mariadb mariadb-server
1、mysql数据库管理软件
- 数据库管理软件本质就是一个socket套接字软件
- CS架构
2、关系型数据库的基本概念
- 字段: 表的标题
- 记录:文件中每一行内容
- 表:文件
- 库:文件夹
- 数据库管理软件:本质就是一个socket软件
- 数据库服务器:运行数据库管理软件服务端的计算机
我们可以把shell语句和mysql语句做一个对比,如下所示:
shell命令 <---------------------> sql语句
shell解释器 <---------------------> mysql服务端软件
linux操作系统 <----------------------> linux操作系统
计算机硬件 <----------------------> 计算机硬件
Mysql数据库的基本使用
修改mysql数据库密码
启动数据库
systemctl start mariadb # 这是默认启动的服务端
查看数据库进程
ps aux | grep mariadb
mysql 2089 0.2 8.3 968920 83368 ? Sl 21:28 0:00 /usr/libexec/mysqld
--basedir=/usr
--datadir=/var/lib/mysql # datadir指的是mysql数据库的根目录
--plugin-dir=/usr/lib64/mysql/plugin
--log-error=/var/log/mariadb/mariadb.log
--pid-file=/var/run/mariadb/mariadb.pid
--socket=/var/lib/mysql/mysql.sock
root 2143 0.0 0.0 112808 964 pts/0 R+ 21:30 0:00 grep --color=auto mariadb
我们在数据库里面创建库和表,其实就是在/var/lib/mysql(数据库根目录)目录下创建目录和文件
进入数据库 # 对客户端进行操作
mysql -uroot -p # 初始化无密码,直接回车进入
给初始化数据库管理员创建密码
mysqladmin -uroot password "123"
修改数据库管理员密码
mysqladmin -uroot -p"123" password "666"
破解mysql数据库密码
方式一;方式一了解即可。
rm -rf /var/lib/mysql/mysql # 所有授权信息全部丢失!!!
systemctl restart mariadb
mysql
方式二:
1. 修改mysql主配置文件
vim /etc/my.cnf # mysql主配置文件
[mysqld]
skip-grant-table # 跳过授权表
...
2. 重启mysql服务
systemctl restart mariadb
3. 跳过授权直接进入数据库,修改数据库的账号密码
mysql
update mysql.user set password=password("123") where user="root" and host="localhost";
# password=password("123"),第一个password指的是表中的字段值,第二个password()指的是一个函数
flush privileges; # 刷新授权
4. 删除mysql主配置文件中的跳过授权
vim /etc/my.cnf
[mysqld]
# skip-grant-table 删除添加的授权表认证
...
5. 重启mysql服务
systemctl restart mariadb
修改Mysql主配置文件,添加用户信息免密登陆数据库,统一数据库字符编码
1. 修改mysql数据库主配置文件,设置免密登陆数据库,统一字符编码
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4 # utf8mb4支持表情包
collation-server=utf8mb4_general_ci
...
[mysql] # 添加客户端信息,无须重启服务立即生效
user="root" # 添加客户端用户信息和密码信息,可以在客户端免密码登陆数据库
password="123"
default-character-set=utf8mb4
...
2.查看数据库字符编码
mysql # 直接登陆数据库
show variables like "%char%"; # 查看数据库设置的字符编码
系统默认的数据库
我们安装好数据库后,系统会默认生成一些库
- information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
- performance_schema: MySQL5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
- mysql: 授权库,主要存储系统用户的权限信息
- test: MySQL数据库系统自动创建的测试数据库
Sql语句
库
增: create database db1;
查: show databases; 查所有库
show create database db1; 查指定的单个库
改: alter database db1 charset="utf8"; 我们只能修改库的属性
删: drop database db1;
查看当前所在的库的名字: select database();
切换库: use db1;
表
增: create table t1(id int,name char(4));
查: show tables; 查看当前库下的所有表名
show create table t1; 查看当前库下指定的表信息
desc t1; 将当前表的信息以表格的形式展示,写全为(describe t1;)
改: alter table t1 modify name char(16); 将当前表属性定义好的4个字符改成16个字符
删: drop table t1;
表的增查改删也可以绝对路径的形式进行操作,无需切换文件路径
create table db1.t2(id int,name char(4)); 在db1的库中的创建一个t2的表格
数据
增: insert into t1 values(1,"nana"),(2,"dada"),(3,"tank");
查: select * from t1; *号代表所有的意思
改: update t1 set name="lala" where id = 1; 将id为1的数据名字改成lala
删: delete from t1 where id > 1;
delete from t1 where name ="tank";
将表所有的数据清空:
方式一: delete from t1; 推荐使用第二种清理方式
方式二: truncate t1; 这种方式清理数据会比较干净
以上是关于数据库管理软件基础 SQL语言增删改查的主要内容,如果未能解决你的问题,请参考以下文章