• MYSQL常用命令


    一.数据类型

    MySQL中有多种数据类型,每种类型用于存储不同类型的数据。以下是MySQL中常见的数据类型:

    1. 数值类型

      • INT:整数类型,存储范围为-2,147,483,648到2,147,483,647。
      • BIGINT:大整数类型,存储范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
      • FLOAT:单精度浮点数类型。
      • DOUBLE:双精度浮点数类型。
      • DECIMAL:定点数类型,用于精确存储小数。
    2. 字符串类型

      • CHAR:固定长度字符串,最大长度为255个字符。
      • VARCHAR:可变长度字符串,最大长度为65535个字符。
      • TEXT:长文本类型,最大长度为65,535个字符。
    3. 日期和时间类型:

      • DATE:日期类型,格式为'YYYY-MM-DD'。
      • TIME:时间类型,格式为'HH:MM:SS'。
      • DATETIME:日期和时间类型,格式为'YYYY-MM-DD HH:MM:SS'。
      • TIMESTAMP:时间戳类型,用于存储日期和时间的组合。(时间戳从1970.1.1的秒数)
    4. 布尔类型:

      • BOOL 或 BOOLEAN:布尔类型,存储true或false。
    5. 二进制类型:

      • BLOB:二进制大对象类型,用于存储二进制数据。
      • LONGBLOB:长二进制大对象类型,用于存储更大的二进制数据。

    此外,MySQL还支持其他特殊数据类型,如枚举类型(ENUM)和集合类型(SET),用于存储从预定义选项中选择的值。

    二.MYSQL基础知识

    多个数据库服务器可以集群工作

    一个服务器上有多个数据库,一个数据库上有多个数据表

    数据库:数据表的集合

    1.创建MYSQL对象并初始化
    1. MYSQL* mysql = new MYSQL();
    2. MYSQL* pDB = mysql_init(mysql); //初始化mysql对象
    3. //这里两个变量 mysql和pDB 两个变量记录(指向)同一个值避免初始化失败后返回NULL指针内存泄漏的风险
    4. if (pDB == NULL) {
    5. std::cout << "mysql_init failed!" << std::endl;
    6. return -1;
    7. }
    2.连接数据库

     pDB = mysql_real_connect(pDB, "localhost", "root", "1234", "mysql", 3306, NULL, 0);

    补充:

    3.创建新的用户

    1. int creat_user(MYSQL* pDB){ //创建新用户
    2. std::string sql = "CREATE USER 'fc'@'localhost' IDENTIFIED BY ''";
    3. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    4. if (ret != 0) {
    5. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    6. return -1;
    7. }
    8. return 0;
    9. }
    4.给用户授权权限和 撤销权限

    1. int grant_userpower(MYSQL* pDB) { //授予用户权限
    2. std::string sql = "GRANT ALL PRIVILEGES ON *.* TO 'fc'@'localhost' with grant option";
    3. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    4. if (ret != 0) {
    5. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    6. return -1;
    7. }
    8. return 0;
    9. }

    5.删除用户
    drop USER fc@localhost
    6.MYSQL仓库的创建和删除

    1. int creat_database(MYSQL* pDB) { //创建数据仓库
    2. std::string sql = "CREATE DATABASE hello";
    3. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    4. if (ret != 0) {
    5. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    6. return -1;
    7. }
    8. return 0;
    9. }
    10. int grant_database_power(MYSQL* pDB) { //授予仓库权限
    11. std::string sql = "GRANT ALL ON hello.* TO 'fc'@'localhost'";
    12. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    13. if (ret != 0) {
    14. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    15. return -1;
    16. }
    17. return 0;
    18. }

    三.MYSQL命令的执行

    发送SQL命令

    获取SQL执行结果

    解析获取到的结果

    1. MYSQL_RES* result = mysql_use_result(mysql);
    2. if (result != NULL) {
    3. show_result(result); //展示数据
    4. mysql_free_result(result); //释放结果,与use_result相互对应
    5. }
    1. void show_result(MYSQL_RES* result) {
    2. //获取结果集列的数量
    3. unsigned nFiles = mysql_num_fields(result);
    4. //获取结果集行的数量
    5. my_ulonglong nRows = mysql_num_rows(result);
    6. //获取每一列的定义接口:
    7. MYSQL_FIELD* fields = mysql_fetch_fields(result);
    8. for (unsigned i = 0; i < nRows; i++) { //遍历每一行
    9. MYSQL_ROW row = mysql_fetch_row(result);
    10. //获取每一行结果
    11. if (row != NULL) {
    12. for (unsigned j = 0; j < nFiles; j++) {
    13. //对于每一行遍历每列的信息
    14. std::cout << "type:" << fields[j].type << " " << fields[j].name << " : " << row[j] << std::endl;
    15. //对应存储数据的值
    16. }
    17. }
    18. std::cout << "==================" << std::endl;
    19. }
    20. }

    附录:
    完整代码

    1. #include
    2. #include
    3. void show_result(MYSQL_RES* result) {
    4. //获取结果集列的数量
    5. unsigned nFiles = mysql_num_fields(result);
    6. //获取结果集行的数量
    7. my_ulonglong nRows = mysql_num_rows(result);
    8. //获取每一列的定义接口:
    9. MYSQL_FIELD* fields = mysql_fetch_fields(result);
    10. for (unsigned i = 0; i < nRows; i++) { //遍历每一行
    11. MYSQL_ROW row = mysql_fetch_row(result);
    12. //获取每一行结果
    13. if (row != NULL) {
    14. for (unsigned j = 0; j < nFiles; j++) {
    15. //对于每一行遍历每列的信息
    16. std::cout << "type:" << fields[j].type << " " << fields[j].name << " : " << row[j] << std::endl; //对应存储数据的值
    17. }
    18. }
    19. std::cout << "==================" << std::endl;
    20. }
    21. }
    22. int creat_user(MYSQL* pDB){ //创建新用户
    23. std::string sql = "CREATE USER 'fc'@'localhost' IDENTIFIED BY ''";
    24. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    25. if (ret != 0) {
    26. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    27. return -1;
    28. }
    29. return 0;
    30. }
    31. int grant_userpower(MYSQL* pDB) { //授予用户权限
    32. std::string sql = "GRANT ALL PRIVILEGES ON *.* TO 'fc'@'localhost' with grant option";
    33. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    34. if (ret != 0) {
    35. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    36. return -1;
    37. }
    38. return 0;
    39. }
    40. int creat_database(MYSQL* pDB) { //创建数据仓库
    41. std::string sql = "CREATE DATABASE hello";
    42. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    43. if (ret != 0) {
    44. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    45. return -1;
    46. }
    47. return 0;
    48. }
    49. int grant_database_power(MYSQL* pDB) { //授予仓库权限
    50. std::string sql = "GRANT ALL ON hello.* TO 'fc'@'localhost'";
    51. int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
    52. if (ret != 0) {
    53. std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    54. return -1;
    55. }
    56. return 0;
    57. }
    58. int fe() {
    59. MYSQL* mysql = new MYSQL();
    60. MYSQL* pDB = mysql_init(mysql); //初始化mysql对象
    61. //这里两个变量 mysql和pDB 两个变量记录(指向)同一个值避免初始化失败后返回NULL指针内存泄漏的风险
    62. if (pDB == NULL) {
    63. std::cout << "mysql_init failed!" << std::endl;
    64. return -1;
    65. }
    66. pDB = mysql_real_connect(pDB, "localhost", "root", "1234", "mysql", 3306, NULL, 0);
    67. //连接数据库
    68. std::cout << pDB << std::endl;
    69. if (pDB) {
    70. //creat_user(pDB);
    71. //grant_userpower(pDB);
    72. //creat_database(pDB);
    73. //grant_database_power(pDB);
    74. //获取SQL的数据
    75. MYSQL_RES* result = mysql_use_result(mysql);
    76. if (result != NULL) {
    77. show_result(result); //展示数据
    78. mysql_free_result(result); //释放结果,与use_result相互对应
    79. }
    80. }
    81. mysql_close(pDB);
    82. delete(mysql);
    83. return 0;
    84. }
    85. int main()
    86. {
    87. fe();
    88. return 0;
    89. }

  • 相关阅读:
    Zookeeper
    djangoMTV初探
    配置zookeeper的时候三个节点都启动了但是查询zookeeper的角色的时候显示没启动成功
    【数字图像处理】图像的几何变换
    基于HTML美食餐饮文化项目的设计与实现 HTML+CSS上海美食介绍网页(8页) 大学生美食文化网站制作 简单餐饮文化网页设计成品
    ewebeditor编辑器漏洞
    Spring Boot项目开发实战:项目属性常用配置和使用方法
    记录安装Cytoscape的过程
    linux安装配置zeppein
    设计模式学习(十五):策略模式
  • 原文地址:https://blog.csdn.net/nidayededaye2/article/details/133001332