zoukankan      html  css  js  c++  java
  • Mysql第一天详解

    Mysql01

    MySql01

    数据库简介

    1. 数据库简介

      之前使用的流操作把数据存储到txt文档上,对于修改/插入等,首先代码繁琐,对于查询操作效率极低,另外,如果数据很大,不可能长期保存在文件中. 为了解决上述问题,我们需要使用数据库

      • DB:文件仓库
      • DBMS:数据库的管理软件

      • 数据库的分类

        • 关系型数据库

          • 用"表"保存数据,相关数据存入一张表中
        • 非关系数据库

          • 键值数据库
          • 对象数据库
    2. 主流关系型数据库

      • Oracle 甲骨文 拉里.艾力森 收费 核 闭源 卖产品

      • DB2 IBM,应用于大型系统,UNIX/linux,是oracle的主要竞争对手

      • SQL Server 微软 只能在windows下运行 .net(C#)

      • Mysql 免费 开源 卖服务

        2008被sun收购,除了5.1版本

        2010年sun超过2000亿,被oracle74亿收购

        Mysql牛X程序员,要求Mysql不能闭源,oracle口头答应,没签合同

        mysql除了5.5版本,使用了oracle的核心技术,性能提升了15%-30%

        mysql威胁到了oracle市场,导致5.5版本闭源收费

        Mysql牛X程序员,mariadb

        mysql免费开源社区,支持mariadb

        mysql5.5 mariadb5.5 mysql5.6 mariadb10.0

    3. SQL基本操作

      SQL语言是操作数据库的语言 每一种数据都有自己独特的方言

      linux 打开终端 输入 mysql -u root -p回车 password:(有密码就输入密码回车,没密码就直接回车)

      • 操作数据库

      • 对数据库的操作

        1. 显示所有的数据

          • show databases;
        2. 选定要操作的数据库

          • use 库名;
        3. 创建新的数据库

          • create database 库名;
        4. 查看创建数据库的语句

          • show create database 库名;
        5. 设置默认解码的创建库语句

          • create database demo default character set utf8;
        6. 删除数据库

          • drop database 库名; drop database demo;
        7. 需求,创建库demo1,要求默认编码utf8,创建完成后,选定这个库demo1.

        8. 显示所有表

          • show tables;
        9. 查询表结构

          • desc 表名;
      • 创建表

        • create table 表名( 列名 数据类型(长度) 约束, 列名 数据类型(长度) 约束, ... 列名 数据类型(长度) 约束 );

          create table stu(
              id int not null,
              name varchar(10),
              sex  varchar(10)
          );
          
      • 查看表结构

        desc 表名;

        CREATE TABLE stu ( id int(11) NOT NULL, name varchar(10) DEFAULT NULL, sex varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    mysql的引擎有两种ENGINE=

    - InnoDB
    
        - 支持数据库高级功能
            - 事务
            - 外键    
    
    - myisam
    
        - 数据存储基本功能
        - 效率非常高
    

    -- 课堂练习

    create table user(
        name varchar(16),
        age int
    )engine=innodb charset=gbk;
    
    - **对已经创建好的表进行修改**
    
        1. 修改表名
    
            - rename table 旧表名 to 新表名
            - rename table user to tb_user;
    
        2. 修改表属性(引擎,字符编码)
    
            - alter table 表名
                engine=myisam charset=utf8;
            - alter table tb_user
                engine=myisam charset=utf8;
    
        3. 添加字段
    
            - alter table 表名 add 新字段 新字段的数据类型 新字段的约束 first;
            - alter table tb_user add id int first;
            - alter table tb_user add(
                gender char(5),
                tel char(11)
            );
    
        4. 修改字段名称
    
            - alter table 表名 change 旧字段名
               新字段名 新字段数据类型;
            - alter table tb_user change gender sex varchar(10);
    
        5. 改数据类型
    
            - 删除某一个字段,再添加一个新的
            - 使用命令关键字直接修改
    
            - alter table 表名 modify 字段名 字段新类型
            - alter table tb_user modify tel varchar(11);
    
        6. 修改列的顺序
    
            - alter table 表名 modify 目标列名 目标列数据类型 after 某一列列名
            - alter table tb_user modify tel varchar(11) after age;
    
            - 小练习,把sex 放到age字段的前面
            - alter table tb_user modify sex varchar(10) after name;
    
        7. 删除列
    
            - alter table 表名 drop 列名
            - alter table tb_user drop sex;
    
    - **删除表**
    
        - drop table 表名;
        - DROP TABLE TB_USER;
    - **课堂练习1**
            -- 创建员工表emp
        create table emp(   //员工表
            empno int(4),   //工号 
            ename varchar(10),//姓名
            job varchar(10),  //工种
            mgr int(4),       //上级领导的工号
            hiredate date,    //入职时间
            sal double(7,2),  //工资
            comm double(7,2), //奖金
            deptno int(4)     //所属部门编号
        );  
        create table dept(  //部门表
            deptno int(4),  //部门编号
            dname varchar(14),//部门名称
            loc varchar(13)   //部门办公所在地
        );
    

    DML--对表中数据做操作的语句

    INSERT语句

    - insert into 表名 (列名1,列名2,...) values (值1,值2,...);
    
    insert into emp(empno,ename,job,sal) values (1001,'lily','programmer',5500);
    
    insert into emp(empno,ename,job,sal) values (1001,"lily","programmer",5500);
    
    insert into emp(empno,ename,hiredate) values (1002,'simth','18-01-24');
    

    UPDATE语句

    - update 表名 set 字段名=值 where 列名=值;
    - update emp set ename='lucy' where empno=1001;
    
    - 1.把叫simth的员工的入职时间改为17年10月12日
        update emp set hiredate="17-10-12" where ename="simth";
    - 2.插入新员工lilei,工号1003,工资3000,奖金5000,上级领导编号1002
        insert into emp(empno,ename,sal,comm,mgr) values(1003,'lilei',3000,5000,1002);
    - 3.插入新员工zhangsanfeng,工号1004,上级领导编号1001,工资8000,奖金1000
        - 修改字段类型
        alter table emp modify ename varchar(20);
        insert into emp(empno,ename,mgr,sal,comm) values(1004,'zhangsanfeng',1001,8000,1000);
    - 4.插入新员工liuchuanfeng,工号1005,上级领导1004,入职时间18年01月22日,工资800,奖金2000
    
    - 5.修改zhangsanfeng的工资,修改为8500
    - 6.修改lilei的奖金,修改为2000
    - 7.修改liuchuanfeng的上级领导为1001,工资为3000
        update emp set mgr=1001,sal=3000 where ename='liuchuanfeng'
    

    DELETE语句

    - delete from 表名 where 条件
    - delete from emp where job is null;
    

    select * from 表名

    DDL--是对表本身操作的语句

    TRUNCATE语句

    - truncate删除表内容的原理
        先把整张表删除,然后重新创建一个表结构一模一样的空表
    truncate table 表名
    truncate table emp;
    

    DDL不支持事务,运行后马上执行,不能回滚

    DML支持事务

    作业

    1.把上课所有的代码重新敲一遍

    练习1:

    1. 创建员工表emp 2.创建部门表dept;

    练习2:

    1. 给dept表插入4条数据 10,'ACCOUNTING','NEW YORK' --财务部 纽约 20,'RESEARCH','DALLAS' --研究部 达拉斯市 30,'SALES','CHICAGO' --销售部 芝加哥 40,'OPERATIONS','BOSTON' --运营部 波士顿

    练习3:

    1. 创建 mydb 数据库,使用 utf8 编码
    2. 创建 t_item 商品表

    3. 在 t_item 表插入商品数据 7,'苹果',iphone X 9999 now()

    4. 修改 id 是7的商品,修改库存量为20
    5. 删除商品 7

    insert into emp values (1001,'hanmeimei','sal',1001,now(),3000,5000);

  • 相关阅读:
    vs2019 临时下载目录 离线安装 脱机安装
    直膝跳缓解腰椎间盘突出 腰疼 臀部肌肉疼痛
    fullscreen
    ubuntu 18.04 网络图标不见的问题解决方案
    采样率与比特率
    关于git的换行符问题
    在ASP.NET Core中使用EPPlus导入出Excel文件
    .net core 转 excel datatable list<t> 互转 xlsx
    .net core C# DataTable 和List之间相互转换的方法
    C# 的三种序列化方法
  • 原文地址:https://www.cnblogs.com/Graham-java/p/8343354.html
Copyright © 2011-2022 走看看