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;
}

运行结果展示:

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小白菜123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值