MySQL day01

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 字段名 新数据类型;
作业:
 1、MySQL中的数据类型有 __int大整型__ __tinyint微小整型__ __float浮点型__ __decimal小数__
 2、关系型数据库的核心内容是 关系 即 二维表
 3、char和varchar的区别,各自的特点
             答:char和varchar使用时都要给一个宽度
                 char是定长
                 varchar是变长会随着输入内容逐渐变长
                 char和varchar特点
                   char浪费存存储空间,性能高
                   varchar 节省存储空间,性能低
 4、
  1、创建一个库 school
  2、在库中创建一个表 students来存储学生信息
   id 显示宽度为3,位数不够用0填充
   name、age(要求不能输入负数)、score(浮点float)、性别(单选)、
   likes(多选)
  3、查看students的表结构
  4、在students中添加一个字段height,加在age字段之后
  5、将score字段的数据类型改为decimal
  6、在students中插入3条完整记录
  7、查看所有学生的姓名和成绩
  8、查看没有及格的学生的信息
------------------------------------------------------------------------
1、创建一个库 school
2、在库中创建一个表 students来存储学生信息
   id 显示宽度为3,位数不够用0填充
   name、age(要求不能输入负数)、score(浮点float)、性别(单选)、
   likes(多选)
3、查看students的表结构
4、在students中添加一个字段height,加在age字段之后
5、将score字段的数据类型改为decimal
6、在students中插入3条完整记录
7、查看所有学生的姓名和成绩
8、查看没有及格的学生的信息
常用小结
服务端启动
    sudo /etc/init.d/mysql start  #开始
本地连接可省略 -h 选项
    mysql -uroot -p123456
断开与数据库的连接  exit; | quit; | \q;
库的基本操作
1、查看已有的库
 show databases;
2、创建库
 create database 库名 [character set utf8];
3、查看创建库的语句(字符集)
 show create database 库名;
4、查看当前所在库
 select database();
5、切换库
 use 库
6、查看库中已有表
 show tables;
7、删除库
 drop database

表的基本操作
1、创建表(指定字符集)
 create table 表名(
 字段名1 数据类型,
 字段名2 数据类型,
 字段名3 数据类型
 )character set utf8;
2、查看创建表的语句(字符集)
 show create table 表名;
3、查看表结构
 desc 表名;
4、删除表
 drop table 表名;  

在表中插入记录
 1、insert into 表名 values(值1),(值2),(值3),...;
 2、insert into 表名(字段名1,字段名2) values(),(),...;
查询表记录
 1、select * from 表名 [where 条件];
 2、select 字段名1,字段名2 from 表名 [where 条件];

表字段操作
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 字段名 新数据类型;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值