• 简单mysql汇总


    概念

    数据库模型

    • mysql 服务器工作模式
      • Tcp服务器
        • 数据库(目录)
          • 数据(记录)
    • 表类似java中的一个类
    • 记录类似java中对象对象

    对数据基本操作

    • c - 创建数据库表 - insert
    • R - 访问数据 - select
    • U - 更新数据 - update
    • D - 删除数据 - delete

    SQL语言特点

    1. 查询出来的是虚表,并非真是存在的。
    2. 大小写不敏感。
    3. 可以起别名,列名,表名。

    mysql数据特点

    1. 本地磁盘有直接的目录直观体现。
    2. 数据库中有多张表,多个表为一个文件
    3. 表中多个列, 多个记录
    4. 常见客户端
      1. mysql客户端
      2. jdbc
    5. 数据库对象
      1. 数据库,表,列,约束,索引,存储过程,视图,触发器,事件,函数,预编译
    • DDL,数据定义语言:操作数据库相关语言
    • DML,数据操作语言, CRUD操作,create,select,updata,delete

    具体知识点

    • 变量,sql语法中的变量和java类似
      • 声明,无数据类型,弱类型:
        • set @var = 200;
      • 查询
        • select @变量名;
    • 函数
      • 单行函数:作用于集合中的每一行数据
        • substr,字串,concat,字符串联接
      • 多行函数,组函数,聚集函数,结果只有一个。
        • max,min,sum,avg,count等统计运算.
    • 主键
      • 每一列的关键值
      • 唯一
      • 不为空
    • 执行顺序
      • from, join, on, where, group by, select, having, order by, limit
        • 先确定基表
        • 联接基本
        • 内联外联
        • 有联接必须有条件on
        • 过滤行 where
        • 分组 group by
        • select 后面加上, 后面需要什么
        • 过滤表having
        • 排序order by;
        • 分页显示
    • 子查询
      • 查询中嵌套查询
      • 先查询子查询
      • where 条件里面括起来
      • 子查询的结果被主查询
      • 子查询结果就是虚表,可以进行联接,比较,查询等。
      • 解决一次查询不能解决问题的情况,子查询先于主查询执行
      • 关键字
        • in, 等于列表任意一个值
        • any, 任意一个
        • all, 全部
    • innodb 是数据库引擎
      • innodb 支持事务,外键等高级特性,是当前默认引擎,速度较快,
      • myisam 不支持事务,不支持外键,是早期默认引擎,速度超快, 一个表三个文件
      • 每个表支持设置数据引擎类型,show可查看所有引擎,show create可查看当前表引擎
    • 创建表
      • 基于子查询建表,把虚表变实表
      • 表复制,只能复制列和数据,不能复制主键和外键
      • 表克隆
        • create table country4 like wold.country;
    • alter table:修改表结构
      • 添加列,alter table 表名 add 新列名 数据类型 其他类型
      • 修改列,alter table 表名 modify 列名 新数据类型 新长度 新其他选项
      • 丢弃列,alter table 表名 drop 列名;
      • 重命名列,alter table 表名 change 老列名 新列名 新数据类型 新长度新选项
      • 修改表名,alter table 表名 rename to 新表名
    • 表中数据类型
    int bigint char varchar double decimal date time datetime longtext
    定常字符串 变长字符串 双精度浮点 定点数 日期 时间 日期时间 超大文本
    • 事务 : 一系列的DML语句被当作一个整体来处理执行, 如果全部执行成功, 就可以提交, 如果有任何失败,就要回滚, 全部失败

      • 启动事务

        1. set autocommit = false; // 设置自动提交为假
        2. start transaction; 或 begin;
      • 结束事务

        1. commit;成功, rollback; 失败 (DCL - 数据控制语言)
        2. 执行了一个DDL语句, 事务提交(成功)
        3. 会话正常结束, 事务提交(成功)
        4. 出现异常, 事务回滚(失败)
    • 预编译 :

      • 预编译 :提高效率和便于使用prepare 预编译体名称 from 'SQL';
        - 创建预编译
            prepare 
            	p1 
            from 
            	'select * from teacher';
        - 执行预编译 
            execute 预编译体名称;
        - 丢弃预编译
            drop prepare 预编译体名称;
    
    • 约束
      • not null 表示非空,必须是列级约束, 一张表中可以有多个非空键
      • unique 表示唯一,可以是列级也可以是表级, 允许有null值, 并且一张表中可以多个唯一键
      • primary key 表示主键, 可以是列级也可以表级, 一张表中必须只能有一个主键.
      • 外键约束时, 默认情况下父表中的被引用的记录不可以删除
        • 在添加外键时,可以指定父表中被引用的记录的处理选项
            alter table classes 
            add constraint myfk2 foreign key(master) references teacher(id) on delete [do nothing(默认选项)][cascade(级联), set null(设置为null)];
    

    具体命令汇总

    登陆,改密

    1. set password for 'root'@'locahost' = password('123456');
    2. mysql -uroot -p123456

    数据库操作

    1. show databases ;
    2. show tables from 数据库名;
    3. create database 数据库名;
    4. use 数据库名;
    5. source d:/mywork/mysql/company.sql;
    6. drop database 数据库名;
    7. set names gbk;
    8. ``:飘号,对数据库名进行包围;
    9. select database();

    表操作

    1. show tables;
      1. show tables from 数据库名;
      2. show create table 表名;(查看表的最详尽信息)
      3. show engines;
      4. show create talbe 表名;
    2. describe 表名;
      1. desc 表名;
      2. desc 库名.表名;
    3. create
      1. create table customer( id int, name varchar(20), age int, phone varchar(20) );
      2. create table country4 like wold.country;
        1. insert into country4 from select * from wold.country;
      3. create select ...
    4. drop table 表名;
      1. 表一旦丢弃 ,和表相关的所有对象都消失, 所有数据全消失.
    5. truncate table 表名, 清空表,是一个DDL语句, 不能撤销, 但是效率高, 速度快, 直接释放空间.
    6. if exists 表示存在,if not exists 表示不存在
      1. drop table if exists 表名1,表名2, ...;
    7. 修改表结构
      1. alter
        1. alter database school charset utf8;
        2. create database if not exists school charset gbk;
        3. primary key 是主键约束,非空加唯一组合
        4. 添加主键, 丢弃主键,
          1. add primary key(主键的列名) drop primary key();
        5. 添加列,alter table 表名 add 新列名 数据类型 其他类型
        6. 修改列,alter table 表名 modify 列名 新数据类型 新长度 新其他选项
        7. 丢弃列,alter table 表名 drop column 列名;
        8. 重命名列,alter table 表名 change 老列名 新列名 新数据类型 新长度新选项
        9. 修改表名,alter table 表名 rename to 新表名
        10. alter table classes
          add constraint myfk2 foreign key(master) references teacher(id) on delete [do nothing(默认选项)][cascade(级联), set null(设置为null)];

    数据操作

    1. CRUD,create 添加数据,read读取数据,update修改数据,delete删除数据
      1. insert
        1. insert into 表名(列名1, 列名2, ...) values(值1, 值2, ....);
        2. insert into 表名 from (select * from 表名 where 筛选条件)
      2. update
        1. update 表明 set 列名1 = 新值1, ...where 过滤行;
      3. delete
        1. delete from 表名 where 过滤行;
      4. select
    2. ///////////////////////////////////////////////////////select表达式///////////////////////////////////////////////////////////
    3. select * from 表名 where 限制条件
    4. as: 给列起别名,as关键字可以省略,如果别名中有空格, 必须用""包围起来
    5. like, _, %, 仅限字符串
    6. between and;
    7. in(数据列表)
    8. and,or,not,逻辑运算符
    9. =,>,<,>=,<=,比较运算符,
    10. 普通运算结果为0表示假, 非0表示真
    11. 多表联接
    12. distinct
    13. order by
    14. select扩展操作
      1. select database(); 查看当前工作数据库
      2. select version(); 查看服务器版本
      3. select now(); 查看服务当前时间
      4. select database(), version(), now() from 数据库名; 多查询个信息,并查询其他库
      5. select 100, 'abc'; 查看常量
      6. select 123-5/35216*464114+55266; 查看表达式
      7. select @ab; 查看变量
        1. 变量,sql语法中的变量和java类似
        2. 声明,无数据类型,弱类型:
          • set @var = 200;
        3. 查询
          • select @变量名;
    15. 表联接
      • 内联接
        • join (inner) in;
      • 左外联接
        • left (outer) join in;
      • 右外联接
        • right (outer) join in;
    16. 分页 :
      select * from tablename limit (页码 - 1) * 每页记录数, 每页记录数;
  • 相关阅读:
    【UML九种图系列】之用例图
    数据结构之后缀数组
    Web Service实例——天气预报
    庞果网 合法字符串
    web 版发送邮件-已删除
    C语言实现双向链表删除节点、插入节点、双向输出等操作
    [置顶] String StringBuffer StringBuilder的区别剖析
    N!末尾有多少个零
    细说业务逻辑 -- 丢失的业务逻辑层
    你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
  • 原文地址:https://www.cnblogs.com/refengqingfu/p/10035561.html
Copyright © 2020-2023  润新知