• 数据库mysql实战


    目录

    资源下载

    1. 数据库mysql安装与远程连接,常见的问题

    MySQL 安装

    基本操作

    2. 数据库用户授权与登录,远程连接

    远程连接数据库

    3. 数据库建模与建库建表

    4. Mysql数据库编程连接与插入数据

    Workbench对数据库的操作

    用代码实现对数据库的操作

    5. Mysql数据库的查询操作

    6. Mysql数据删除与存储过程调用

    Workbench对数据库的删除

    用代码实现对数据库的删除 

    7. Mysql数据库 图片存储


    资源下载

    mysql-workbench

    MySQL 中文完全参考手册5.1

    1. 数据库mysql安装与远程连接,常见的问题

    MySQL 安装

    首先update一下

    $ sudo apt-get update

    查看可以安装的版本

    $ sudo apt-get install mysql-server-5.

    直接安装5.7的命令

    $ sudo apt-get install mysql-server-5.7

    进入下面的安装界面后,先输入root密码,不要直接按回车。

     然后再次输入root密码,就开始正式安装了。

    出现下面类似的界面,就表示安装完成了。

    输入命令mysql -u root -p,再输入刚刚的密码,出现以下界面就表示安装成功了。 

    基本操作

    显示当前存在的数据库 show databases;

    使用哪个数据库 use mysql; 

     查看有哪些表  show tables;

    2. 数据库用户授权与登录,远程连接

    远程连接数据库

    MySQL 配置

    输入以下命令,打开配置文件

    $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    把bind-address改为0.0.0.0

     改完后,需要重启mysql生效重启命令:sudo /etc/init.d/mysql restart

    由于root用户只允许本地登陆,我们需要创建一个用户来远程登陆

    创建用户命令:create user 'kaka'@'%' identified by '123456';

    创建成功后,打开MySQLWorkbench,如下图配置相应的信息。

     赋予用户来远程权限,先切成root用户

    grant all privileges on *.* to 'kaka'@'%';

     配置完成后,点击 Test  Connection,出现以下对话框就表明成功了,可以进行数据库的相关操作了。

    mysql服务管理命令

    #启动       $ sudo service mysql start

    #停止       $ sudo service mysql stop

    #服务状态   $ sudo service mysql status

    彻底删除mysql5.7

    下面命令依次执行即可

    $ sudo rm /var/lib/mysql/ -R    删除数据库目录

    $ sudo rm /etc/mysql/ -R   删除启动脚本、配置文件等

    $ sudo apt-get autoremove mysql* --purge   卸载mysql所有文件

    $ sudo apt-get remove apparmor   这个apparmor是在装mysql-server时装上的,和安全有关

    $ dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P   清理残余mysql文件

    3. 数据库建模与建库建表

    创建 MySQL 数据表需要以下信息:

    1. 表名
    2. 表字段名
    3. 定义每个表字段

    4. Mysql数据库编程连接与插入数据

    Workbench对数据库的操作

    用代码实现对数据库的操作

    需要在客户端安装mysql开发工具

    sudo apt-get install libmysqlclient-dev

    1. //gcc -o mysql mysql1.c -I /usr/include/mysql/ -lmysqlclient
    2. #include <stdio.h>
    3. #include <string.h>
    4. #include <mysql.h>
    5. #define KAKA_DB_SERVER_IP "192.168.240.129"
    6. #define KAKA_DB_SERVER_PORT 3306
    7. #define KAKA_DB_USERNAME "kaka"
    8. #define KAKA_DB_PASSWORD "123456"
    9. #define KAKA_DB_DEFAULTDB "KAKA_DB"
    10. #define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('wzh', 'man');"
    11. #define SQL_SELECT_TBL_USER "SELECT * FROM TBL_USER;"
    12. // C U R D -->
    13. //
    14. int kaka_mysql_select(MYSQL *handle) { //
    15. //增删改查
    16. int main() {
    17. MYSQL mysql;
    18. //初始化数据库的连接
    19. if (NULL == mysql_init(&mysql)) {
    20. printf("mysql_init : %s\n", mysql_error(&mysql));//统一的错误值
    21. return -1;
    22. }
    23. //与mysql服务器建立连接
    24. if (!mysql_real_connect(&mysql, KAKA_DB_SERVER_IP, KAKA_DB_USERNAME, KAKA_DB_PASSWORD,
    25. KAKA_DB_DEFAULTDB, KAKA_DB_SERVER_PORT, NULL, 0)) {
    26. printf("mysql_real_connect : %s\n", mysql_error(&mysql));
    27. goto Exit;
    28. }
    29. #if 1
    30. // mysql --> insert
    31. printf("case : mysql --> insert \n");
    32. //通过管道发送sql语句给sql服务器
    33. if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
    34. printf("mysql_real_query : %s\n", mysql_error(&mysql));
    35. goto Exit;
    36. }
    37. #endif
    38. Exit:
    39. mysql_close(&mysql);
    40. return 0;
    41. }

     

    5. Mysql数据库的查询操作

    1. //gcc -o mysql mysql1.c -I /usr/include/mysql/ -lmysqlclient
    2. #include <stdio.h>
    3. #include <string.h>
    4. #include <mysql.h>
    5. #define KAKA_DB_SERVER_IP "192.168.240.129"
    6. #define KAKA_DB_SERVER_PORT 3306
    7. #define KAKA_DB_USERNAME "kaka"
    8. #define KAKA_DB_PASSWORD "123456"
    9. #define KAKA_DB_DEFAULTDB "KAKA_DB"
    10. #define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('wzh', 'man');"
    11. #define SQL_SELECT_TBL_USER "SELECT * FROM TBL_USER;"
    12. // C U R D -->
    13. //
    14. int kaka_mysql_select(MYSQL *handle)
    15. {
    16. // mysql_real_query --> sql
    17. if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {
    18. printf("mysql_real_query : %s\n", mysql_error(handle));
    19. return -1;
    20. }
    21. // store --> 将管道数据读出
    22. MYSQL_RES *res = mysql_store_result(handle);
    23. if (res == NULL) {
    24. printf("mysql_store_result : %s\n", mysql_error(handle));
    25. return -2;
    26. }
    27. // rows 行 / fields 列
    28. int rows = mysql_num_rows(res); //行数
    29. printf("rows: %d\n", rows);
    30. int fields = mysql_num_fields(res); //列数
    31. printf("fields: %d\n", fields);
    32. // fetch
    33. MYSQL_ROW row; //行的集合
    34. while ((row = mysql_fetch_row(res))) { //获取每一行的集合
    35. int i = 0;
    36. for (i = 0;i < fields;i ++) {
    37. printf("%s\t", row[i]);
    38. }
    39. printf("\n");
    40. }
    41. mysql_free_result(res);
    42. }
    43. //增删改查
    44. int main() {
    45. MYSQL mysql;
    46. //初始化数据库的连接
    47. if (NULL == mysql_init(&mysql)) {
    48. printf("mysql_init : %s\n", mysql_error(&mysql));//统一的错误值
    49. return -1;
    50. }
    51. //与mysql服务器建立连接
    52. if (!mysql_real_connect(&mysql, KAKA_DB_SERVER_IP, KAKA_DB_USERNAME, KAKA_DB_PASSWORD,
    53. KAKA_DB_DEFAULTDB, KAKA_DB_SERVER_PORT, NULL, 0)) {
    54. printf("mysql_real_connect : %s\n", mysql_error(&mysql));
    55. goto Exit;
    56. }
    57. #if 1
    58. // mysql --> insert
    59. printf("case : mysql --> insert \n");
    60. //通过管道发送sql语句给sql服务器
    61. if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
    62. printf("mysql_real_query : %s\n", mysql_error(&mysql));
    63. goto Exit;
    64. }
    65. #endif
    66. kaka_mysql_select(&mysql);
    67. Exit:
    68. mysql_close(&mysql);
    69. return 0;
    70. }

    6. Mysql数据删除与存储过程调用

    Workbench对数据库的删除

    DELETE FROM TBL_USER WHERE U_NAME='kaka';删除数据

    同名数据不知删除哪一条

     设置成安全模式,主键删除,会全部删除

     

    定义存储过程,调用。像函数一样。不能重复定义 

     

    用代码实现对数据库的删除 

    1. //gcc -o mysql mysql1.c -I /usr/include/mysql/ -lmysqlclient
    2. #include <stdio.h>
    3. #include <string.h>
    4. #include <mysql.h>
    5. #define KAKA_DB_SERVER_IP "192.168.240.129"
    6. #define KAKA_DB_SERVER_PORT 3306
    7. #define KAKA_DB_USERNAME "kaka"
    8. #define KAKA_DB_PASSWORD "123456"
    9. #define KAKA_DB_DEFAULTDB "KAKA_DB"
    10. #define SQL_INSERT_TBL_USER "INSERT TBL_USER(U_NAME, U_GENGDER) VALUES('wzh', 'man');"
    11. #define SQL_SELECT_TBL_USER "SELECT * FROM TBL_USER;"
    12. #define SQL_DELETE_TBL_USER "CALL PROC_DELETE_USER('wzh')" //调用存储过程
    13. // C U R D -->
    14. //
    15. int kaka_mysql_select(MYSQL *handle)
    16. {
    17. // mysql_real_query --> sql
    18. if (mysql_real_query(handle, SQL_SELECT_TBL_USER, strlen(SQL_SELECT_TBL_USER))) {
    19. printf("mysql_real_query : %s\n", mysql_error(handle));
    20. return -1;
    21. }
    22. // store --> 将管道数据读出
    23. MYSQL_RES *res = mysql_store_result(handle);
    24. if (res == NULL) {
    25. printf("mysql_store_result : %s\n", mysql_error(handle));
    26. return -2;
    27. }
    28. // rows 行 / fields 列
    29. int rows = mysql_num_rows(res); //行数
    30. printf("rows: %d\n", rows);
    31. int fields = mysql_num_fields(res); //列数
    32. printf("fields: %d\n", fields);
    33. // fetch
    34. MYSQL_ROW row; //行的集合
    35. while ((row = mysql_fetch_row(res))) { //获取每一行的集合
    36. int i = 0;
    37. for (i = 0;i < fields;i ++) {
    38. printf("%s\t", row[i]);
    39. }
    40. printf("\n");
    41. }
    42. mysql_free_result(res);
    43. }
    44. //增删改查
    45. int main() {
    46. MYSQL mysql;
    47. //初始化数据库的连接
    48. if (NULL == mysql_init(&mysql)) {
    49. printf("mysql_init : %s\n", mysql_error(&mysql));//统一的错误值
    50. return -1;
    51. }
    52. //与mysql服务器建立连接
    53. if (!mysql_real_connect(&mysql, KAKA_DB_SERVER_IP, KAKA_DB_USERNAME, KAKA_DB_PASSWORD,
    54. KAKA_DB_DEFAULTDB, KAKA_DB_SERVER_PORT, NULL, 0)) {
    55. printf("mysql_real_connect : %s\n", mysql_error(&mysql));
    56. goto Exit;
    57. }
    58. #if 1
    59. // mysql --> insert
    60. printf("case : mysql --> insert \n");
    61. //通过管道发送sql语句给sql服务器
    62. if (mysql_real_query(&mysql, SQL_INSERT_TBL_USER, strlen(SQL_INSERT_TBL_USER))) {
    63. printf("mysql_real_query : %s\n", mysql_error(&mysql));
    64. goto Exit;
    65. }
    66. #endif
    67. kaka_mysql_select(&mysql);
    68. #if 1
    69. printf("case : mysql --> delete \n");
    70. if (mysql_real_query(&mysql, SQL_DELETE_TBL_USER, strlen(SQL_DELETE_TBL_USER))) {
    71. printf("mysql_real_query : %s\n", mysql_error(&mysql));
    72. goto Exit;
    73. }
    74. #endif
    75. kaka_mysql_select(&mysql);
    76. Exit:
    77. mysql_close(&mysql);
    78. return 0;
    79. }

    7. Mysql数据库 图片存储

    待更新。。。

    推荐一个零声学院免费教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习: icon-default.png?t=M7J4https://course.0voice.com/v1/course/intro?courseId=5&agentId=0

  • 相关阅读:
    【向题看齐】408之操作系统OS概念记忆总结
    RBF神经网络案例——客户流失率预测
    Matlab图像处理基础(part 1)
    高精地图,养不起的 「 奢侈品 」
    C#算法(12)—对图像像素做X/Y方向的偏移
    IntelliJ IDEA新建gradle项目
    安全测试第一篇
    Docker从认识到实践再到底层原理(四-2)|Docker镜像仓库实战案例
    REACT全家桶(5)----hooks
    弘辽科技:网店如何补流量?需要有什么准备?
  • 原文地址:https://blog.csdn.net/kakaka666/article/details/126446125