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简单应用的更多相关文章

  1. 【mysql】mysql基本操作

    mysql基本操作 1.mysql表复制 mysql 表结构的复制 create table t2 like t2 mysql 表数据的复制 insert into t2 select * from ...

  2. python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查

    python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...

  3. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  4. shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维

    前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相 ...

  5. 如何把mysql的列修改成行显示数据简单实现

    如何把mysql的列修改成行显示数据简单实现 创建测试表: 1: DROP TABLE IF EXISTS `test`; 2: CREATE TABLE `test` ( 3: `year` int ...

  6. MySQL数据库笔记一:简介及简单操作

    一.初识MySQL数据库 1.数据库的概述 <1>数据库:Database 长期存储在计算机内的,有组织的,可共享的数据集合. 存储数据的仓库.(文件) <2>数据库管理系统: ...

  7. SQLserver , MySQL的区别和各自的一些简单方法案列

    SQL Server数据库和MySQL数据库有什么区别呢?今天我们来分析一下这两种数据库的不同之处以及这两种数据库的一些简单用途:SQL Server数据库和MySQL数据库有什么区别: 对于程序开发 ...

  8. Java连接MySQL数据库和Oracle数据库并进行简单的SQL操作的一次尝试

    MySQL和Oracle的JDBC的maven dependency如下: <!-- mysql --> <dependency> <groupId>mysql&l ...

  9. mysql基础操作(二):简单查询DQL

    -- 1.查询所有字段 select * from student; -- 2.查询指定的字段 select id from student; select id, name from student ...

随机推荐

  1. 网页音乐播放器javascript实现,可以显示歌词

    可以显示歌词,但是歌词和歌曲都要实现自己下载下来.只能播放一首歌,歌词还得是lrc格式的代码写的很罗嗦,急切希望帮改改CSS的代码​1.代码:<html >    <head> ...

  2. try-with-resources使用示例

    try (InputStream is = new FileInputStream("test")) { is.read(); ... } catch(Exception e) { ...

  3. 洛谷 P1071 潜伏者 —— 模拟

    题目:https://www.luogu.org/problemnew/show/P1071 按题意模拟即可. 代码如下: #include<iostream> #include<c ...

  4. Mysql数据库的触发器、存储引擎和存储过程

    数据库的触发器 1.触发器 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句): DELETE,INSERT,UPDATE 我们可以监视某表 ...

  5. bzoj 4585: [Apio2016]烟火表演【左偏树】

    参考:https://blog.csdn.net/wxh010910/article/details/55806735 以下课件,可并堆部分写的左偏树 #include<iostream> ...

  6. 洛谷 P2763 试题库问题【最大流】

    s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边.跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题 ...

  7. 组合数的几种球阀 By cellur925

    先来了解几个概念:排列数,组合数. 一.定义及有用的性质 排列数:从n个不同元素中依次取出m个元素排成一列的方案数.P(n,m)=n!/(n-m)! 组合数:从n个不同元素中依次取出m个元素形成一个集 ...

  8. JavaScript 入门案例

    四.  JavaScript 入门案例 在看本节之前,笔者建议您先看 JavaScript 基础篇  https://www.cnblogs.com/IT-LFP/p/10945884.html 1. ...

  9. ES高级查询

    Query Content 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件的匹配有多好 # POST 192.168.100.1 ...

  10. unix shell 解析 1

    ---- shell 1 testdb3:/home/oracle [pprod] >more /home/oracle/utility/macro/tns_log_back_12c.sh #! ...