Linux——MySql数据库

一、数据库的有关概念

1.数据库

存放数据的仓库,由存放数据的文件和管理数据的软件两部分构成。

2.数据库管理系统

主要完成对数据库的操作与管理功能。比如:对数据的增删改查,对数据库用户的管理,权限管理等。

3.mysql

mysql数据库是一种C/S(客户端和服务端)模型,需要先启动服务器(mysqld),然后客户端(mysql)要通过用户名密码登录连接到服务器(使用TCP建立连接),连接成功后才能对数据进行操作。mysql使用的端口是3306。

二、数据库的基本操作

1.数据库服务的启动与停止(管理员权限)

(1)启动服务器 service mysql start

(2)重启服务器 service mysql restart

(3)停止服务器 service mysql stop

(4)查看服务状态 service mysql status

2.登录命令

mysql -u用户名 -h主机地址(省略代表本机) -p密码

3.退出数据库

exit/quit/ctr+d

4.查看所有数据库

show databases;

5.显示数据库的版本

select version();

6.显示时间

select now();

7.创建数据库

create database 数据库名

8.选择使用数据库

use 数据库名

9.查看当前使用的数据库

select database()

10.删除数据库

drop database 数据库名

11.查看数据库中的所有表

show tables;

12.创建表

create table 数据库表的名字(字段 类型 约束)

eg: create table student( id int primary key not null,name varchar(30));

13.查看表中的数据

查看所有数据:select * from 表名

查看部分数据: select 字段 from 表名 where 字段=值

14.插入数据

insert into 表名 values(字段1的值,字段2的值..........)

15.更新数据

update 表名 set 字段=值 where 字段=值

16.删除数据

删除全部行:delete from 表名

删除指定行:delete from 表名 where 字段=值

17.删除表

drop table 表名

三、使用C语言连接mysql数据库

1.前提

已安装c/c++的开发库

2.步骤

①初始化连接句柄

②连接数据库

③执行sql语句

④关闭连接

3.代码理解

cpp 复制代码
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<mysql/mysql.h>
#include<string.h>
int main()
{
    //定义连接句柄,并初始化
    MYSQL mysql_con;
    MYSQL* mysql=mysql_init(&mysql_con);
    if(mysql==NULL)
    {
        printf("init err\n");
        exit(1);
    }
    //连接数据库服务器
    mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","2408_db",3306,NULL,0);
    if(mysql==NULL)
    {
        printf("连接失败\n");
        exit(1);
    }
    printf("连接成功\n");
    //插入语句
    //char* sql="insert into student values(1002,'小顾',20)";
    //修改语句
    //char* sql="update student set age=25 where id=1001";
    //删除语句
    //char* sql="delete from student where id=1002";

    //查询
    char* sql="select name from student where id =1001";

    //执行sql语句
    int n=mysql_query(mysql,sql);
    if(n!=0)
    {
        printf("执行sql语句失败\n");
        exit(1);
    }
    printf("执行sql语句成功\n");

    //获取查询到数据的结果集
    MYSQL* r=mysql_store_result(mysql);
    if(r==NULL)
    {
        printf("获取结果集失败\n");
        exit(1);
    }
    //获取结果集中有多少条记录
    int num=mysql_num_rows(r);
    if(num==0)
    {
        printf("0条记录\n");
        mysql_free_result(r);
        exit(1);
    }
    printf("共查到%d的记录\n",num);
    //获取记录的列数
   int count=mysql_field_count(mysql);
   printf("每条记录有%d列\n",count);
   //循环获取每一条记录
   for(int i=0;i<num;i++)
   {
    //提取结果集中的一行记录
    MYSQL_ROW row=mysql_fetch_row(r);
    //第一列 row[1]  第二列 row[2]
    for(int j=0;j<count;j++)
    {
        printf("%s  ",row[j]);//以字符串的形式打印出来是因为服务器响应客户端时,使用TCP协议以send发送数据
    }
    printf("\n");
   }

    //释放结果集
    mysql_free_result(r);
    //关闭连接句柄
    mysql_close(mysql);
    exit(0);
}

四、事务

1.事务的定义

事务是数据库管理系统中的一个操作序列,这些操作作为一个整体要么全部成功,要么全部失败。

2.事务的基本特性(ACID)

(1)原子性:事务中所有操作要么全部完成,要么全部不做。

(2)一致性:事务执行前后,数据库必须保持一致状态。

(3)隔离性:多个事务并发执行时,相互之间的操作不会互相干扰,表现为一个事务的中间状态对其他事务是不可见的。

(4)持久性:一旦事务提交,其结果是永久性的,即使系统崩溃也不会丢失。

3.事务的隔离级别

(1)读未提交 :事务可以读取未提交事务的更改,可能出现脏读。

(2)读已提交:事务只能读取已提交事务的更改,避免脏读,但可能出现不可重复读。

(3)可重复读 :在一个事务内多次读取同一数据保证一致,避免不可重复读,但可能出现幻读。

(4)串行化 :最高隔离级别,通过强制事务串行执行,完全避免幻读,但性能较低。

五、索引

1.索引的定义

索引(Index)是数据库中用来加快数据查询速度的一种数据结构。它类似于书籍的目录,帮助数据库快速定位到需要的数据行,而不必扫描整个表。

2.索引的作用

(1)提升查询效率

(2)加快数据检索速度

3.索引的缺点

(1)增加写操作(插入、更新、删除)的成本,因为每次操作都要维护索引。

(2)占用存储空间。

六、视图

1.视图的定义

视图是数据库中的一种虚拟表,本身不存放数据,数据来源于基本表。

2.使用视图的原因

(1)简化复杂查询:将复杂的多表联结或筛选条件封装在视图中,调用方便。

(2)提升安全性:只暴露部分数据,隐藏敏感信息,控制用户权限。

(3)提供数据抽象:隐藏底层表结构,减少应用与数据库的耦合。

相关推荐
KoiHeng2 小时前
操作系统简要知识
linux·笔记
Hello.Reader5 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454315 小时前
Redis-主从复制-分布式系统
java·数据库·redis
Johny_Zhao5 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8506 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
好好学习啊天天向上7 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
好奇的菜鸟8 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°8 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜8 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
典学长编程8 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome