连接数据库
mysql -uroot -p
密码:空
一、第三方库:MySQL
数据库-存储并管理数据的仓库,是一个C/S架构
MySQL客户端通过sql来告诉MySQL服务器,自己需要做什么操作
1.sql语句
sql:structure query language结构化查询语言
sql语句应该以英文封号作为结尾
sql语句不区分大小写
sql语句尽量避免使用关键字作为库或者表或者字段的名称
1.1库的操作
创建:create database ct;
查看所有库:show databases;
选择操作的库:use ct;
查看当前所选操作的库:select database();
删除库:delete database ct;
1.2MySQL中的数据类型
int整型
decimal(M,D)浮点型
varchar(len)字符串类型
datatime日期类型
1.3表的操作
创建:create table student(sn int , name varcher(32) , age int );
查看库中所有表:show tables;
查看表结构:desc student;
删除表:drop table student;
1.4表中数据的操作
新增:
insert student values(1,"张三",18);
数据位置一定跟表中字段一致,不能错位或缺少
查询:
全字段查询:select * from student;
指定字段查询:select sn , name from student;
条件查询:select *from student where name = "张三";
修改:
注意:修改的时候一定要设置过滤条件,否则针对的是表中的所有元素
update student set name = "李四" where name = "张三";
删除:
delete from student where name = "张三";
二、MySQL客户端
主要了解的是MySQL开发包中的api接口
1.初始化MySQL操作句柄
MYSQL *mysql_init(MYSQL *mysql);
对传入的句柄进行初始化
若传入的句柄为NULL,则内部会动态申请空间,进行初始化,并返回句柄首地址
返回值:若失败则返回NULL
2.连接MySQL服务器
MYSQL *mysql_real_connect(MYSQL *mysql, char *host , char *user , char *pass , char *dbname, int port , char *unix_socket , int client_flag)
mysql:初始化完成的mysql句柄
host:用户名
pass:密码
dbname:要操作的库名称
port:端口,默认0为3306端口,是mysql服务的端口
unix_socket:套接字或管道文件名-通常置NULL
client_flag:客户端的操作标志,通常置0
返回值:成功返回句柄首地址,失败返回NULL
3.设置客户端字符集(通常与服务器保持一致,使用utf8)
int mysql_set_character_set(MYSQL *mysql , char * name);
mysql:操作句柄
name:字符集名称,通常是“utf8”
返回值:成功返回0;失败返回非0
4.选择要操作的数据库(切换操作的库)
int mysql_select_db(MYSQL *mysql , char * dbname);
5.将sql语句发送给服务器,并执行sql语句
int mysql_query(MYSQL *mysql , char * sql);
mysql:操作句柄
sql:对数据库中的数据进行的操作的sql语句
返回值:成功返回0;失败返回非0
语句有没有执行成功,决定了当前的操作是否完成
6.查找操作
因为增删改只要语句执行成功就OK,但是如果是查询语句,因为查询的话语成功执行,还需要获取查询的结果。
6.1将查询的结果保存到本地
MYSQL_RES *mysql_store_result(MYSQL * mysql);
mysql:操作句柄
返回值:成功返回结果集的首地址;失败返回NULL
将结果集保存到本地与执行语句这一步操作,如果使用的是一个操作句柄就会发生线程安全问题
6.2获取结果集的行数和列数
int mysql_num_rows(MYSQL_RES *res);//获取结果行数
int mysql_num_fields(MYSQL_RES *res);//获取结果列数
6.3遍历结果集,逐条取出数据
MYSQL_ROW mysql_fetch_row(MYSQL_RES *res);
这个函数或者说res内部记录了当前的读写位置,只需要不断的调用,就可以逐条取出数据。
这个返回值是给字符指针数组char *arr[] ,将一行中的多列进行扁平化存储,每一个元素都是一列数据。
6.4释放结果集
int mysql_free_result(MYSQL_RES *res);
7.关闭客户端连接,释放句柄
int mysql_close(MYSQL *mysql);2