Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
MySql基本操作
-- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式
CREATE DATABASE
IF NOT EXISTS
db_name
CHARACTER SET UTF8
COLLATE utf8_general_ci;
-- 显示数据库语句
SHOW DATABASES;
-- 查看数据库的创建方式,主要是字符类型
SHOW CREATE DATABASE db_name;
-- 修改数据库的属性信息,比如修改字符集为 GBK
ALTER DATABASE db_name CHARACTER SET GBK;
-- 当一个数据库已存在时,对数据库进行删除操作
DROP DATABASE IF EXISTS db_name;
-- 使用一个数据库,设置当前指令应用的数据库
USE db_name;
-- 创建一张表的指令 CREATE TABLE table_name( column_name1 type1, column_name1 type1, column_name1 type1 )CHARACTER SET UTF8 COLLATE utf8_general_ci;
实例
CREATE TABLE SCHOOL_TABLE(
ID INT(10),
NAME CHAR(10)
)CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
-- 查看指定表的内容
DESC table_name;
-- 指定数据库内的所有表
SHOW TABLES;
-- 显示数据表创建语句:
SHOW CREATE TABLE table_name;
-- 在表 table_name 中添加了类型为 new_type 一列
newcolumn_name [FIRST | AFTER column_name]
ALTER TABLE table_name ADD newcolumn_name new_type FIRST;
实例
ALTER TABLE school_table ADD num INT FIRST;
-- 仅修改某一张表指定列的类型信息
ALTER TABLE table_name MODIFY column_name new_type;
实例
ALTER TABLE school_table MODIFY ID CHAR
-- 修改某一张表指定列的列名和类型
ALTER TABLE table_name CHANGE column_name new_column_name new_type;
实例
ALTER TABLE SCHOOL_TABLE CHANGE NUM ABC CHAR;
-- 删除指定表的指定列
ALTER TABLE table_name DROP column_name;
-- 如何删除一张表
DROP TABLE table_name;
-- 向指定表的[所有]列中添加一条数据
INSERT INTO stu_info VALUE(1, "小明", "男", 1, now());
-- 向指定表的[指定]列中添加一条数据
INSERT INTO stu_info(name, class) VALUE("小红", 2);
-- 向指定表的所有列添加多条数据
INSERT INTO stu_info VALUES (1, "小明", '男', 1, "2010-06-07 10:54:08"), (2, "小红", '女', 2, "2011-06-07 10:54:08"), (3, "小黄", '女', 3, "2012-06-07 10:54:08"), (4, "小绿", '男', 5, "2013-06-07 10:54:08"), (5, "小清", '女', 3, "2014-06-07 10:54:08"), (6, "小紫", '男', 2, "2015-06-07 10:54:08"), (7, "小白", '女', 2, "2016-06-07 10:54:08"), (8, "小黑", '女', 1, "2017-06-07 10:54:08");
-- 无条件修改表内的所有数据
UPDATE stu_info SET sex='男';
-- 带条件的修改指定的数据
UPDATE stu_info SET sex='男' WHERE name="小清";
-- 带条件的删除
DELETE FROM stu_info WHERE name="小紫";
-- 无条件的删除
DELETE FROM stu_info;
-- 为指定表的指定列添加一个约束类型
ALTER TABLE stu_info MODIFY id int PRIMARY KEY;
-- 使用约束创建一张表
CREATE TABLE stu_info( id int PRIMARY KEY AUTO_INCREMENT, name varchar(20) UNIQUE KEY, sex ENUM('男', '女'), classid INT NOT NULL, score INT default 0, start_data DATETIME DEFAULT now() )CHARACTER SET UTF8 COLLATE utf8_general_ci;
-- 创建表2,保存班级的信息
CREATE TABLE class_info( id int PRIMARY KEY AUTO_INCREMENT, name varchar(20) NOT NULL )CHARACTER SET UTF8 COLLATE utf8_general_ci;
-- 添加外键, classid 保存的值必须是一个已存在的 class_info(id) 值
ALTER TABLE stu_info ADD FOREIGN KEY stu_info(classid) REFERENCES class_info(id);
-- 无条件查找指定表的所有内容
SELECT * FROM stu_info;
-- 无条件查找指定表的指定列内容
SELECT name, sex FROM stu_info;
-- 对查询到的结果进行去重
SELECT DISTINCT classid FROM stu_info;
-- 可以在查询的数值上直接执行算术运算
SELECT name, score*0.6 FROM stu_info;
-- 对显示出来的列取别名 as 是可选的
SELECT name as 姓名, score*0.6 as 成绩 FROM stu_info;
-- 使用关系运算符进行带条件的查询
SELECT * FROM stu_info WHERE classid > 1;
-- 使用 IN 关键字筛选结果为 set 中任何值的字段
SELECT * FROM stu_info WHERE classid IN (1, 3, 5);
-- 使用 BETWEEN AND 查询位于某一个区间内的数据
SELECT * FROM stu_info WHERE classid BETWEEN 3 AND 5;
-- 使用 LIKE 进行模糊查询 %(0或n个任意字符) _(1个任意字符)
SELECT * FROM stu_info WHERE name LIKE "%g";
-- 使用逻辑运算符进行多条语句的判断(and or not)
SELECT * FROM stu_info WHERE name LIKE "%g" OR sex="女";
-- 对查询到的结果进行排序 DESC(降序) ASC(升序)
SELECT * FROM stu_info ORDER BY start_data ASC;
-- 计算查询到的记录的总数
SELECT count(*) FROM stu_info;
-- 对结果(数值类型)进行平均值的计算
SELECT AVG(score) FROM stu_info;
-- 对结果(数值类型)进行求和计算
SELECT SUM(score) FROM stu_info;
-- 使用分组查询查询每一个班一共有多少个人
SELECT classid 班级 ,count(*) 人数 from stu_info GROUP BY classid
-- 使用 HAVING 对分组查询的数据进行筛选
SELECT classid 班级 ,count(*) 人数 from stu_info GROUP BY classid HAVING classid IN (1,3);
-- 通过 LIMIT n, m 选择输出第n个记录开始的m个记录 (从0开始后的3个,不是0到3.)
SELECT * FROM stu_info ORDER BY score DESC LIMIT 0, 3
-- 多表查询,查询到多张表的数据并组合成一个记录(会自动组合起来成不是想要的)
SELECT * FROM stu_info, class_info;
-- 多表查询(内连接)。基本的条件判断
SELECT * FROM stu_info, class_info WHERE stu_info.classid = class_info.id;
-- 使用外连接(left join\right join)已某一张表为基准查询所有的记录
SELECT * FROM stu_info right join class_info on stu_info.classid = class_info.id;
-- 使用子查询查询所有有女生的班级
SELECT DISTINCT * FROM class_info WHEREid IN ( SELECT classid FROM stu_info WHERE sex = "女" );
-- 子查询,如果任何一个班的同学分数大于80,输出总的前三名
SELECT * FROM stu_info, class_info WHERE EXISTS( SELECT score FROM stu_info WHERE score > 80 ) AND stu_info.classid = class_info.id ORDER BY score DESC LIMIT 0, 3
-- 输出所有和任何一个女生成绩的相同的男生的信息 ANY(满足任意条件)
SELECT * FROM stu_info, class_info WHERE score=ANY ( -- 女生的成绩 SELECT score FROM stu_info WHERE sex="女" )AND stu_info.classid = class_info.id AND sex='男';
-- 输出成绩高于所有男生的女生的信息 ALL(满足所有的条件)
SELECT * FROM stu_info, class_info WHERE stu_info.score >ALL ( SELECT score FROM stu_info WHERE sex="男" )AND stu_info.classid = class_info.id AND sex="女";
-- 数据库备份
mysqldump -u root -p tankwar_net > d:/tankwar_net_10_15.sql
-- 数据库还原 一
mysqldump -u root -p tankwar_net < d:/tankwar_net_10_15.sql
-- 数据库还原 二
mysql> use tankwar_net Database changed mysql> source d:/tankwar_net_10_15.sql;
C++ MySql简单应用
1.在Mysql安装目录下把【include文件夹、libmysql.dll、libmysql.lib】3个拷贝到项目文件
#include <iostream>
using namespace std;
// 1. 包含 mysql 需要用到的头文件,应用程序的环境要和mysql一致
#include "include/mysql.h"
// 2. 链接到 mysql 提供的 lib 文件
#pragma comment(lib, "libmysql.lib")
// 用于执行没有返回值的 sql 指令
void exec(MYSQL & mysql, LPCSTR sql)
{
// 1. 使用函数执行 sql 指令
mysql_query(&mysql, sql);
// 2. 对结果进行判断
if (mysql_errno(&mysql) != )
{
// 使用 mysql_error 输出错误的原因
printf("error: %s\n", mysql_error(&mysql));
system("pause"); ExitProcess();
}
}
// 用于执行有返回值的 sql 指令
void select(MYSQL& mysql, LPCSTR sql)
{
// 1. 使用函数执行 sql 指令
mysql_query(&mysql, sql);
// 2. 对结果进行判断
if (mysql_errno(&mysql) != )
{
// 使用 mysql_error 输出错误的原因
printf("error: %s\n", mysql_error(&mysql));
system("pause"); ExitProcess();
}
// 3. 获取 sql 指令的执行结果
MYSQL_RES* mysql_res = mysql_use_result(&mysql);
// 4. 获取查询到的结果的列数
int count = mysql_num_fields(mysql_res);
// 5. 通过获取到的列数便利获取所有的列名
MYSQL_FIELD* mysql_field = mysql_fetch_fields(mysql_res);
for (int i = ; i < count; ++i)
{
// 排除掉空指针的情况
if (mysql_field[i].name == nullptr)
printf("none\t");
else
printf("%s\t", mysql_field[i].name);
}
printf("\n");
// 6. 循环输出每一行的信息
MYSQL_ROW mysql_row = { };
while (mysql_row = mysql_fetch_row(mysql_res))
{
// 根据列数输出每一行的信息
for (int i = ; i < count; ++i)
{
// 排除掉空指针的情况
if (mysql_row[i] == nullptr)
printf("none\t");
else
printf(u8"%s\t", mysql_row[i]);
}
printf("\n");
}
}
int main(int argc, char* argv[])
{
// 3. 初始化 mysql 库,需要提供命令行参数
mysql_library_init(argc, argv, nullptr);
// 4. 初始化 mysql 对象,之后对数据库的操作都需要传入
MYSQL mysql = { };
mysql_init(&mysql);
// 5. 连接到数据库
mysql_real_connect(&mysql, "127.0.0.1", "root",
"", "school_table", , nullptr, );
// 6. 使用 mysql_errno 判断数据库是否连接成功
if (mysql_errno(&mysql) != )
{
// 使用 mysql_error 输出错误的原因
printf("error: %s\n", mysql_error(&mysql));
system("pause"); return ;
}
// 7. 执行数据的添加操作
exec(mysql, "INSERT INTO class_info(name) VALUE('123');");
// 8. 执行数据的查询操作
select(mysql, "select * from stu_info;");
// 9. 清理工作
mysql_library_end();
return ;
}
Python MySql简单应用
# encoding: utf8
import pymysql
# mysql 类,用于操作数据库
class Mysql:
# 构造函数,用于获取连接对象和游标
def __init__(self):
try:
# .获取连接对象
self.connect = pymysql.connect(host="127.0.0.1", port=,
user="root", password="", db="chat_table")
# .获取游标对象
self.cursor = self.connect.cursor()
except Exception as info:
print(info)
# 实例方法,用于执行没有返回值的语句
def insert(self, sql):
try:
# 执行 mysql 指令
self.cursor.execute(sql)
# 必须要提交数据,否则不会影响数据库
self.connect.commit()
except Exception as info:
# 回滚操作
self.connect.rollback()
# 输出错误信息
print(info)
# 实例方法,用于执行有返回值的语句
def select(self, sql):
try:
# 执行 mysql 指令
self.cursor.execute(sql)
# 获取到总的列数
count = self.cursor.rowcount
# 获取查询到的所有的数据
return count, self.cursor.fetchall()
except Exception as info:
# 回滚操作
self.connect.rollback()
# 输出错误信息
print(info)
if __name__ == "__main__":
mysql = Mysql()
# 返回的是一个元组,保存的是由每一行的信息组成的一个元组
# 想要获取第一行的第一列需要使用 rows[][]
print(mysql.select("select * from chat_user;"))
# user = "xiaogang"
# pswd = "xiaogangdemima"
# mysql.insert("INSERT INTO chat_user(user_name, user_pswd) VALUE('%s', md5('%s'))" % (user, pswd))
Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用的更多相关文章
- 【mysql】mysql基本操作
mysql基本操作 1.mysql表复制 mysql 表结构的复制 create table t2 like t2 mysql 表数据的复制 insert into t2 select * from ...
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维
前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相 ...
- 如何把mysql的列修改成行显示数据简单实现
如何把mysql的列修改成行显示数据简单实现 创建测试表: 1: DROP TABLE IF EXISTS `test`; 2: CREATE TABLE `test` ( 3: `year` int ...
- MySQL数据库笔记一:简介及简单操作
一.初识MySQL数据库 1.数据库的概述 <1>数据库:Database 长期存储在计算机内的,有组织的,可共享的数据集合. 存储数据的仓库.(文件) <2>数据库管理系统: ...
- SQLserver , MySQL的区别和各自的一些简单方法案列
SQL Server数据库和MySQL数据库有什么区别呢?今天我们来分析一下这两种数据库的不同之处以及这两种数据库的一些简单用途:SQL Server数据库和MySQL数据库有什么区别: 对于程序开发 ...
- Java连接MySQL数据库和Oracle数据库并进行简单的SQL操作的一次尝试
MySQL和Oracle的JDBC的maven dependency如下: <!-- mysql --> <dependency> <groupId>mysql&l ...
- mysql基础操作(二):简单查询DQL
-- 1.查询所有字段 select * from student; -- 2.查询指定的字段 select id from student; select id, name from student ...
随机推荐
- HDU1166 敌兵布阵 —— 线段树单点修改
题目链接:https://vjudge.net/problem/HDU-1166 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布 ...
- POJ1417 True Liars —— 并查集 + DP
题目链接:http://poj.org/problem?id=1417 True Liars Time Limit: 1000MS Memory Limit: 10000K Total Submi ...
- Magic Grid ComboBox JQuery 版
在MagicCombo组件中嵌入Grid,以支持分页查找和跨页选取 1. 2. [代码][JavaScript]单选示例代码 <script type="text/jav ...
- Synchronized的使用和注意事项
synchronized: 1.取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁: 2.多个线程访问的必须是同一个对象. 3.当一个线程执行的代码出现异常时,其所持有的锁会自动释放 4.A线程 ...
- 【BZOJ 2456】 mode
[题目链接] 点击打开链接 [算法] 此题初看是大水题,只需调用std :: sort即可 但是,n最大500000,显然会超时 而且,内存限制1MB,我们连数组也开不了! 那怎么做呢 ? 我们发现, ...
- mybatis基础学习5---懒加载和缓存
1:懒加载 1)在主配置文件设置(要放在配置文件最前面) 1 <!-- 延迟加载配置,两个都必须同时有 --> <settings> 3 <!-- lazyLoading ...
- 机器学习--DIY笔记与感悟--①K-临近算法
##“计算机出身要紧跟潮流” 机器学习作为如今发展的趋势需要被我们所掌握.而今我也需要开始learn机器学习,并将之后的所作所想记录在此. 今天我开始第一课--K临近算法. 一.k-临近的基础概念理解 ...
- Elasticsearch的功能、使用场景以及特点
1.Elasticsearch的功能,干什么的 2.Elasticsearch的适用场景,能在什么地方发挥作用 3.Elasticsearch的特点,跟其他类似的东西不同的地方在哪里 1.Elasti ...
- Java中关键字continue、break和return的区别
Java中关键字continue.break和return的区别: continue:跳出本次循环继续下一次循环 break: 跳出循环体,继续执行循环外的函数体 return: 跳出整个函数 ...
- 《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO
同步设备IO与异步设备IO之异步IO介绍 设备IO与cpu速度甚至是内存访问相比较都是比较慢的,而且更不可预测.虽然如此,通过使用异步设备IO我们仍然能够创造出更高效的程序. 同步IO时,发出IO请求 ...