• mysql_day01


    1、MySQL概述   
      1、什么是数据库
       数据库是一个存储数据的仓库
    2、都有哪些公司在用数据库
    金融机构、游戏网站、购物网站、论坛网站 ... ...
    3、提供数据库服务的软件
    1、软件分类
    MySQL、SQL_Server、Oracle、Mariadb、DB2、MongoDB ...
    2、在生产环境中,如何选择使用哪个数据库
    1、是否开源
    开源软件:MySQL、Mariadb、MongoDB
    商业软件:Oracle、DB2、SQL_Server
    2、是否跨平台
    不跨平台:SQL_Server
    跨平台:MySQL、Mariadb、MongoDB、DB2、Oracle
    3、公司的类型
    商业软件:政府部门、金融机构
    开源软件:游戏网站、购物网站、论坛网站... ...
    4、MySQL的特点
    1、关系型数据库
    1、关系型数据库的特点
    1、数据是以行和列的形式去存储的
    2、这一系列的行和列称为表
    3、表中的每一行叫一条记录
    4、表中的每一列叫一个字段
    5、表和表之间的逻辑关联叫关系
    2、示例
    1、关系型数据库存储
    表1、学生信息表
    姓名 年龄 班级
    牛郎 25 AID1803
    织女 23 AID1801
    表2、班级信息表
    班级 班主任
    AID1803 卢大大
    AID1801 孙大大
    2、非关系型数据库中存储
    {"姓名":"牛郎","年龄":25,"班级":"AID1803","班主任":"卢大大"}
    {"姓名":"织女","年龄":25,"班级":"AID1803"}
    2、跨平台
    可以在Unix、Linux、Windows上运行数据库服务
    3、支持多种编程语言
    Python、java、php ... ...
    2、MySQL的安装
    1、Ubuntu安装MySQL服务 RedHat(红帽)、CentOS、Ubuntu
    1、安装服务端
    sudo apt-get install mysql-server
    2、安装客户端
    sudo apt-get install mysql-client
    2、Windows安装MySQL服务
    1、下载MySQL安装包(windows)
    mysql-installer***5.7.***.msi
    2、双击、按照教程安装即可
    3、启动和连接MySQL服务
    1、服务端启动
    1、查看MySQL服务状态
    sudo /etc/init.d/mysql status
    2、停止、启动、重启MySQL服务
    sudo /etc/init.d/mysql stop | start | restart
    2、客户端连接
    1、命令格式
    mysql -h主机地址 -u用户名 -p密码
    mysql -hlocalhost -uroot -p123456
    2、本地连接可以省略 -h 选项
    mysql -u用户名 -p密码
    mysql -uroot -p123456
    4、基本SQL命令
    1、SQL命令的使用规则
    1、每条SQL命令必须以 ; 结尾
    2、SQL命令不区分字母大小写
    3、使用 c 来终止命令的执行 (Linux中 ctrl + c)
    2、库的管理
    1、库的基本操作
    1、查看已有的库
    show databases;
    2、创建库(指定默认字符集)
    create database 库名 default charset=utf8;
    3、查看创建库的语句
    show create database 库名;
    4、查看当前所在库
    select database();
    5、切换库
    use 库名;
    6、查看库中已有表
    show tables;
    7、删除库
    drop database 库名;
    2、库名的命名规则
    1、可以使用数字、字母、_,但不能使用纯数字
    2、库名区分字母大小写
    3、库名具有唯一性
    4、不能使用特殊字符和MySQL关键字
    3、练习
    1、创建库AID1803db,指定字符集为utf8
    create database AID1803db default charset=utf8;
    2、切换到该库AID1803db
    use AID1803db;
    3、查看当前所在库
    select database();
    4、查看库中已有的表
    show tables;
    5、查看AID1803db的字符集(查看创建库的语句)
    show create database AID1803db;
    6、删除库AID1803db
    drop database AID1803db;
    3、表的管理
    1、表的基本操作
    1、创建表(指定字符集)
    create table 表名(
    字段名 数据类型,
    字段名 数据类型,
    ... ...
    );
    2、查看创建表的语句(字符集)
    show create table 表名;
    3、查看表结构
    desc 表名;
    4、删除表
    drop table 表名;
    2、表的命名规则(同库的命名规则)
    3、练习
    1、创建库 python
    create database python;
    2、在库 python 中创建表 py_mysql,指定字符集utf8
    表中字段有 id int 和 name char(20) 两个字段
    use python;
    create table py_mysql(
    id int,
    name char(20)
    )default charset=utf8;
    3、查看表 py_mysql 的字符集以及存储引擎
    show create table py_mysql;
    4、查看 py_mysql 的表结构
    desc py_mysql;
    5、删除表 py_mysql
    drop table py_mysql;
    4、注意
    1、所有的数据都是以文件的形式存放在数据库目录下
    2、数据库目录:/var/lib/mysql
    5、更改库、表的默认字符集
    1、方法
    通过更改MySQL服务的配置文件来实现
    2、步骤
    1、获取root权限
    sudo -i
    2、切换到配置文件所在路径
    cd /etc/mysql/mysql.conf.d
    3、备份
    cp -p mysqld.cnf mysqld.cnf.bak
    (-p选项连同原文件权限一起复制)
    4、用vi打开mysqld.cnf
    vi mysqld.cnf
    [mysqld]
    character_set_server = utf8 保存退出
    a -> 写入 -> ESC -> shift + : -> wq
    5、重启mysql服务
    /etc/init.d/mysql restart | reload(重载配置文件)
    6、退出超级用户 exit
    7、登录到mysql验证:mysql -uroot -p123456
    create database 库名;
    show create database 库名;
    6、表记录管理
    1、在表中插入记录
    1、insert into 表名 values(值1),(值2),...,(值N);
    2、insert into 表名(字段名列表) values(值1),...(值N);
    2、查询表记录
    1、select * from 表名;
    2、select 字段1,字段名2,...,字段名N from 表名;
    3、练习
    1、查看所有的库 : show databases;
    2、创建新库 stu1 : create database stu1;
    3、在库 stu1 中创建表 students ,字段要求如下
    1、id int
    2、name char(15)
    3、age int
    4、address char(20)
    4、查看表 students 的表结构: desc students;
    5、在表中插入一条记录(行)
    insert into students values(1,"Tom",25,"Beijing");
    6、在表中一次性插入2条记录(行)
    insert into students values(...),(...);
    7、查看所有表记录 : select * from students;
    8、删除表 students : drop table students;
    9、删除库 stu1 : drop database stu1;
    7、客户端把数据存储到数据库服务器上的过程
    1、连接到数据库服务器 : mysql -uroot -p123456
    2、选择一个库 :use 库名;
    3、创建表或者修改表 :create ...
    4、断开与数据库服务器的连接 :exit | quit | q
    8、名词介绍
    1、DB (database)
    DB就是数据库,存储数据的仓库
    2、DBMS(database management system)
    数据库管理系统
    管理数据库的软件:MySQL、Oracle、MongoDB ... ...
    3、DBS(database system)
    数据库系统
    DBS = DB(存储) + DBMS(数据库软件) + 数据库应用(财务管理系统、人事管理系统) + 用户
    9、数据类型
    1、数值类型(有符号signed和无符号unsigned)
    1、整型
    1、int 大整型(4个字节)
    取值范围:0 ~ 2 ** 32 -1(42亿多)
    2、tinyint 微小整型(1个字节)
    1、有符号(signed默认): -128 ~ 127
    2、无符号(unsigned): 0 ~ 255
    3、smallint 小整型(2个字节)
    取值范围:0 ~ 65535
    4、bigint 极大整型(8个字节)
    取值范围:0 ~ 2 ** 64 - 1
    2、浮点型
    1、float(4个字节,最多显示7个有效位)
    1、用法
    字段名 float(m,n) m:表示总位数 n:小数位位数
    salary float(5,2) 取值范围? -999.99 ~ 999.99
    2、注意
    1、浮点型插入整数时会自动补全小数位位数
    2、小数位如果多于指定的位数,会对指定位的下一位进行四舍五入
    float(5,2) -> 23.128 -> 23.13
    2、double(8个字节,最多显示15个有效位)
    1、用法
    字段名 double(m,n)
    3、decimal(M+2个字节,最多显示28个有效位)
    1、用法
    decimal(28,5)
    2、字符类型
    1、char(定长)
    1、取值范围:1 ~ 255
    2、不给定宽度默认为 1
    2、varchar(变长)
    1、取值范围:1 ~ 65535
    2、注意
    1、varchar没有默认宽度,必须给定一个宽度值
    name varchar(20)
    3、char 和 varchar 的特点
    1、char
    浪费存储空间,但是性能高
    2、varchar
    节省存储空间,但是性能低
    4、练习
    1、创建表stuinfo,字段要求如下:
    学号:id 大整型 id int,
    姓名:name 变长,宽度为15 name varchar(15),
    班级:classes 定长,宽度为7 classes char(7),
    年龄:age 微小整型,要求不能输入负数
    age tinyint unsigned,
    身高:height 浮点型,小数位为2位 heigit float(5,2)
    2、查看表结构 : desc stuinfo
    3、在表 stuinfo 中插入2条记录(行)
    insert into stuinfo values
    (1,"张三丰","AID1803",23,175.00)
    4、查询所有表记录
    select * from stuinfo;
    5、查询所有学生的姓名、年龄和身高
    select name,age,height from stuinfo;
    3、枚举类型
    1、定义
    字段值只能在列举的范围内选择
    2、enum(...) 单选(最多有65535个不同的值)
    字段名 enum(值1,值2,...,值N)
    3、set(...) 多选(最多有64个不同的值)
    字段名 set(值1,值2,...,值N)
    插入记录时 "Python,boy,Mysql"
    4、日期时间类型
    1、year :年 YYYY
    2、date :日期 YYYYMMDD
    3、time :时间 HHMMSS
    4、datetime :日期时间 YYYYMMDDHHMMSS
    5、timestamp :日期时间 YYYYMMDDHHMMSS
    create table t6(
    id int,
    name varchar(15),
    age tinyint unsigned,
    birth_year year,
    birthday date,
    class time,
    meeting datetime
    )default charset=utf8;

    insert into t6 values
    (1,"武松",40,1979,19790520,090000,20180504000000);
    select * from t6;
    6、注意
    1、插入记录时datetime字段不给值默认返回NULL
    2、插入记录时timestamp字段不给值默认返回系统当前时间
    10、表字段的操作
    1、语法:alter table 表名 执行动作;
    1、添加字段
    alter table 表名 add 字段名 数据类型 first | after 字段名;
    2、删除字段
    alter table 表名 drop 字段名;
    3、修改字段数据类型
    alter table 表名 modify 字段名 新数据类型;
    # 修改数据类型时会受到表中原有数据的限制
    4、修改字段名
    alter table 表名 change 旧名 新名 数据类型;
    5、修改表名
    alter table 表名 rename 新表名;
    1、面试题
    1、填空题
    1、MySQL中的数据类型有 ____ _____ ____ _____
    2、关系型数据库的核心内容是 __关系__ 即 _二维表_
    2、简答题
    1、简述客户端把数据存储到数据库服务器上的过程
    2、char和varchar的区别?各自的特点?
    2、操作题
    1、创建一个学校的库 school
    2、在库中创建一张表 students 来存储学生信息
    学号、姓名、年龄、成绩、性别、爱好、入学时间
    3、查看students的表结构
    4、在students中添加一个字段id,添加在第一列
    5、在表中随意插入5条记录
    6、查看所有的学生信息
    7、查看所有学生的姓名和成绩
    3、练习使用一下 vi 文本编辑器
  • 相关阅读:
    新浪微博千万级规模高性能、高并发的网络架构经验分享
    PHP- 如何在终端输出带颜色的字体?
    淘宝大秒杀系统是如何设计的?
    如何打造千万级Feed流系统
    Redis实现分布式锁 php
    Ubuntu16.04 安装PHP7 的 imagick 扩展
    nginx配置http访问自动跳转到https
    使用Redis来实现LBS的应用
    PHP多进程编程初步
    选redis还是memcache,源码怎么说
  • 原文地址:https://www.cnblogs.com/wcin/p/9113602.html
Copyright © 2020-2023  润新知