简单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. 出现异常, 事务回滚(失败)
    • 启动一个事务, 把country表中的数据全部删除, 再回滚
    • 再启动一个事务, 把country表中的数据全部删除, 再提交, 验证事务的结果
  • 预编译 :

    • 预编译 :提高效率和便于使用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. 表一旦丢弃 ,和表相关的所有对象都消失, 所有数据全消失. DDL语句不能撤销
  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. 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. and,or,not,逻辑运算符
  6. like, _, %, 仅限字符串
  7. between and;
  8. in(数据列表)
  9. =,>,<,>=,<=,比较运算符,普通运算结果为0表示假, 非0表示真
  10. 多表联接
  11. distinct
  12. order by
  13. 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 @变量名;
  14. 表联接
    • 内联接
      • join (inner) in;
    • 左外联接
      • left (outer) join in;
    • 右外联接
      • right (outer) join in;
  15. 分页 :
    select * from tablename limit (页码 - 1) * 每页记录数, 每页记录数;

猜你喜欢

转载自www.cnblogs.com/aishuijdemiaomiao/p/10035561.html
今日推荐