最近在GitHub上下载了一个QT图书管理项目,主要用于学习Mysql数据库的使用,在此分享以下学习笔记。
SQL 包含以下 4 部分:
1)数据定义语言(Data Definition Language,DDL)
用来创建或删除数据库以及表等对象,主要包含以下几种命令:
- DROP:删除数据库和表等对象
- CREATE:创建数据库和表等对象
- ALTER:修改数据库和表等对象的结构
2)数据操作语言(Data Manipulation Language,DML)
用来变更表中的记录,主要包含以下几种命令:
- SELECT:查询表中的数据
- INSERT:向表中插入新数据
- UPDATE:更新表中的数据
- DELETE:删除表中的数据
3)数据查询语言(Data Query Language,DQL)
用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。
4)数据控制语言(Data Control Language,DCL)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:
- GRANT:赋予用户操作权限
- REVOKE:取消用户的操作权限
- COMMIT:确认对数据库中的数据进行的变更
- ROLLBACK:取消对数据库中的数据进行的变更
QT连接Mysql的代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //MySQL驱动
db.setDatabaseName("BookShop"); //数据库名
db.setHostName("localhost"); //数据库所在主机IP,此处数据库保存在本地
db.setPort(3306); //端口号
db.setUserName("root"); //登陆用户名
db.setPassword("123456"); //登陆密码
if(!db.open())
{
qDebug() << "open fail\n" << db.lastError().driverText() << "\n";
return false;
}
上面对于数据库的配置可以参考Mysql客户端的配置
QT与Mysql链接成功后,即可使用Mysql语句访问数据库了。
Mysql的基本增删查改
添加一条记录:新增会员信息
insert into VIP(Name, Sex, Birthday, Telephone, Email, Score, Level) values(‘张三’, ‘男’, str_to_date('2000/1/1', '%Y/%m/%d'), '123456789000', '123@qq.com', 50, 1)
删除一条记录:删除id = 5的会员
delete from VIP where id = 5
查询一条记录:从表VIP中查询id = 1的会员信息
select * from VIP where id = 1
从表VIP中查询会员名字,并且以id号排序
select name from VIP order by id
修改一条记录:更新ISBN = '978-7-5399-7181-0'的书籍的库存量为50
update Book set Storage = 50 where ISBN = '978-7-5399-7181-0'
模糊查询:实现按书名模糊匹配
select * from book where Name Like '%天才%'
分组:查询自日期1990-1至2020-1的月收入
select Year,Month,Sum(Income) from daily_revenue group by str_to_date(concat(Year,'-',Month),'%Y-%m') having str_to_date(concat(Year,'-',Month),'%Y-%m') >= str_to_date('1900-1','%Y-%m') and str_to_date(concat(Year,'-',Month),'%Y-%m') <= str_to_date('2020-1','%Y-%m')