首页 > 数据库 >MySQL

MySQL

时间:2022-11-13 18:35:21浏览次数:64  
标签:self MySQL db mysql data 数据库

 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

一、安装和登录MySQL

(一)安装MySQL

  1、下载

  下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 F:\MySQL\mysql-8.0.11 下。

  2、配置文件

  • 打开刚刚解压的文件夹F:\MySQL\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息。

[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
 
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=F:\MySQL\mysql-8.0.11
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# datadir=F:\MySQL\\sqldata
# 允许最大连接数
max_connections=20
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

  3、启动数据库

  • 管理员身份打开 cmd 命令行工具,切换目录:

  • 初始化数据库,输入以下指令。

mysqld --initialize --console

  执行完成后,会输出 root 用户的初始默认密码,如:

2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is 
generated for root@localhost: APWCY5ws&hjQ

  APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。

  • 修改密码的两种方式
mysql> alter user  '用户名'@'localhost' identified by '123456'; #方式一
mysql> alter user  USER()  identified by '123456';  #方式二
  •  安装数据库
mysqld install
  • 启动服务
net start mysql

 运行之后,也可通过cmd输入指令services.msc---本地服务设置,来查看MySQL是否运行。MySQL会一直处于运行状态,若使用,直接管理员命令cmd进入即可。

(二)登录MySQL

当 MySQL 服务已经运行时, CD到bin目录,打开命令提示符, 输入以下格式的命名:

mysql -h 主机名 -u 用户名 -p
  • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;

  • -u : 登录的用户名;

  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

  登陆成功之后就会显示以下界面:

二、数据库的操作

(一)查看数据库

语法

show databases;  # 注意后面的;为英文符号

(二)创建数据库

语法:

create database 库名;

(三)删除数据库

语法:

drop database 库名;

(四)选择数据库

语法:

use 库名;

三、数据表的操作

(一)创建数据表

创建MySQL数据表需要以下信息:

  • 表名

  • 表字段名

  • 定义每个表字段类型

create table 表名(
    ID int auto_increment,
    表字段名 类型,
    表字段名 类型,
    表字段名 类型,
    )DEFAULT CHARSET=utf8;

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型

(二)删除数据表

语法:

drop table 表名;
  • 清空表数据

truncate table 表名

truncate只会清除表数据,drop不光清除表数据还要删除表结构。

delete from 表名 where id='1';
delete from 表名;

如果不加where条件,则是删除表所有的数据

(三)插入数据

语法:

insert into 表名(name1,name2,name3) values (data1,data2,data3)

如果数据是字符型,必须使用单引号或者双引号,如:"data"。

(四)查询数据

语法:

select * from 表名;
# 查看表中的所有数据
​
select name from 表名;
# 查看指定数据
​
desc 表名:
# 查看表结构

四、数据库的连接

  • python与MySQL交互

  • 安装第三方模块--pymysql

  • pip install pymysql

(一)pycharm链接MySQL

import pymysql

# 创建链接
db = pymysql.Connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="xh1234",
    db="spider_data"
)
# 创建游标,用于传递python给MySQL的命令和MySQL返回的内容
cursor = db.cursor()

(二)数据库插入操作

# -*- coding:utf-8 -*-
import pymysql

db = pymysql.Connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="填写密码*****",
    db="text"
)
# 创建游标,用于传递python给MySQL的命令和MySQL返回的内容
cursor = db.cursor()
# SQL插入语句
sql = "insert into student(name, age, sex) values ('李四',20,'男')"
# 执行SQL语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()

五、案例示例

(一)创建mysql文件

文件内在原有的库里,创建一个表。

create table caipu(
    id int auto_increment,
    title varchar(100),
    major varchar(100),
    score varchar(100),
    primary key (id)
)default charset =utf8;

desc caipu;

(二)爬取代码加入pymysql语句

1、在基础属性中创建连接数据库。

self.db=pymysql.Connect(
            host="127.0.0.1",
            port=3306,
            user="root",
            passwd="**************",
            db="demo"
        )
        self.cursor = self.db.cursor()

2、在数据解析中将数据循环提交至数据库。

sql = "insert into caipu (title,major,score) values (%s,%s,%s)"
params = [(title,major,score)]
self.cursor.executemany(sql,params)
self.db.commit()

(三)完整代码示例

import requests
from lxml import etree
import pymysql
class DouGUO(object):
    def __init__(self,num):
        self.url = f"https://www.douguo.com/caipu/%E5%AE%B6%E5%B8%B8%E8%8F%9C/0/{num}"
        self.headers = {
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.26"

        }
        self.db=pymysql.Connect(
            host="127.0.0.1",
            port=3306,
            user="root",
            passwd="***********",
            db="demo"
        )
        self.cursor = self.db.cursor()
    '''发起请求并获取数据'''
    def get_data_index(self):
        resp = requests.get(self.url,headers=self.headers)
        if resp.status_code==200:
            return resp.text
        else:
            return None
    """数据解析"""
    def parse_data_index(self,resp):
        # first 创建对象
        html = etree.HTML(resp)
        # 捕获异常
        try:
            data_list = html.xpath('//ul[@class="cook-list"]//li')

            # 单独拿出每一个数据进行解析
            for data in data_list:
                # 精确提取数据
                title = data.xpath("./a/@title")[0]      # 获取标题
                major = data.xpath("./div/p/text()")[0]     # 获取配料
                score = data.xpath("./div/div/span[2]/text()")[0] # 获取评分
                sql = "insert into caipu (title,major,score) values (%s,%s,%s)"
                params = [(title,major,score)]
                self.cursor.executemany(sql,params)
                self.db.commit()

        except IndexError:
            pass

    """实现整个代码的业务逻辑"""
    def run(self):
        resp = self.get_data_index()
        self.parse_data_index(resp)
if __name__ == '__main__':
    for num in range(4):
        spider = DouGUO(num*20)
        spider.run()

结果:

标签:self,MySQL,db,mysql,data,数据库
From: https://www.cnblogs.com/LoLong/p/16886530.html

相关文章

  • Centos7 Mysql 双机热备实现数据库高可用
    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。双机热备的条件是双机mysql版本必须一致。服......
  • MySQL 联合索引、复合索引
    复合索引也叫联合索引,经常使用,遇到问题,可以看下这3篇文章:1. https://www.jb51.net/article/229580.htm2.https://blog.csdn.net/CSDN_LGY_Java/article/details/11159......
  • mysql 索引优化 explain,复合索引,联合索引
    本节是关于MySQL的复合索引相关的知识,两个或更多个列上的索引被称作复合索引,本文主要介绍了mysql联合索引生效的条件及失效的条件,感兴趣的可以了解一下:必须用实例说话:先......
  • mysql-最常用SQL语句大全
    DDL(DataDefinitionLanguage)数据定义语言一、操作库 --创建库createdatabasedb1;--创建库是否存在,不存在则创建createdatabaseifnotexists/ɪɡˈzɪsts......
  • MySQL5.7到OceanBase4.0数据迁移
    一、安装MySQL数据库系统版本:CentOS7.5数据库版本:MySQL5.7.38创建目录mkdir-p/mysql/{data,tmp,binlog,logs}chown-Rmysql:mysql/mysql创建用户groupadd-g......
  • MySQL 源码解读之-语法解析(一)
    MySQL源码解读之-语法解析(一)语法分析是编译过程的一个逻辑截断。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语......
  • flink开发中整合flinksql、kafka、mysql、hbase等问题与结果记录
    在flink开发中,通常会配合flinksql、kafka、mysql、hbase等一块使用,为避免jar包缺失、冲突,现整理一下。一、版本说明flink:1.13.0kafka:2.11mysql:8.0hbase:2.2.3二、fl......
  • Mysql_DQL操作表_排序查询(重点)
    --查询学生信息,按照年龄升序排列;SELECT*fromstuORDERBYage;--查询学生信息,按照数学成绩降序排列;SELECT*fromstuORDERBYmathdesc;--查询学生信息,按照数......
  • mysql5.7 glibc 绿色安装全系linux支持
    wget-O/tmp/mysql-5.7.38.tar.gzhttps://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz?spm=a2c6h.25603864.0.0.42df63afg9UZlHcu......
  • Mysql InnoDB多版本并发控制MVCC
    参考书籍《mysql是怎样运行的》系列文章目录和关于我一丶为什么需要事务隔离级别mysql是一个客户端/服务断软件,对于同一个服务器来说,可以有多个客户端进行连接,每一个客......