数据库管理软件基础 SQL语言增删改查

Posted 我的紫霞辣辣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库管理软件基础 SQL语言增删改查相关的知识,希望对你有一定的参考价值。

数据库管理软件的由来

1、程序所有的组件就不可能运行在一台机器上

  • 如果程序所有的组件全部运行在一台机器上,那么这台机器一旦挂掉就意味着整个软件的崩溃,程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。
  • 于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

2、数据安全问题

  • 我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
  • 于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

3、并发

  • 根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:
  1. 远程连接(支持并发)
  2. 打开文件
  3. 读写(加锁)
  4. 关闭文件

我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(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语言增删改查的主要内容,如果未能解决你的问题,请参考以下文章

连接到sql数据库的c#语言的增删改查

MySQL 之基础操作及增删改查等

[Android] SQLite数据库之增删改查基础操作

mysql 的增删改查 实现代码

数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

SQL数据库语言基础之SqlServer视图的创建修改与视图数据的增删改查