mysql01

作者: Deque | 来源:发表于2018-10-03 03:38 被阅读0次

    数据库

    io流文件存储数据的弊端

    1. 存储效率低
    2. 不管存还取操作比较麻烦
    3. 一般只能保存小量字符串数据

    DB

    • data base 数据库
    • 什么是数据库: 数据库实际上就是一个文件集合
    • 数据库就是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作

    DBMS

    • DataBaseManagementSystem:数据库管理系统(软件)
    • 什么是DBMS: 用来管理数据库文件的软件,用户需要访问DBMS对数据进行增删改查操作。
      常见DBMS: MySQL oracle DB2 sqlite sqlserver..

    数据库的分类

    分为两类:

    1. 关系型数据库: 经过数学理论验证 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位。
    2. 非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据。

    主流关系型数据库介绍

    1. MySQL: 08年被sun公司收购 09年sun被oracle收购,开源免费,到oracle发布了5.0版本(使用了oracle核心技术 性能提高30%),因为Oracle数据库地位受到威胁,计划把mysql闭源,原mysql作者们不干了,原程序员出去单干 发布了MariaDB数据库 名字是因为作者女儿叫Maria ,市场排名第一
    2. Oracle: 闭源, 最贵 性能最高 拉里埃里森32 市场排名第二
    3. SQLServer:微软公司的产品 市场排名第三,主要应用在.net(C#)开发的网站中
    4. DB2: IBM公司 有做网站的完整解决方案(操作系统,we服务器(如tomcat),数据库等)主要应用在银行等国有大型企业中
    5. sqlite:轻量级数据库 只有几十k,一般应用在嵌入式和移动设备中

    开源和闭源的区别

    1. 开源: 开发源代码,盈利方式靠卖服务(赚钱慢,少),用户群大,大牛程序员会无偿帮着升级维护
    2. 闭源:不开放源代码,盈利方式卖产品+服务(赚钱快,多),大牛们各种攻击找漏洞

    数据库的安装

    • 两点注意: 端口号默认3306,字符集选择utf-8

    SQL

    Structured Query Language:结构化 查询 语言
    
    • sql是写在客户端 执行在DBMS中,DBMS解析后执行

    打开数据库客户端 并登陆

    • 在终端中执行以下命令
      mysql -uroot -p 敲回车 因为没有密码 所以再次敲回车 如果有密码则先敲密码再回车
    • 退出命令: exit;

    数据库相关的SQL

    1. 查看所有数据库

       show databases;
      
    2. 创建数据库
      -格式:create database 数据库名称;

       create database db1;
      
    3. 查看数据库详情
      -格式: show create database 数据库名;

       show create database db1;
      
    4. 创建数据库指定字符集 utf8或gbk

       create database db2 character set utf8;
      
       create database db2 character set gbk;
      
    5. 删除数据库

       drop database db2;
      

    练习:把刚才自己创建的都删除

    然后再创建db1,db2 字符集为gbk,db3, 然后查看db2是否成功,然后把db2 和db3删除 
    
    1. 使用数据库

      use db1;

    和表相关的SQL

    • 什么是表: 关系型数据库中保存数据的单元,类似于Excel中的表,创建表时需要指定字段信息
    1. 创建表
      -格式: create table 表名 (字段1名 字段1类型,字段2名 字段2类型);

      create table person(name varchar(10),
      age int);


      01.png
    • 练习1:创建一个员工表(emp) 有名字(ename)和工资(sal)
      create table emp(ename varchar(10),sal int);

    • 练习2:创建一个学生表(student)有学号(id)姓名(name)性别(gender)语文(chinese)数学(math)英语(english)

        create table student(id int,name varchar(10),gender varchar(5),chinese int,math int,english int);
      

    回顾:

    1. 查看所有数据库
      show databases;
    2. 创建数据库
      create database db1;
    3. 查看数据库详情
      show create database db1;
    4. 创建数据库指定字符集
      create database db2 character set gbk/utf8;
    5. 删除数据库
      drop database db1;
    6. 使用数据库
      use db1;
    7. 创建表
      create table t1(name varchar(10),age int);

    和表相关的SQL

    查询所有表

        show tables;
    

    查看单个表属性

    show create table person;
    

    表的引擎

    1. Myisam: 只支持数据基础的增删改查,不支持高级操作,如:事务、外键等
    2. InnoDB:支持高级操作,默认为InnoDB。

    创建表并且指定引擎和字符集

    create table t1(id int,name varchar(10)) engine=myisam charset=gbk;
    -查询:
    show create table t1;
    

    查看表字段信息

    desc student;
    

    练习: 创建 5个数据库 每个里面创建一张表 ,第三个数据库字符集为gbk 里面的表引擎为myisam 创建完后 全部删除数据库

    对创建好的表进行修改

    修改表名

        rename table 原名 to 新名;
    
        rename table student to t_stu;
    
        create table hero(name varchar(10));
    

    修改表属性 引擎和字符集

        alter table hero engine=myisam charset=gbk;
    

    添加表字段

    • 最后位置添加
      alter table hero add age int;
    • 最前面添加
      alter table hero add money int first;
    • 在某个字段的后面添加
      alter table hero add gender varchar(5) after name;

    删除表字段

        alter table hero drop money;
    

    修改表字段名和类型

        alter table hero change 原字段名 新字段名 类型;
        alter table hero change name heroname varchar(10);
    

    修改表字段类型和位置

        alter table hero modify age int first;
        alter table hero modify age int after xxx;
    

    删除表

        drop table hero;
    

    练习:

    1. 创建员工表(emp) 字段有 id和name
      create table emp(id int,name varchar(10));
    2. 修改emp表的引擎为myisam 字符集为gbk
      alter table emp engine=myisam charset=gbk;
    3. 修改表名为 t_emp
      rename table emp to t_emp;
    4. 给t_emp添加age字段在id的后面
      alter table t_emp add age int after id;
    5. 给t_emp添加工资sal字段在最后
      alter table t_emp add sal int;
    6. 修改sal字段名称为salary
      alter table t_emp change sal salary int;
    7. 修改age字段到salary字段的后面
      alter table t_emp modify age int after salary;
    8. 删除salary字段
      alter table t_emp drop salary;
    9. 删除 t_emp表
      drop table t_emp;

    数据相关的SQL

    插入数据

    • 创建学生表

        create table student(id int,name varchar(10),chinese int,math int,english int);
      
    • 插入数据 全表插入:每个字段都赋值 顺序要和表字段一致

        insert into student values(1,'zhangsan',88,38,98);
      

    -指定字段插入

        insert into student (id,name) values (2,'张飞');
    

    -练习: 插入刘备 id为3 语数外成绩 78 22 18
    insert into student values(3,'刘备',78,22,18);
    插入关羽 id为4 语文90
    insert into student (id,name,chinese) values (4,'关羽',90);
    插入孙悟空 id为5 英语18
    insert into student (id,name,english) values (5,'孙悟空',18);

    批量插入

        insert into student values(6,'唐僧',56,57,58),(7,'八戒',88,89,99);
    
        insert into student (id,name) values
        (8,'吕布'),(9,'貂蝉'),(10,'孙尚香');
    

    查询

    -查询全部数据的全部字段信息

        select * from student;
    

    -查询指定字段

        select id,name from student;
    

    -条件查询

        select * from student where id<5;
    

    修改数据

        update student set math=100; 
         
        update student set english=30 where id=7;
    

    删除数据

        delete from student where id=7;
        
        delete from student;
    

    练习

    1. 创建t_emp表 有 id 名字name 工资sal 如果之前存在t_emp先删除
      create table t_emp(id int,name varchar(10),sal int);
    2. 插入以下五条数据
      insert into t_emp values(1,'诸葛亮',3000),(2,'司马懿',4000),(3,'李白',8000),(4,'元芳',6000),(5,'狄仁杰',8000);
    3. 修改工资8000的为7888
      update t_emp set sal=7888 where sal=8000;
    4. 修改元芳的名字为李元芳
      update t_emp set name='李元芳' where id=4;
    5. 删除工资低于5000的
      delete from t_emp where sal<5000;
    6. 删除所有数据
      delete from t_emp;

    编码问题

    • sql语句在客户端中写完后需要通过网络发送给数据库服务器,这时需要字符的编解码,数据库保存数据时也需要字符的编解码
    • 学校学生电脑保存中文数据只需要确认 数据库和表是否统一为utf8
    • 个人电脑如果是windows系统需要保证数据库和表为utf8 之外 还需要在命令行中 执行 set names gbk; 通知数据库客户端传过去的内容需要使用gbk解码。

    课程回顾

    数据库相关sql

    1. 查询所有数据库
      show databases;
    2. 创建数据库
      create database db1;
    3. 查看详情
      show create database db1;
    4. 创建数据库指定字符集
      create database db1 character set gbk/utf8;
    5. 删除数据库
      drop database db1;
    6. 使用数据库
      use db1;

    表相关sql

    1. 创建表
      create table t1(id int,name varchar(10));
    2. 查询所有表
      show tables;
    3. 查看属性
      show create table t1;
    4. 创建表指定引擎和字符集
      create table t1(id int,name varchar(10))engine=myisam/innodb charset=gbk;
    5. 查看表字段信息
      desc t1;
    6. 修改表
    • 修改表名: rename table t1 to t2;
    • 修改表属性: alter table t1 engine=myisam/innodb charset=gbk;
    • 添加表字段: alter table t1 add age int first/after xxx;
    • 删除表字段: alter table t1 drop age;
    • 修改表字段名和类型: alter table t1 change age fatherage int;
    • 修改表的字段类型和位置: alter table t1 modify age int first;
    1. 删除表
      drop table t1;

    数据相关sql

    1. 插入数据
        insert into t1 values(值1,值2,值3);
    
        insert into t1 (字段1名,字段2名)values(值1,值2);
    
    • 批量插入
        insert into t1 values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
    
        insert into t1 (字段1名,字段2名)values(值1,值2),(值1,值2),(值1,值2);
    
    1. 查询数据
        select * from t1;
        select name,age from t1;
        select * from t1 where age<20;
    
    1. 修改数据
        update t1 set age=18,sal=3000 where id=3;
    
    1. 删除
        delete from t1 where id=3;
    

    相关文章

      网友评论

          本文标题:mysql01

          本文链接:https://www.haomeiwen.com/subject/xuczoftx.html