MENU

分类 Linux运维 下的文章

《数据库系统概述》期末复习

天津理工大学 2016~2017 第一学期期末考试,以下内容根据复习提纲由“浩瀚”制作,欢迎转载,请注明出处。

以下为PDF文档,可能需要一点加载时间,请稍候。

注:翻页及缩放按钮在PDF下方。

[pdf-embedder url="https://seahi.me/wp-content/uploads/2017/01/database_exam.pdf"]

Qt 5.6 连接 MySQL 实例

这个小程序基于Qt实现了对 MySQL/MariaDB 的连接与基础的增删改查操作,使用 QSqlTableModel 以表格的方式对数据进行展示,使用 QItemDelegate 自定义对数据的编辑器,如限制用户在填写性别时的选项。

我的开发环境为 openSUSE Leap 42.2, Qt 5.6.1,组件都是 zypper in 直接安装的,没有从Qt官网下载

软件运行环境: MySQL/MariaD 用户名/密码/数据库:dbsql 数据表:Student 该部分配置在 mainwindow.cpp 中第16到第20行

所有源代码在文章尾部可以下载

软件运行截图如下,图中数据信息为随机设置:

screenshot_20161112_155611

数据库连接的核心代码如下:

#ifndef CONNSQL_H
#define CONNSQL_H

#include <QtSql/QSqlDatabase>
#include <QDebug>
#include <QString>

class ConnSQL
{
private:
    QSqlDatabase db;
public:
    ConnSQL(QString, QString, QString, QString);
};

#endif // CONNSQL_H
#include "connsql.h"
#include <QMessageBox>


ConnSQL::ConnSQL(QString host, QString dbName, QString user, QString passwd)
{
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(host);
    db.setDatabaseName(dbName);
    db.setUserName(user);
    db.setPassword(passwd);

    if(db.open()) {
        qDebug()<<"Success to connect to mysql!";
//        QMessageBox::information(this, "Connected",
//                                 "Success to connect to mysql!");
    } else {
        qDebug()<<"Failed to connect to mysql!";
    }
}

调用ConnSQL类的代码:

//建立数据库连接
ConnSQL *conn = new ConnSQL(QString::fromStdString("localhost"),
               QString::fromStdString("dbsql"),
               QString::fromStdString("dbsql"),
               QString::fromStdString("dbsql"));

[url href=https://seahi.me/wp-content/uploads/2016/11/qtMysql.zip]下载源码[/url]

MySQL支持的数据类型

数值类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

screenshot_20161102_185250

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

screenshot_20161102_185307

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

screenshot_20161102_185324

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。


转载自:菜鸟教程

原文地址:http://www.runoob.com/mysql/mysql-data-types.html

MySQL导入错误#1273 - Unknown collation: 'utf8_general_ci'的解决方法

问题现象:

今天迁移网站数据的时候尝试用phpmyadmin,发现导入数据库时提示:

#1273 - Unknown collation: 'utf8_general_ci'

这个问题是因为被导入的MySQL版本太低,现在的数据库版本是5.6,被导入的还是5.1

解决方法:

找一款专业的文本/代码编辑器打开.sql 文件,Atom之类的软件就行

  1. 将utf8_general_ci 批量替换为utf8_general_ci
  2. 将utf8 批量替换成utf8 。

编码替换之后就可以正常导入了