MySQL

作者: 宋song一 | 来源:发表于2018-09-09 18:55 被阅读7次

DBMS:DataBase Manager System 数据库管理系统
SQL:Structured Query Language 结构化查询语言

图形化数据库管理软件

Navicat
SQLyog

SQL分类

 DDL:数据定义语言,定义数据库/表结构:
        create创建, drop 删除,alter修改,truncate截断
DML:数据操纵语言,操作数据:
         insert插入, update更新,delete删除
DCL:数据库控制语言,控制权限相关:
        grant(授权),revoke(取消授权)
DQL:数据查询语言,查询数据
         select查询

DDL

创建DB
      CREATE DATABASE mydbl;
      CREATE DATABASE mydb2 CHARACTER SET utf8;
删除DB
      DROP DATABASE mysis;
修改DB(一般用于编码)
      ALTER DATABASE mydb2 CHARACTER SET gbk;
显示已有数据库
      SHOW DATABASES;    显示所有数据库
      SHOW CREATE DATABASE mydbl;  显示创建语句以及编码

字段类型

 java                                mysql

 int                                      int
 float                                    float
 double                              double
 char(字符)/String(字符串)       char/varchar    固定长度(即便长度不够,会补空格) | 可变长度 (数据多长,长度多长,必须指定)
 Date                    date(日期)|time(时间)|datetime (日期和时间)| 
 timestamp(日期时间 ,会自动使用当前时间):

 文件类型                     BLOB | TEXT : TEXT 文本类型 , BLOB 二进制类型

约束

单表约束: 
    主键约束: primary key 
    唯一约束: unique
    非空约束: not null

表格SingleTable

 * 创建数据表
 语法: create table 表名(字段名  类型(长度) 【约束】 , 字段名 类型(长度)[约束]);      
 * 显示数据表
 show tables ; -- 显示当前数据库的所有表
  desc  aa;  --查看具体某张表的结构
 show create table aa; --显示建表语句
 *修改:
     添加列: alter table 表名 add 列名 列的类型 
     重定义列: alter table 表名 modify 列名 新的类型
     修改列名: alter table 表名 change 旧的列名 新的列名 类型
     删除列名: alter table 表名 drop 列名
     修改表名: rename table 表名 to 新表名
 *表中数据
   insert ,delete,update
   表中数据:
  增加: insert into 名称 values(值1,值2,值3)         //添加行数据
            指定了列名,只需要插入对应列的值
    insert into 表名(sid,name) values(值1,值2)
  删除: delete from 名称 [where 条件]
  修改: update 表名 set 列名=值,列名=值 [where 条件]
  查询: select 输出的列名 from 表名 where 条件 group by 分组条件 having 分组之后的条件过滤 order by 排序的列名 asc|desc limit 起始索引(从0开始),显示几条    
 limit,分页
 -- 角标(起始索引)的算法 : (页码-1)*每页显示的数量
  * where 和 having
      where 分组之前执行的 , 不能接聚合函数
      having 与Group by 结合在一起使用的,分组之后执行的,可以接聚合函数

     *where条件的写法:
关系运算符: > >= = < <= != <>
逻辑运算符: and or not
其它运算符:
           is null 值为空
           is not nll
           in(范围) 判断是否满足这个范围条件
           between..and.. 是否中区间内
       模糊查询: like
             _   : 匹配单个字符
            %   : 匹配任意个数的字符
        ifnull(参数1,参数2) 非空判断

表格MultiTable

 多表之间的关系: 多张表之间的关系
 多表之间的关系约束: 向A表中插入的记录,需要存在于B表中
   -- 多表之间的关系,由什么来维护/约束 foreign key 外键约束
    -- 添加一个外键约束:
   --   修改  product 这张表 添加 外键约束(cno) 让它参考 category表中的cid字段
   alter table product add foreign key(cno) references category(cid);

多表之间的查询:

1.内连接查询:
    select * from A , B where A.字段 = B.字段  (隐式内连接)
    select * from A inner join B on A.字段 = B.字段 (显式内连接)
    
2.左外连接:
 以左表为基础,查询左表中的所有数据以及右表对应的记录,若右表没有对应的记录,则显示null
        select * from A left outer join B on A.字段 = B.字段
3.右外连接: 
     以右表为基础,查询右表中所有的记录以及左表对应的记录,若左表没有对应的记录,则显示null
    select * from A right outer join B on A.字段 = B.字段

子查询: 查询语句中嵌套查询语句
单行子查询: 子查询出来的结果只有一行
关键字: > >= = < <= != <>
多行子查询: 子查询出来的结果有多行
关键字: in , not in , any , all

TRUNCATE,DROP,DELETE的区别

   TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
 TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
 TRUNCATE,DELETE,DROP放在一起比较:
     TRUNCATE TABLE:删除内容、释放空间但不删除定义。truncate后自增长的ID列也会归零,以后插入记录ID从1开始
 DELETE TABLE:删除内容不删除定义,不释放空间。delete后再插入记录,ID会从上次最大的数字开始。
  DROP TABLE:删除内容和定义,释放空间。

相关文章

网友评论

      本文标题:MySQL

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