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);

原文地址:https://www.cnblogs.com/Graham-java/p/8343354.html