当前位置:网站首页>嵌入式数据库开发编程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;
}
边栏推荐
猜你喜欢
new Date converts strings into date formats Compatible with IE, how ie8 converts strings into date formats through new Date, how to replace strings in js, and explain the replace() method in detail
How to drop all tables under database in MySQL
Simple record of Flink principle flow chart
出现504怎么办?由于服务器更新导致的博客报504错误[详细记录]
4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机
自定义通用分页标签02
Brush esp8266-01 s firmware steps
There are too many systems, how to realize multi-account interworking?
y86.第四章 Prometheus大厂监控体系及实战 -- prometheus存储(十七)
Based on the statistical QDirStat Qt directory
随机推荐
MRS: Alluxio的使用介绍
2022支付宝C2C现金红包PHP源码DEMO/兼容苹果/安卓浏览器和扫码形式
STM8S105K4T6------串口发送和接收
new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解
【源码】使用深度学习训练一个游戏
【Playwright测试教程】5分钟上手
Architecture of the actual combat camp module three operations
创新互融|华秋赋能助力OpenHarmony生态硬件开发落地
typescript type 和 interface 的区别
三分建设,七分管理!产品、系统、组织三管齐下节能降耗
[Playwright Test Tutorial] 5 minutes to get started
【Ryerson情感说话/歌唱视听数据集(RAVDESS) 】
pnpm 是凭什么对 npm 和 yarn 降维打击的
pytorch applied to MNIST handwritten font recognition
返回字符串中的最大回文数
如何在MySQL中的数据库下删除所有的表
机器学习模型的“可解释性”
MySQL Query Exercise (1)
SQL注入中 #、 --+、 --%20、 %23是什么意思?
【 observe 】 super fusion: the first mention of "calculate net nine order" evaluation model, build open prosperity of power network