MySQL概述,MySQL安装,启动和连接MySQL服务,基本SQL命令

1、MySQL概述
    1、什么是数据库
        数据库是一个存储数据的仓库
    2、都有哪些公司在用数据库
        金融机构、游戏网站、购物网站、论坛网站 ...
    3、提供数据库服务的软件
        1、软件分类
            MySQL、Mariadb、SQL_Server、Oracle、DB2、MongoDB ...
        2、生产环境中,如何选择使用哪个数据库
            1、是否开源
                开源软件:MySQL、Mariadb、MongoDB
                商业软件:Oracle、DB2、SQL_Server
            2、是否跨平台
                跨平台:
                不跨平台:SQL_Server
            3、公司的类型
                商业软件:政府部门、金融机构
                开源软件:游戏网站、购物网站、论坛网站 ...
    4、MySQL特点
        1、关系型数据库
            1、关系型数据库的特点
                1、数据是以行和列的形式存储
                2、表中每一行叫一条记录
                3、表中的每一列叫一个字段
                4、表和表之间的逻辑关联叫关系
            2、示例
                1、关系型数据库存储
                    表1、学生信息表
                        姓名  年龄  班级
                        星矢   25   三班
                        水冰月 25   六班
                    表2、班级信息表
                        班级  班主任
                        三班  大空翼
                        六班  松人
                2、非关系型数据库存储
                    {"姓名":"星矢","年龄":25,"班级":"三班","班主任":"大空翼"}
                    {"姓名":"水冰月","年龄":25,"班级":"六班","班主任":"松人"}
        2、跨平台
            可以在Unix、Linux、Windows上运行数据库服务
        3、支持多种编程语言
            Python、Java、php ...
    5、数据库软件、数据库、数据仓库
        1、数据库软件
            是一种软件,可以看得见,可操作,来实现数据库逻辑功能
        2、数据库
            是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现,侧重存储
        3、数据仓库
            数据仓库主要用于数据挖掘和数据分析
            网购:
                数据库: user --> 用户名和密码
                数据仓库:哪个时间段用户登录量最多,哪个用户一年购物最多...
2、MySQL安装
    1、Ubuntu安装MySQL服务
        1、安装服务端
            sudo apt-get install mysql-server
        2、安装客户端    
            sudo apt-get install mysql-client
        3、Ubuntu安装软件
            sudo apt-get update
            sudo apt-get -f install 修复依赖关系
            sudo apt-get install 软件包
    2、Windows安装MySQL服务
        1、下载MySQL安装包(windows)
            mysql-installer***5.7.***.msi
        2、双击、按照教程安装
3、启动和连接MySQL服务
    1、服务端启动
        sudo /etc/init.d/mysql start
        sudo /etc/init.d/mysql stop
        sudo /etc/init.d/mysql restart
        sudo /etc/init.d/mysql status #查看当前状态
        sudo /etc/init.d/mysql reload #重新加载配置文件
    2、客户端连接
        1、命令格式
            mysql -h主机地址 -u用户名 -p密码
            mysql -hlocalhost -uroot -p123456
        2、本地连接可省略 -h 选项
            mysql -uroot -p123456
4、基本SQL命令
    1、SQL命令的使用规则
        1、每条SQL命令必须以 ; 结尾
        2、SQL命令不区分字母大小写
        3、使用 \c 终止当前命令的执行
    2、库的管理
        1、库的基本操作
            1、查看已有的库
                show databases;
            2、创建库
                create database 库名 [character set utf8];
            3、查看创建库的语句(字符集)
                show create database 库名;
            4、查看当前所在库
                select database();
            5、切换库
                use 库名;
            6、查看库中已有表
                show tables;
            7、删除库
                drop database 库名;
        2、库的命名规则
            1、数字、字母、_,但是不能是纯数字
            2、库名区分字母大小写
            3、不能使用特殊字符和mysql关键字
        3、练习
            1、创建库testdb,指定字符集为utf8
                create database testdb character set utf8;
            2、进入到库 testdb
                use testdb;
            3、查看当前所在库
                select database();
            4、创建库 testdb2,指定字符集为 latin1
                create database testdb2 character set latin1;
            5、进入到库 testdb2
                use testdb2;
            6、查看 testdb2 的字符集
                show create database testdb2;
            7、删除库 testdb
                drop database testdb;
            8、删除库 testdb2
                drop database testdb2;
                show databases;
    3、表的管理
        1、表的基本操作
            1、创建表(指定字符集)
                create table 表名(
                字段名1 数据类型,
                字段名2 数据类型,
                字段名3 数据类型
                )character set utf8;
            2、查看创建表的语句(字符集)
                show create table 表名;
            3、查看表结构
                desc 表名;
            4、删除表
                drop table 表名;
        2、练习
            1、创建库 python1
                create database python1;
            2、在python1库中创建表 pymysql,并指定字符集为 utf8
                字段有三个:id name age 数据类型自己定义(比如说:char(20) 、int )
                use python1;
                create table pymysql(
                id int,
                name char(20),
                age int
                );
            3、查看创建表 pymysql 的语句
                show create table pymysql;
            4、查看pymysql的表结构
                desc pymysql;
            5、删除表 pymysql
                drop table pymysql;
            6、删除库 python1
                drop database python1;
    4、注意
        1、所有的数据都是以文件的形式存放在数据库目录/var/lib/mysql
    5、表记录的管理
        1、在表中插入记录
            1、insert into 表名 values(值1),(值2),(值3),...;
            2、insert into 表名(字段名1,字段名2) values(),(),...;
        2、查询表记录
            1、select * from 表名 [where 条件];
            2、select 字段名1,字段名2 from 表名 [where 条件];
            3、示例
                mysql> select * from t2;
                mysql> select * from t2 where id<3;
                mysql> select name,age from t2;
                mysql> select id,name from t2 where id<4;
        3、练习
            1、查看所有库
                show databases;
            2、创建一个新库 studb 
                create database studb;
            3、在 studb 中创建一张表tab1,指定字符集utf8,字段有:
                id name age score 四个 char(15)
                use studb;
                select database();
                create table tab1(
                id int,
                name char(15),
                age int,
                score int
                )character set utf8;
            4、查看 tab1 的表结构
                desc tab1;
            5、在tab1中随便插入2条记录
                insert into tab1 values
                (1,"李白",30,90),(2,"杜甫",30,88);
            6、在tab1中的name和score两个字段插入2条记录
                insert into tab1(name,score) values
                ("李清照",25),("王维",28);
            7、查看tab1表中所有记录
                select * from tab1;
            8、查看tab1表中所有人的名字和成绩(score)
                select name,score from tab1;
5、如何更改默认字符集
    1、方法
        通过更改MySQL配置文件实现
    2、步骤
        1、获取root权限
            sudo -i
        2、备份配置文件
            cd /etc/mysql/mysql.conf.d/
            cp  mysqld.cnf  mysqld.cnf.bak
        3、更改mysqld.cnf配置
            subl mysqld.cnf
            [mysqld]
            character_set_server=utf8
        4、重启mysql服务
            sudo /etc/init.d/mysql restart
6、客户端把数据存储到数据库服务器上的过程
    1、先连接到数据库服务器 
    2、选择库
    3、创建或者修改表
    4、断开与数据库的连接  exit; | quit; | \q;
7、数据类型
    1、数值类型
        1、整型(有符号 和 无符号unsigned)
            1、int 大整型(4个字节)
                0~2**32 -1(42亿多)
            2、tinyint 微小整型(1个字节)
                1、有符号(signed)
                2、无符号(unsigned) : 0~255
                    age tinyint unsigned,
            3、bigint 极大整型(8个字节)
        2、浮点型
            1、float(4个字节,最多显示7个有效位)
                1、用法
                    字段名 float(m,n)  m:总位数,n:小数位位数
                    float(5,2) 取值范围???-999.99 ~ 999.99
            2、decimal(最多显示28个有效位)
                1、用法
                    字段名 decimal(m,n)
                2、存储空间(整数部分和小数部分分开存储)
                    规则:将9的倍数包装成4个字节
                        
                        余数   字节
                         1-2     1
                         3-4     2
                         5-6     3
                         7-8     4
                        decimal(19,9)
                            整数部分:10/9=商1余1 4字节+1字节=5字节
                            小数部分:9/9=商1余0  4字节+0字节=4字节
    2、字符类型
        1、char(定长)
            char(宽度值) 
        2、varchar(变长)
            varchar(宽度值)
        3、char和varchar的特点
            1、char :浪费存储空间,性能高
            2、varchar :节省存储空间,性能低
        4、text / longtest(4G)
    3、练习
        1、创建一个库 studb2,并在studb2中创建表 tab2,字段要求如下:
            id 整型
            name 变长,宽度为20
            class 定长,宽度为7
            age 微小整型,不能输入负数
            height 浮点型,小数位为2位
        
            create database studb2;
            use studb2;
            create table tab2(
            id int,
            name varchar(20),
            class char(7),
            age tinyint unsigned,
            height float(5,2)
            );
        2、查看tab2表结构
            desc tab2;
        3、查看tab2字符集
            show create table tab2;
        4、在tab2中插入2条完整记录
            insert into tab2 values
            (1,"紫衫龙王","AID1805",23,170.36),
            (2,"青翼蝠王","AID1805",25,171.17);
        5、查询所有表记录
            select * from tab2;
        6、在tab2中的name和height两个字段插入2条记录
            insert into tab2(name,height) values
            ("金花婆婆",165),("灭绝师太",168.00);
        7、查询所有学生的姓名和身高
            select name,height from tab2;
        8、查询身高大于160的学生信息
            select * from tab2 where height>170;
    4、数值类型的宽度和字符类型的宽度区别
        1、数值类型宽度为显示宽度,只用于select查询显示,和占用存储空间大小无关,用 zerofill 来显示效果
            id int(3) zerofill,
        2、字符类型的宽度超过则无法存储
    3、枚举类型
        1、定义 
            字段值只能在列举的范围内选择
        2、字段名 enum(值1,值2,...)
             字段名 set(值1,值2,...)
             插入记录的时候: "girl,Python,Study"
    4、日期时间类型
8、表字段操作
    1、语法:alter table 表名 执行动作;
    2、添加字段(add)
        alter table 表名 add 字段名 数据类型;
        alter table 表名 add 字段名 数据类型 first;
        alter table 表名 add 字段名 数据类型 after 字段名;
    3、删除字段(drop)
        alter table 表名 drop 字段名;
    4、修改字段数据类型(modify)
        alter table 表名 modify 字段名 新数据类型;

猜你喜欢

转载自blog.csdn.net/weixin_42584821/article/details/81805638