python_MySQL数据库

MySQL数据库的特点:
    1、是关系型数据库
        关系型数据库的特点
            1、数据是以行和列的的形式存储的
            2、这一系列的行和列称为表
            3、表中的每一行叫做记录
            4、表中的每一列叫做字段
            5、表和表之间的逻辑关联叫做关系
            6、关系型数据库的核心内容是:关系 即二维表
        示例:
            1、关系型数据库存储
                表1:学生信息表
                    姓名        年龄        班级
                     aa         20        1712
                     bb         25        1713
                表2:班级信息表
                    班级        班主任
                    1712     曹操    
                    1713     刘备
                说明:要找到学生aa的班主任是谁,需要通过班级字段来找到班主任
            2、非关系型数据库存储(是以键值对的形式存储的)
                {姓名:“aa”,年龄:20,班级:1712,班主任:“曹操”}
            二者之间的比较:
                非关系行数据的性能比较高(查找数据的速度)但是会造成数据的冗余

    2、跨平台
        可以在Unix、Linux、Windows上运行MySQL服务
    3、支持多种语言编程语言
    4、是基于硬盘的读写
MySQL的安装:
    1、Linux系统下安装MySQL服务
        1、安装服务端:sudo apt-get install mysql-server
        2、安装客户端:sudo apt-get install mysql-client
        3、初始的用户名和密码在/etc/mysql/debian.cnf文件中,使用 cd /etc/mysql/ 进去目录,subl debian.cnf 打开查看
启动和连接MySQL服务
    1、服务端启动
        1、查看MySQL服务的状态:sudo /etc/init.d/mysql status
        2、启动MySQL服务:sudo /etc/init.d/mysql start
        3、停止MySQL服务:sudo /etc/init.d/mysql stop
        4、重启MySQL服务:sudo /etc/init.d/mysql restart
    2、客户端链接
        1、命令格式:mysql -h主机名 -u用户名 -p密码(-h和-u后面可以添加空格,-p后面不可以)
            mysql -h localhost -u debian-sys-maint -pLo0r79JmxvMFNtA
        2、本地连接可以省略 -h 选项
            mysql  -u debian-sys-maint -pLo0r79JmxvMFNtA
        3、断开与服务端的连接:exit  quit   \q
基本的SQL命令:
    1、SQL命令的使用规则
        1、每条命令必须以分号(;)结尾(说明中文分号无效)
        2、SQL命令不区分字母大小写
        3、使用\c终止命令的执行
    2、库的管理(指定字符集)
        1、库的基本操作
            1、查看已有的库:show databases;
                (有四个默认的库,不要修改或删除:information_schema,mysql,performance_schema,sys)
            2、创建库:create databases 库名 default charset=utf8;
            3、查看创建库的语句:show create databases 库名;
                ( CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */)
            4、查看当前所在库:select database();
            5、切换库:use 库名;
            6、查看库中已有的表:show tables;(如果当前的库为NULL则会报错:ERROR 1046 (3D000): No database selected)
            7、删除库:drop database 库名;
        2、库的命名规则
            1、可以使用数字、字母、_,但是不能是纯数字
            2、库名区分字母大小写
            3、库名具有唯一性(不能重复)
            4、不能使用特殊字符和mysql关键字
    3、表的管理:
        1、表的基本操作:
            1、创建表:
                create table 表名(
                    字段名1 数据类型,
                    字段名2 数据类型,
                    ....
                )
            2、查看创建表的语句(字符集):show create table 表名;
            3、查看表结构:desc 表名;
            4、删除表:drop table 表名;
        2、注意:
            1、所有的数据都是以文件的形式存储在数据库目录下
            2、数据库目录:/var/lib/mysql
    4、表记录的管理:
        1、在表中插入记录
            1、insert into 表名 values(值1),(值2),...  说明值就是一条记录,必须与字段相匹配
        2、查看表记录
            1、select * from 表名;*号代表所有的字段
            2、select 字段名1,字段名2,... from 表名;
    5、如何更改默认字符集:
        1、方法:通过更改Mysql的配置文件实现
        2、步骤:
            1、获取root权限:sudo -i
            2、修改mysql配置文件:vi /etc/mysql/mysql.conf.d/mysqld.cnf
                1、点击a键进入编辑状态
                2、在[mysqld]下 插入character_set_server = utf8
                3、点击Esc键退出编辑状态
                4、点击Shift + :
                4、输入wq命令写入并退出 (输入q!退出不保存)
            3、重启mysql服务:sudo /etc/init.d/mysql restart
客户端把数据存储到数据库服务器上的过程(面试会问到)
    1、连接到数据库服务器:mysql -h -u -p
    2、选择库:use 库名;
    3、创建/修改表
    4、断开与数据库的连接:exit 、quit、\q
数据类型:
    1、数值类型(有符号signed 和 无符号 unsigned)
        1、整型
            1、int 大整型(占4个字节):
                    取值范围:0~2**32-1
            2、tinyint 微小整型(占1字节)
                1、有符号(signed默认)取值范围:-128~127
                2、无符号(unsigned) 取值范围:0~2**8-1
            3、smallint 小整型(占2字节)
                取值范围:0~65535
            4、bigint 极大整型(占8字节)
                取值范围:0~2**64-1
        2、浮点型
            1、float(4个字节,最多显示7个有效位)
                1、用法:字段名 float(m,n) m代表总位数,n代表小数位位数
                    float(5,2)取值范围:-999.99~999.99;会根据小数第3位进行四舍五入
                    说明:m总位数不要超过7位,否则7位之后数字会随机生成。浮点型插入整数时会自动补全小数位数
                2、double(8字节,最多显示15个有效位)
                    用法:字段名 double(m,n)
                3、decimal(占M+2个字节,最多显示28个有效位)
                    用法:decimal(M,D)
    2、字符类型
        1、char(定长)
            1、宽度取值范围:1~255
            2、不给宽度默认为宽度为1
        2、varchar(变长)(输入要的值不能超过变长值,储存空间根据实际输入的数值来确定)
            1、取值范围:1~65535
            2、注意:
                1、varchar没有默认宽度,必须给定一个宽度
                2、char和varchar使用时都给宽度,但不能超过各自的范围
            3、char 和 varchar 的特点
                1、char浪费存储空间但是性能高
                2、varchar节省存储空间,性能低(需要计算需要占用的存储空间)
            4、字符类型的宽度和数值类型的宽度的区别
                1、数值类型的宽度为显示宽度,只用于select查询时使用,和占用存储空间的大小无关,可用zerofill查看效果
                2、字符类型的宽度超过则无法存储
    3、枚举类型
        1、定义:字段值只能在列举的范围内选择
        2、enum 单选(最多有65535个不同的值)
            字段名 enmu(值1,值2,...)
        3、set 多选(最多有64个不同的值)
            字段名 set(值1,值2,...),插入值的时候每个值之间用逗号分隔开
    4、日期时间类型
        1、year: 年 YYYY
        2、date:日期 YYYYMMDD
        3、time:时间 HHMMSS
        4、datetime:日期时间 YYYYMMDDHHMMSS
        5、timestamp:时间日期 YYYYMMDDHHMMSS
        6、说明:
            1、datetime 不给值默认返回NULL
            2、timestamp不给值默认返回系统当前时间
表字段的操作:
    1、语法:alter table 表名 执行动作
        1、添加字段(add):
            1、添加到末尾
                alter table 表名 add 字段名 数据类型
            2、添加到开始
                alter table 表名 add 字段名 数据类型 first
            3、添加到指定位置
                alter table 表名 add 字段名 数据类型 after 已有字段名
        2、删除字段(drop):
            alter table 表名 drop 字段名
        3、修改数据类型(modify):
            alter table 表名 modify 字段名 新的数据类型
        4、修改字段名
            alter table 表名 change 旧名 新名 数据类型
        5、修改表名
            alter table 表名 rename 新表名
练习:
    1、填空题:
        1、MySQL中的数据类型有 数值类型、字符类型、枚举类型、日期时间类型
        2、关系型数据库的核心内容是 关系 即 二维表
    2、简答题:
        1、简述客户端把数据存储到数据库服务器上的过程
        答:
            1、连接MySQL服务器数
            2、选择库 use 库名
            3、添加\修改表
            4、断开与数据库的连接 exit | quit | \q
        2、char和varchar的区别?各自的特点
        答:
            1、char(定长),所占用的内容空间已经由定长决定了,虽然多占用内存,但是效率高
            2、varchar(不定长),所占用的内控空间由添加字段的数据本身决定,但是需要计算占用的空间,效率第,省内存
    3、操作题:
        1、创建一个库school
            create database school;
        2、在库中创建表students来存储学生信息,字段如下学生(id)要求显示宽度为3位,不够用0填充
           姓名(name),年龄(age只能为正数)、成绩(score浮点)、性别(sex单选)、爱好(likes多选)、入学时间(年月日)
            use school;
            create table students(
            id int(3) zerofill,
            name char(20),
            age tinyint unsigned,
            score float(4,1),
            sex enum('男','女'),
            likes set('打篮球','学习','购物','打游戏','打仗'),
            go_school_time date
            )default charset = utf8;   
        3、查看students的表结构
            desc students;
        4、在students表中增加一个字段id,加在第一列
            alter table students add kid int first;
        5、在表中任意插入5条记录
            insert into students values(1,1,'曹操',60,80,'男','打仗,打游戏',20000912);
            insert into students values(2,2,'刘备',50,90,'男','打仗,打游戏',20000912);
            insert into students values(3,3,'关羽',45,70,'男','打仗,打游戏',20000912);
            insert into students values(4,4,'张飞',40,60,'男','打仗,打游戏',20000912);
            insert into students values(5,5,'小乔',20,100,'女','学习,购物',20000912);
        6、查看所有学生的姓名、成绩、和入学时间
            select name,score,go_school_time from students;

猜你喜欢

转载自www.cnblogs.com/xdl-smile/p/9361210.html