IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Linux系统编程阶段:MySQL数据库相关知识点和函数。 -> 正文阅读

[大数据]Linux系统编程阶段:MySQL数据库相关知识点和函数。

1.数据库的作用和介绍

????????数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。

????????数据库里面的数据的增删改查速度比文件操作要快的多。

2.mysql的安装

sudo apt-get install mysql-server:服务端安装

sudo apt-get install mysql-client:客户端安装

sudo apt-get install libmysqlclient-dev:相关的库

sudo service mysql start:启动数据库

sudo service mysql stop:关闭

注意点:

在安装的过程中会弹出一个框 ,让你输入数据库的root用户的密码

这个密码一定不要选择跳过 ?而要设置一个密码

这个密码建议大家都设置成1 。

3.mysql的进入和退出

????????登录的时候 ,有两种情况

->假如在安装的时候 ?成功输入了密码

mysql -u root -p

->假如在安装的时候 ?没有设置密码

1)切换到root用户 ?Ubuntu的root用户

2)在root用户权限下 ???

输入 :mysql -u root

????????退出:quit 退出数据库

4.mysql的数据类型

布尔类型:只有0和1

字符类型:

?数值类型:整型和浮点型

?时间类型:

?5.mysql常用词汇

datebase:数据库

table:表

column:列

from:来自

select:选中

*:所有

show:显示

insert:插入

drop:删除

change:更改

update:更新

6.mysql的显示

????????执行sql语句的时候,要执行的语句的最后加上一个;

????????显示所有的数据库:show ?databases;

????????要想使用某个数据库,在终端输入:use 数据库的名字

????????????????eg:use mydb;

????????显示数据库里所有的表:show tables from 数据库名字;

????????显示表里的所有的列的信息:show columns from userinfo;

7.mysql的查找

????????查找表里的所有的数据:select * from 表的名字;

????????查找表里的某一项的信息:

????????select name from 表的名字:查看表里的name这一列

????????查找满足某一个条件的数据:

????????select * from userinfo where name="duanweizheng" and ?Password="123";

8.mysql的插入和创建

????????创建一个数据库:create database mysql_203;

????????创建一张表:

????????reate table 表名 (列名 列的数据类型,列名 列的数据类型,列名 列的数据类型,列名 列的数据类型,列名 列的数据类型);

????????eg:CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

????????插入数据:

????????????????插入的时候必须要跟列的信息一一对应

????????????????插入的时候 ?假如某一项是没有信息的,要填NULL

????????eg:insert into 表名values("wangcai","lisi","qiutian","w","2022-7-18",NULL);

9.mysql的修改

????????修改,主要是修改表的名字以及列的名字。

????????改表的名字:alter table pet rename mypet;

????????修改列的名字:

????????alter table 表名 ?change 旧的列名 新的列名 新的列的类型;

????????eg:alter table mypet change sex new_sex CHAR(10);

????????新增列:

????????alter table 表名 ?add 要新增的列的名字 要新增的列的类型;

????????eg:alter table mypet add test char;

????????删除列:alter table 表名 drop 要删除的列的名字

????????eg:alter table mypet drop test;

10.mysql的更新

????????主要是用来更新数据库的数据:

????????update 表名 ?set 某一列=“” ?where 某个条件="";

????????eg:update mypet set name="ahuang" where name="tugou";

11.mysql的删除

????????数据库的删除 drop

????????删除数据库:drop database 数据库的名字

????????删除某一个表:drop table 表名

????????删除某一条数据:delete from 表名 ?where 判断条件

12.mysql的排序

????????ASC ?表示升序 默认; ????DESC 降序

????????select * from mypet order by name;

????????select * from mypet order by name ASC;?//表示升序排列

????????select * from mypet order by name DESC;//表示降序排列

三、数据库相关C语言库函数

1.mysql_real_connect():链接数据库

????????头文件:mysql/mysql.h

????????原型:

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)

????????参数:

????????MYSQL *mysql:mysql的核心结构体,需要我们自己申请一个这样的结构体,变量传给他,这个变量需要调用mysql_init函数来初始化这个结构体

????????const char *host:主机 ?固定填 localhost ?本地主机

????????const char *user:用户 ??root

????????const char *passwd:密码 ?1

????????const char *db:要用的数据库的名字

????????unsigned int port:固定填 0

????????const char *unix_socket:NULL

????????unsigned long client_flag : 0

????????返回值:

????????????????成功返回 ?MYSQL结构体的指针

????????????????失败返回 ?NULL

2.int mysql_query():在程序里执行sql语句

????????头文件:mysql.h

????????原型:int mysql_query(MYSQL *mysql, const char *query)

????????参数:

????????????????MYSQL *mysql :连接数据库返回的数据库的指针

????????????????const char *query:字符串,你要执行的sql语句

????????????????比如要查找数据:select * from mypet;

????????返回值:成功返回 ?0 ???失败返回 ?非零值

3.mysql_store_result():获取sql语句执行后的结果的集合

????????头文件:mysql.h

????????原型:MYSQL_RES *mysql_store_result(MYSQL *mysql)

????????参数:MYSQL *mysql:数据库的核心结构体的指针

????????返回值:成功返回,结果集合的结构体

????????返回的结果集合结构体,一般要借助其他的函数来取里边的值

????????获取列数:unsigned int mysql_num_fields(MYSQL_RES* res)

????????获取行数:my_ulonglong mysql_num_rows(MYSQL_RES *result)

????????获取一行的信息:MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

????????????????????????第一次调用 ?返回第一行内容

????????????????????????第二次调用 ?返回第二行的内容

????????获取列的信息:MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

????????使用数据库相关函数注意事项:

????????1)编译的是要指定链接库的名字?-l(小写L)-lmysqlclient

????????2)指定库的路径?-L(大写L) -L /usr/lib/mysql/plugin

4.mysql_free_result():释放数据库结果结构体

????????头文件:mysql.h

????????原型:void mysql_free_result(MYSQL_RES *result)

????????参数:MYSQL_RES *result:结果集合结构体指针

????????返回值:无

5.mysql_close():关闭数据库的链接

????????头文件:mysql.h

????????原型:void mysql_close(MYSQL *mysql)

????????参数:MYSQL *mysql:mysql的核心结构体指针

????????返回值:无

练习代码参考:

#include <stdio.h>
#include <mysql/mysql.h>
MYSQL mydata;
MYSQL *ret=NULL;
int main()
{
    int a=0;
    //1.初始化数据库的核心结构体
    ret = mysql_init(&mydata);
    //2.连接数据库
    ret=mysql_real_connect(ret,"localhost","root","1","my_718",0,NULL,0);
    if(ret == NULL)
    {
        printf("数据库连接失败!\n");
        return -1;
    }
    //3.执行sql语句
    a=mysql_query(ret,"select *from whs");//查找表里的所有的数据
    if(a!=0)
    {
        printf("数据查询失败!\n");
        return -1;
    }
    //4.获取查询的数据库的信息
    MYSQL_RES *data=NULL;
    data = mysql_store_result(ret);
    if(data == NULL)
	{
		printf("获取数据库的结果异常\n");
		return -1;
	}
	//5.获取行数和列数
	unsigned int lie,hang;
	lie=mysql_num_fields(data);
	printf("一共有%d列\n",lie);
	hang=mysql_num_rows(data);
	printf("一共有%d行\n",hang);
	//6.获取列的信息
	MYSQL_FIELD *line_msg=NULL;
	int i;
	for(i=0;i<lie;i++)
	{
		line_msg=mysql_fetch_field(data);
	    printf("%s\t",line_msg->name);    
	   //printf("table :%s\n",line_msg->table);
    }
    printf("\n");
    //7.获取每一行的内容
    MYSQL_ROW myhang;
    int j=0;
	for(i=0;i<hang;i++)
	{
		myhang=mysql_fetch_row(data);
		{
			for(j=0;j<lie;j++)
			{
				printf("%s\t",myhang[j]);
			}
			printf("\n");
		}
	}
	//8.释放空间
	mysql_free_result(data);
	//9.断开连接
	mysql_close(ret);
    return 0;
}

运行结果展示:

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:56:33  更:2022-07-20 19:00:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:16:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码