最近想使用c语言写一个聊天的系统,所以看了一看mysql。看到过程中不断的总结,就写了一些东西。
说明一下,我使用的系统是ubuntu18.04,
linux下mysql的安装和使用
1.安装
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
使用这三条命令安装,什么含义?
第一个是mysql的服务器
第二个是mysql的客户端
第三个是mysql的c语言库.安装之后的位置在/usr/include/mysql/下面
2.连接数据库
mysql -h主机地址 -u用户名 -p用户密码
mysql -h localhost -u root -p
3.数据库的简单操作
# whereis mysql 查看文件安装路径
# which mysql 查询运行文件所在路径(文件夹地址)
usr/bin/mysql 是指:mysql的运行路径
var/lib/mysql 是指:mysql数据库文件的存放路径
usr/lib/mysql 是指:mysql的安装路径
4.数据库的相关操作
(1).数据库的操作
查看数据库
show databases;(mysql必须使用分号结尾);
创建数据库
create database mydata;
删除数据库
drop database mydata;
使用某个数据库
use mydata;
(2).数据库中表的创建、增加、删除、修改
建立一个表
create table mytable
( //使用圆括号
id int auto_increment not null primary key, //整型、自增、不为空、主键
name varchar(20), //字符串20个。
);
插入数据
insert mytable value(123,"qiny"); //设置第一个id的值,id为自增的
insert mytable(name) value("hello"); //有选择的添加数据
insert mytable(name) values("dxx"),("xiin"); //批量添加数据
删除表格
drop table mytable; //删除表格
删除表格的一行数据
delete from mytable where id = 123;
修改表格的属性值 //修改表的属性包括增加属性,删除属性,修改属性
alter table mytable
add age int not null,
drop name,
modify id int not null primary key auto_increment,
修改表格的数据
update mytable set name = 'nxnn' where id = 123;
(3)数据库的查询(常见)
select * from student;
select name,id from student;
select * from student where id = 123;
select count(*),avg(score),sum(score) from student group by age;
select * from student order by id desc | asc;
(4)其他
查看表的构造
deac mytable;
5.数据库的权限管理(不知道为什么没有成功)
(1)创建一个用户
CREATE USER 'qiny'@'localhost' IDENTIFIED BY '123456';
create user 'root'@'localhost' IDENTIFIED BY 'password';
(2)分配权限
GRANT ALL PRIVILEGES ON *.* TO 'qiny'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';
(3)移除权限
EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
6.c语言连接mysql
(1)安装msyql的库文件
编译方式:gcc xxx.c -o target -lmysqlclient
其中-lmysqlclient的含义是使用mysqlclient的动态库文件。
(2)使用mysql的库函数(相关函数参考mysql.h或者网上搜索)
MYSQL * conn; //创建一个mysql的数据库连接指针
conn = MSYQL_init(NULL); //初始化这个数据库连接指针
conn = mysql_real_connect(conn,"localhost","qiny","password","test",0,NULL,0);//连接数据库,其中第一个参数是数据库连接指针,第二个参数是地址,第三个参数是用户名,第四个参数是密码,第五个参数是数据库的名称。
mysql_query(conn,sql);//向数据库发出查询请求。
MYSQL_RES * res_ptr = mysql_store_result(conn); //建立一个数据存储区域,接受查询的结果。
int column = mysql_num_fields(res_ptr);//获取数据库表的列数。
int row = mysql_num_rows(res_ptr);//获取数据库表的行数。
MYSQL_FIELD * field = mysql_fetch_field(res_ptr);//获取数据库返回值表的列名。
MYSQL_ROW * mysql_row = mysql_fetch_row(res_ptr);//获取数据库中的一行数据 。