Python63_MySQL基础

前奏:数据存储

传统记录数据的缺点

  1. 不易保存
  2. 备份困难
  3. 查找不便

现代化手段:文件

  1. 使用简单,例如Python中的open可以打开文件,用red/write对文件进行读写,close关闭文件
  2. 对于数据容量较大的数据,不能够很好的满足,而且性能较差
  3. 不易扩展

现代化手段:数据库

  1. 持久化存储
  2. 读写速度极高
  3. 保证数据的有效性
  4. 对程序支持性非常好,容易扩展

数据库相关简介

数据库里面,一列叫做一个字段,一行叫做一个记录

如果能够唯一标记某个字段,那么这就是主键

MySQL

MySQL属于关系型数据库

关系型数据库:一张表和另一张表有一定的关联

关系型数据库核心元素:

  1. 数据行(记录)
  2. 数据列(字段)
  3. 数据表(数据行的集合)
  4. 数据库(数据表的集合)

RDBMS

Relational Database System:关系型数据库管理系统,就是一套软件

  • 当前主要使用两种类型的数据库:关系型数据库、非关系型数据库
  • 所谓的关系型数据库RBDMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
  • 关系型数据库的主要产品:
    1. oracle:在以前的大型项目中使用,银行,电信等项目
    2. mysql:web时代使用最广泛的关系型数据库
    3. ms sql server:在微软的项目中使用
    4. sqlite:轻量级数据库,主要应用在移动平台

SQL

Structured Query Language:结构化查询语言

SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle、sql server、sqlite等等所有的关系型数据库

  • SQL语句主要分为:

    1. DQL:数据查询语言,用于对数据进行查询,如select
    2. DML:数据操作语言,对数据进行增加、修改、删除,如insert、update、delete
    3. TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
    4. DCL:数据控制语言,进行授权与权限回收,如grant、revoke
    5. DDL:数据定义语言,进行数据库、表的管理等,如creat、drop
    6. CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
  • 对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其他语言如TPL、DCL、DDL了解即可

  • SQL是一门特殊的语言,专门用来操作关系数据库

  • 不区分大小写

MySQL简介

  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品

特点

  • 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
  • 支持多种操作系统
  • 为多种编程语言提供了API
  • 支持多线程,充分利用CPU资源
  • 优化的SQL查询算法,有效地提高查询速度
    ……

Ubuntu中MySQL的安装及配置

Ubuntu中MySQL的安装

sudo netstat -tap | grep mysql # 查看是否安装mysql
sudo apt-get install mysql-server mysql-client # 安装mysql的服务端和客户端

在这里插入图片描述

服务器

  • 服务器端用于接收客户端的请求、执行sql语句、管理数据库
  • 服务器端一般以服务方式管理,名称为mysql
  • 启动服务:sudo service mysql start

  • 查看进程中是否存在mysql服务:ps -aux | grep mysql

  • 停止服务:sudo service mysql stop

  • 重启服务:sudo service mysql restart

配置

  • 配置文件目录为:/etc/mysql/mysql.cnf


    在这里插入图片描述

    - 进入conf.d目录,打开mysql.cnf,发现并没有配置

  • 进入mysql.conf.d目录,打开mysqld.cnf,可以看到配置项
root@ubuntu:/etc/mysql/mysql.conf.d# cat mysqld.cnf
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size     = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options  = BACKUP
#max_connections        = 100
#table_open_cache       = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit   = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#slow_query_log     = 1
#slow_query_log_file    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id      = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size   = 100M
#binlog_do_db       = include_database_name
#binlog_ignore_db   = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
  • 主要配置项如下:
  1. bind-address表示服务器绑定的ip,默认为127.0.0.1
  2. port表示端口,默认为3306
  3. dtaddir表示数据目录,默认为/var/lib/mysql
  4. general_log_file表示普通日志,默认为/var/log/mysql/mysql.log
  5. log_error表示错误日志,默认为/var/log/mysql/error.log

注意:一旦修改了配置,就需要restart服务

客户端

  • 客户端为开发人员与dba使用,通过socket方式与服务器端通信,常用的有navicat、命令行mysql
  • 详细连接的命令可以查看帮助文档:mysql --help
  • 最基本的连接命令如下:mysql -u root -p mysql,u后面的为用户名,p后面的为密码
在这里插入图片描述

你可能感兴趣的:(Python63_MySQL基础)