MySQL从入门到放弃到秃头到顿悟

判断mysql是否安装成功‘

mysqld install

开启mysql

net start mysql

关闭mysql

net stop mysql

用户名密码

mysql -uroot -p

没有密码

在回车

连别人服务器 mysql -uroot -p -hip地址

设置密码

set password = password(‘123’)

选择用户

select user();

创建用户

create user ‘用户名’@‘当前ip’ identified by’234’;

create user ‘用户名’@‘192.168.19.200’

create user ‘用户名’@‘192.168.19.%’

create user ‘用户名’@’%’

给用户授权

立即生效

创建账号并授权

数据库

连接对象

数据库连接对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及如何关闭数据库连接

获取链接对象

connect(dsn,user,password,host,database)

dsn:数据源名称,给出该参数表示数据库依赖

user:用户名

password:密码

host:主机名

database:数据库名称

链接对象的方法

close():关闭数据库连接

commit():提交事务

rollback():回滚事务

cursor():获取游标对象,操作数据库,如执行DML操作,调用存储过程等

事物主要用于处理数据量大,复杂度高的数据。

如果操作的是一系列的动作,比如张三给李四转钱,张三账户金额减少,李四账户金额增加。

这个时候使用事物可以维护数据库的完整性,保证两个操作要么全部执行,要么全部不执行

游标对象

游标对象代表数据库中的游标,用于指示抓取数据 操作的上下文。

主要提供执行SQL语句,调用存储过程,获取查询结果等方法

使用链接对象,获取游标对象

属性:

description:数据列类型和值的描述信息

rowcount:回返结果的行数统计信息

游标方法

方法名说明
callproc()调用存储过程,需要数据库的支持
close()关闭当前游标
execute()执行数据库操作,SQL语句或者数据库命令
executemany()用于批量操作,如批量更新
fetchone()获取查询结果集中的下一条记录
fetchmany()获取结果集的所有记录
fetchall()获取结果集的所有记录
nextset()跳至下一个可用的结果集
arraysize()指定使用fetchmany()获取的行数,默认为1
setinputsizes()设置在调用execute*()方法时分配的内存区域大小
setoutputsize()设置列缓冲区大小,对大数据列如longs和blobs尤其有用

SQLite

嵌入式数据库,数据库就是一个文件

SQLite将整个数据库,包括定义,表,索引以及数据本身,作为一个单独的,可跨平台使用的文件存储在主机中。

Python内置了SQLite3,直接使用,不需要安装

  1. 添加表

    #导入sqlite3
    import sqlite3
    #链接sqlite
    db = sqlite.connect("数据库.db")
    #创建游标
    cursor = db.cursor()
    #添加表
    sql = "create table test"   #这样如果用在sqlite里面不会成功,因为必须要建立表里面的字段
    #正确语句
    sql = "create table test(name varchar(20),age int)"
    #执行sql语句
    cursor.execute(sql)
    #向表中增加列
    sql = "alter table test add sex int"
    cursor.execute(sql)
    #关闭游标
    cursor.close()
    #关闭数据库
    db.close()
    
  2. 修改表名称

    #导入sqlite3
    import sqlite3
    #建立sqlite链接
    conn = sqlite3.connect("数据库.db")
    #创建游标
    cursor = conn.cursor()
    #操作sql语句
    sql = "alter table "
    
  3. 删除表

  4. 查询表

    sqlite3里面有一个sqlite_master这个系统表,里面
    type TEXT,      #类型:table-表,index-索引,view-视图
    name TEXT,      #名称:表名,索引名,视图名
    #查看所有表的sql语句为
    sql = "select name from sqlite_master where type = "table" order by name"
    

Python操作数据库通用流程

创建connection()

获取cursor

使用cursor操作SQL语句,处理数据结果

关闭cursor

关闭connection

MySql

mysql常用命令

  1. 启动Mysql

    net start mysql

  2. mysql登陆

    mysql -u root -p回车输入密码

    密码

链接mysql

#使用pymysql模块
import pymysql
#打开数据库连接
db = pymysql.connect("localhost","root","root","day01")
#创建游标
cursor = db.cursor()
#执行sql语句
sql = "select * from t_info"
cursor.excute(sql)
#获取单条数据
data = cursor.fetchone()
print(data)
#关闭游标
cursor.close()
#关闭数据库
db.close()

MySQL

第一章 初识MySQL

开源关系型数据库管理系统

  1. 数据库基础

    数据库是由一批数据构成有序的集合

    1. 什么是数据库

      数据库的发展:人工管理,文件系统,数据库系统

      数据库的种类:层次式,网络式,关系式

      数据库是一个长期存储在计算机内的,有组织的,有共享的,统一管理的数据集合

      保管数据的仓库,数据管理的方法和技术

      数据库的特点:实现数据共享,减少数据冗余,采用特定的数据类型,具有较高的数据独立性,具有统一的数据控制功能

    2. 关系数据库,表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构

      行被称为记录,组织数据的单位

      列被称为字段,记录的属性,有相应的描述信息。如数据类型,数据宽度

    3. 数据类型

      数据类型决定了数据在计算机中的存储方式,代表不同的信息类型

      表中每一个字段就是某种指定的数据类型

    4. 主键

      用于唯一地标识表中的每一条记录

      可以定义表中的一列或多列为主键

      主键列上不能有两行相同的值,也不能成为空值

  2. 数据库技术构成

    数据库系统由硬件部分和软件部分共同构成,硬件用于存储数据库中的数据

    软件则是DBMS,支持DBMS运行的操作系统,以及多语言进行应用开发的访问技术

    1. 数据库系统

      数据库系统有3个主要的组成部分:

      数据库:用于存储数据的地方

      数据库管理系统:用于管理数据库的软件

      数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充

    2. SQL语言

      结构化查询语言

      对数据库进行查询和修改操作的语言

      数据定义语言DDL:drop,create,alter

      数据操作语言DML:insert,update,delete

      数据查询语言DQL:select

      数据控制语言DCL:grant,revoke,commit,rolllback

    3. 数据库访问接口

      odbc:统一的方式处理所有数据库

      jdbc:java语言编写的类和接口组成

      pdo:php写的数据库接口

      python3使用的是:pymysql

  3. 什么是MySQL

    1. 客户端-服务器软件

      c/s架构。

      服务器是整个应用系统资源的存储与管理红心,多个客户端则各自处理相应的功能,共同实现完整的应用

      客户端传送给数据库服务器,数据库服务器处理后返回给用户,减少网络数据传输量

    2. MySQL版本

      community:社区版,免费,官方不提供支持

      enterprise:企业版,付费

    3. MySQL优势

      运行速度快

      免费

      容易使用

      可以移植

      丰富的接口

      查询语言

      安全和连接

    4. MySQL5.6功能

      子查询最佳化

  4. MySQL工具

  5. 如何学习MySQL

第二章 MySQL的安装与配置

第三章 数据库的基本操作

  1. 创建数据库

    使用create database 数据库名来创建数据库

  2. 删除数据库

    drop database 数据库名

    使用drop database会删除表和数据,而且不能恢复

  3. 修改数据库

  4. 查看数据库

    使用show databases查看所有存在的数据库

    使用use 数据库名来选择数据库

    查看数据库的信息show create database 数据库名\G

  5. 数据库存储引擎

    show engines查看存储引擎

第四章 数据表的基本操作

数据表定义为列的集合

数据表属于数据库,在操作表之前应该使用use 数据库名指定操作是哪个数据库中进行

  1. 创建数据表

    1. 创建表的语法形式

      create table 表名(
      字段名 数据类型 约束条件 默认值
      )
      --创建员工表tb_emp
      create table tb_emp(
      id int unsinged primary key not null,
      name varchar(32),
      deptld int,
      salary float
      )charset = utf8
      
    2. 使用主键约束

      表中一列或多列的组合

      主键约束要求主键列的数据唯一,并且不允许为空

      主键能够唯一地表示表中的一条记录

      可以结合外键来定义不同数据表之间的关系

      加快数据库查询的速度

      1. 单字段主键

        ①定义列的同时定义主键②定义完所有列之后定义主键

        字段名 数据类型 primary key

        #定义数据表tb_emp2,主键为id
        create table tb_emp2(
            id int primary key,
            name varchar(32)
        )charset = utf8
        
      2. 多字段联合主键

        主键由多个字段联合组成

        #定义数据表tb_emp4,设置name,deptld联合主键
        create table tb_emp4(
            id int,
            name varchar(32),
            deptld int,
            primary key(name,deptld)
        )
        
      3. 使用外键约束

        外键用来在两个表的数据之间建立连接

        一个表可以有一个或多个外键

        外键对应的是参照完整性,一个表的外键可以为空值

        若不为空值,则每一个外键值必须等于另一个表中主键的某个值

        外键保证:

        ​ 表中的一个字段,可以不是本表的主键,但对应另外一个表的主键

        ​ 外键的主要作用是保证数据引用的完整性

        ​ 定义外键后,不允许删除再另一个表中具有关联关系的行

        ​ 外链的作用是保持数据的一致性,完整性

        主表:对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表

        从表:对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表

        创建外键的语法:

        constraint 外键名 foreign key(字段名) 
        references 主表名(主键列) 
        #定义数据包tb_emp5,创建外键约束
        create table tb_emp5(
            id int primary key,
            name varchar(32),
            deptid int
            constraint deptid_out foreign key(deptid)
            references tb_emp5(id)
        )
        

        字表的外键必须关联父表的主键,且关联字段的数据类型必须匹配

      4. 使用非空约束

        非空约束指字段的值不能为空

        对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错

        语法:

        字段名 数据类型 not null
        
        
      5. 使用唯一性约束

        唯一性约束要求该列唯一,允许为空,但只能出现一个空值

        唯一约束可以确保一列或者几列不出现重复值

        语法:

        字段名 数据类型 unique
        #定义数据表,指定部门名称唯一
        create table tb_emp6(
            id int primary key not null,
            name varchar(32),
            dname varchar(32) unique
        )charset = utf8
        #定义所有列之后指定唯一约束
        constraint 约束名 unique(字段名)
        
      6. 使用默认约束

        默认约束指定某列的默认值

        字段名 数据类型 default 默认值
        #默认性别不写为男同学
        create table tb_emp7(
            id int primary key not null,
            name varchar(32),
            sex char(1) default "男",
            constraint names unique(name)
        )charset = utf8
        
      7. 设置表的属性自动增加

        一个表只能有一个字段使用auto_increment

        字段名 数据类型 auto_increment
        create table tb_emp(
        	id int primary key auto_increment,
            name varchar(32) default "帅帅"
        )charset = utf8
        
  2. 查看数据表结构

    1. describe/desc

      查看表的字段信息,包括字段名,字段数据类型,是否为主键,是否有默认值

      语法;

      describe 表名
      desc 表名
      
    2. show create table 表名\G

      查看创建表时的create table语句

      还可以查看存储引擎和字符编码

      如果不加\G,显示的结果可能非常混乱,加上之后,显示的结果更加直观,易于查看

  3. 修改数据表

    修改表中已经存在的数据表的解构

    1. 修改表名

      alter table 旧表名 rename to 新表名
      
    2. 修改字段的数据类型

      alter table 表名 modify 字段名 数据类型
      
    3. 修改字段名

      alter table 表名 change 旧字段名 新字段名 新数据类型
      
    4. 添加字段

      alter table 表名 add 新字段名 数据类型
      #想要添加的字段在某一列,只需要在add最后写 first
      比如加载第一列
      alter table 表名 add 新字段名 数据类型 first
      #表的指定列之后添加一个字段
      alter table 表名 add 新字段名 数据类型 after 要添加的字段后面
      
    5. 删除字段

      alter table 表名 drop 字段名
      
    6. 修改字段的排列位置

      alter table 表名 modify 字段1 数据类型 first|after 字段2
      
    7. 更改表的存储引擎

    8. 删除键的外键约束

      外键一旦删除,就会解除主表和从表之间的关联关系

      alter table 表名 drop foreign key 外键约束名
      
  4. 删除数据表

    删除数据表会将表和表中的数据都会被删除

    删除表之前先做备份

    1. 删除没有被关联的表
    2. 删除被其他表关联的主表

每个表中都要有一个主键吗?

并不是每一个表中都需要主键,一般在多个表之间进行连接操作时才需要用到主键

因此并需要为每个表建立主键,而且有些情况最好不要使用主键

第五章 数据类型和运算符

  1. MySQL数据类型介绍
    1. 整数类型
    2. 浮点类型和定点数类型
    3. 日期与时间类型
    4. 字符串类型
    5. 二进制类型
  2. 如何选择数据类型
  3. 运算符介绍
    1. 运算符概述
    2. 算术运算符
    3. 比较运算符
    4. 逻辑运算符
    5. 位运算符
    6. 运算符的优先级
  4. 运算符的使用

第六章 MySQL函数

  1. MySQL函数简介
  2. 数学函数
  3. 字符串函数
  4. 日期和时间函数
  5. 条件判断函数
  6. 系统信息函数
  7. 加密函数
  8. 其他函数

第七章 查询数据

  1. 基本查询语句
  2. 单表查询
  3. 使用集合函数查询
  4. 连接查询
  5. 子查询
  6. 合并查询结果
  7. 为表和字段取别名
  8. 使用正则表达式查询

第八章 插入,更新与删除数据

  1. 插入数据
  2. 更新数据
  3. 删除数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值