当前位置:网站首页>Embedded database development programming MySQL (full)
Embedded database development programming MySQL (full)
2022-08-04 03:32:00 【light chases rain】
一、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);
-- Xiao Zhang transfers money to Xiao Ming500
update account set money = money - 500 where id = 1000;
-- 停电了 数据出错
-- 开启事务
start transaction;
-- Xiao Zhang transfers money to Xiao Ming500
update account set money = money - 500 where id = 1000;
-- Xiao Ming increased500块
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;
-- Xiao Ming transferred out500块
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); //创建mysqlobject and initialized,返回对象的地址
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)) //Get the specific field name
{
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;
}
边栏推荐
- [Playwright Test Tutorial] 5 minutes to get started
- Polygon zkEVM网络节点
- Mini program + new retail, play the new way of playing in the industry!
- TOML配置文件格式,YAML最有力的竞争者
- 2千兆光+6千兆电导轨式网管型工业级以太网交换机支持X-Ring冗余环网一键环网交换机
- sql语句查询String类型字段小于10的怎么查
- 【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
- Pine Script | How to display and typeset a plot switch?
- 【源码】使用深度学习训练一个游戏
- STM8S105k4t6c---------------Light up LED
猜你喜欢
随机推荐
如何在MySQL中的数据库下删除所有的表
数据湖(二十):Flink兼容Iceberg目前不足和Iceberg与Hudi对比
2022支付宝C2C现金红包PHP源码DEMO/兼容苹果/安卓浏览器和扫码形式
Mockito单元测试
全网没有之一的JMeter 接口测试流程详解
docker+bridge+redis master-slave+sentry mode
【指针内功修炼】深度剖析指针笔试题(三)
2 Gigabit Optical + 6 Gigabit Electric Rail Type Managed Industrial Ethernet Switch Supports X-Ring Redundant Ring One-key Ring Switch
STM8S-----option byte
移动支付线上线下支付场景
仿牛客论坛项目梳理
目标检测-中篇
系统太多,多账号互通如何实现?
2022年最新海南建筑八大员(材料员)模拟考试试题及答案
SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropri
说说数据治理中常见的20个问题
kingbaseES V8R2/R3 表在指定表空间,为何显示为默认表空间?
JVM内存和垃圾回收-07.堆
Asynchronous programming solution Generator generator function, iterator iterator, async/await, Promise
力扣(LeetCode)215. 数组中的第K个最大元素(2022.08.03)