当前位置:网站首页>嵌入式数据库开发编程MySQL(全)
嵌入式数据库开发编程MySQL(全)
2022-08-04 03:29:00 【光追雨】
一、mysql
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
-- 登录MYSQL
mysql -u root -p
-- 查看所有的数据库
show databases;
-- 使用数据库
use mysql;
-- 查看所有表
show tables;
-- 查看所有用户信息
select user from user;
-- 创建用户
create user "c++class"@"localhost" identified by "123456";
-- 修改密码
set password for "c++class"@"localhost" = PASSWORD("666666");
-- 授予权限
grant select on *.* to "c++class"@"localhost";
grant all on *.* to "c++class"@"localhost";
-- 创建表
create table int_test(
tiny_int tinyint,
small_int smallint,
medium_int mediumint,
commint_int int,
big_int bigint
);
-- 显示表的结构
describe int_test;
-- 插入数据
insert into int_test values(1,1,1,1,1);
insert into int_test values(200,1,1,1,1); -- ERROR 1264 (22003): Out of range value for column 'tiny_int' at row 1
insert into int_test values(1,1,1,'a',1); -- ERROR 1366 (HY000): Incorrect integer value: 'a' for column 'commint_int' at row 1
-- 创建学生表
create table student(
name varchar(10) not null,
age tinyint unsigned not null,
sex char(6)
);
-- 修改表
alter table student rename stu;
alter table stu drop sex;
alter table stu add sex char(6);
alter table stu add id int unsigned not null primary key auto_increment first;
alter table stu add birth date after name;
alter table stu add tel char(11) default '-';
-- 插入数据
insert into stu (id,name,birth,age,sex,tel) values(1000,"zhangsan","1999-9-9",90,"femal","11111111111");
insert into stu (name,birth,age,sex,tel) values("lisi","1993-9-19",40,"mal","22222222222");
insert into stu values(1002,"xiaozhang","1939-9-9",90,"femal","11213141511"),(1003,"xiaoming","1979-9-19",80,"femal","55555555555");
insert into stu (id,name,birth,age,sex) values(1005,"xiaowang","1993-9-19",40,"mal");
insert into stu (id,name,birth,age,sex) values(1005,"xiaowang","1993-9-19",40,"mal");
insert into stu stu values(1006,"张三","1998-8-8",21,"male","11111111111");
-- 查询数据
select * from stu;
select name from stu;
select name from stu where id > 1002;
select name from stu where id between 1001 and 1004;
-- 修改字符集
alter table stu convert to character set utf8;
-- 修改数据
update stu set tel = "88888888888" where name = "张三";
-- 删除记录
delete from stu where id = 1000;
-- 删除数据库
drop database test;
-- 创建数据库
create database test;
-- 事务操作
-- 创建表
create table account(
id int unsigned not null primary key,
name varchar(20),
money int
)charset utf8;
--插入数据
insert into account values(1000,"xiaozhang",2000),(1001,"xiaoming",5000),(1002,"张三",1000);
-- 小张给小明转账500
update account set money = money - 500 where id = 1000;
-- 停电了 数据出错
-- 开启事务
start transaction;
-- 小张给小明转账500
update account set money = money - 500 where id = 1000;
-- 小明增加500块
update account set money = money + 500 where id = 1001;
-- 提交
commit;
-- 开启事务
start transaction;
-- xiaozhang转出500
update account set money = money - 500 where id = 1000;
-- 设置回滚点
savepoint sp1;
-- 小明转出500块
update account set money = money - 500 where id = 1001;
-- 设置回滚点
savepoint sp2;
-- 张三增加1000块
update account set money = money + 1000 where id = 1002;
-- 回滚到sp1;
rollback to sp1;
-- 提交
commit;
二、Linux C下MYSQL的API
#include <iostream>
#include <mysql/mysql.h>
#include <iomanip>
using namespace std;
MYSQL *Init()
{
MYSQL *m;
m = mysql_init(NULL); //创建mysql对象并且初始化,返回对象的地址
if (NULL == m)
{
cout<<mysql_error(m)<<endl; //打印错误信息
return NULL;
}
m = mysql_real_connect(m,"localhost","c++class","1","mysql",0,NULL,0);
if (NULL == m)
{
cout<<mysql_error(m)<<endl; //打印错误信息
return NULL;
}
return m;
}
void InsertDatabase(MYSQL *m)
{
if (NULL == m)
{
return;
}
int ret = mysql_query(m,"set names utf8");
if (ret != 0)
{
cout<<mysql_error(m)<<endl;
return;
}
char sql[128] = {0};
int id,age;
char name[32] = {0},birth[32] = {0},sex[12] = {0},tel[12] = {0};
cout<<"input:id,name,birth,age,sex,tel:"<<endl;
cin>>id>>name>>birth>>age>>sex>>tel;
sprintf(sql,"insert into stu (id,name,birth,age,sex,tel) values(%d,'%s','%s',%d,'%s','%s')",
id,name,birth,age,sex,tel);
ret = mysql_query(m,sql);
if(ret != 0)
{
cout<< mysql_error(m)<<endl; //打印错误信息
return;
}
cout<<"插入成功"<<endl;
}
void FindDataBase(MYSQL *m)
{
if(m == NULL)
{
return;
}
int ret = mysql_query(m,"set names utf8");
if(ret != 0)
{
cout<< mysql_error(m)<<endl; //打印错误信息
return;
}
ret = mysql_query(m,"select * from stu;");
if(ret != 0)
{
cout<< mysql_error(m)<<endl; //打印错误信息
return;
}
MYSQL_RES * res = mysql_store_result(m); //获取查询到的结果
if(NULL == res)
{
cout<< mysql_error(m)<<endl; //打印错误信息
return;
}
//获取字段数
int field = mysql_num_fields(res);
MYSQL_FIELD *f; //结构体
while(f = mysql_fetch_field(res)) //获取具体的字段名
{
cout<<setw(20)<<setiosflags(ios::left)<<f->name; //打印字段名
}
cout<<endl;
//获取每一条记录
MYSQL_ROW r; //数组
while(r = mysql_fetch_row(res))
{
for(int i = 0 ; i < field;i++)
{
cout<<setw(20)<<setiosflags(ios::left)<<r[i];
}
cout<<endl;
}
}
int main(int argc, char const *argv[])
{
MYSQL *mysql; //创建mysql变量
mysql = Init();
if(mysql != NULL)
{
cout<<"链接数据库成功"<<endl;
}
else
{
cout<<"初始化数据库失败"<<endl;
}
//插入数据
InsertDatabase(mysql);
FindDataBase(mysql);
return 0;
}
边栏推荐
- "Introduction to nlp + actual combat: Chapter 8: Using Pytorch to realize handwritten digit recognition"
- What is the source of flinkcdc consuming mysql binlog data without sqltype=delete
- 【 observe 】 super fusion: the first mention of "calculate net nine order" evaluation model, build open prosperity of power network
- 数据集类型转换—TFRecords文件
- 移动支付线上线下支付场景
- 张量篇-应用案例
- 汇编语言之栈
- Exclude_reserved_words 排除关键字
- Big guys, it takes a long time to read mysql3 million single tables, what parameters can be discounted, or is there any way to hurry up
- TOML configuration file format, YAML's top contender
猜你喜欢

How to drop all tables under database in MySQL
![出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]](/img/e0/32d78fac04dc2deb1cb1f847a7bab5.png)
出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]

C language -- ring buffer

Mini program + new retail, play the new way of playing in the industry!
sql注入一般流程(附例题)

Pine Script | How to display and typeset a plot switch?

基本表单验证流程

4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机

十一种概率分布

【Playwright测试教程】5分钟上手
随机推荐
Basic form validation process
Deep Learning (3) Classification Theory Part
2022支付宝C2C现金红包PHP源码DEMO/兼容苹果/安卓浏览器和扫码形式
《nlp入门+实战:第八章:使用Pytorch实现手写数字识别》
View mysql deadlock syntax
WPE详细教程
sql注入一般流程(附例题)
目标检测-中篇
C language -- ring buffer
力扣(LeetCode)215. 数组中的第K个最大元素(2022.08.03)
十一种概率分布
张量篇-应用案例
typescript type 和 interface 的区别
基于Qt的目录统计QDirStat
从图文展示到以云为核,第五代验证码独有的策略情报能力
unsafe.Pointer, pointer, reference in golang
STM8S105K4T6------Serial port sending and receiving
2022年最新海南建筑八大员(材料员)模拟考试试题及答案
Polygon zkEVM网络节点
Mini program + new retail, play the new way of playing in the industry!