MySQL基础总结

概述

 什么是DB?:存储数据的仓库,本质就是一个文件系统。

 什么是DBMS?:操作和管理DB的大型软件。

 分类:Java相关的MySQL和Oracle,其他有DB2和SQLserver。

 DB中的表(类)、字段(属性)、函数(方法)、记录(对象)。

 记录一行信息,列代表字段。

 关系型DB:存放实体与实体之间关系的DB

 非关系型DB:存放的是对象(redisNO-sql)

 分类:定义DDL、操作DML、控制DCL、查询DQL

 字符一定要加引号。

表结构语句

 基本指令

  切换:use DB名;

  show database DB名;

  drop database DB名;

  查看表结构:desc 表名;

  查看正在使用的DB:select database();

  修改密码:mysqladmin -u用户名 -p旧密码 password 新密码

 修改表结构:

  增

   创建表:create table sort(id int,username varchar );

   增列:alter table 表名 add 列名 类型(长度) 约束;

   第一个位置添加可加first,指定之后可加after。

   增行:insert into 表名(列名1,列名2...) value (列值1,列值2...);

  删

   删列:alter table 表名 drop 列名

   删行:delete/truncate from 表名 where 条件;

   delete、truncate和drop的区别:

DROP用于删除表,数据库等.

    TRUNCATE和DELETE都是删除表数据.

    delete一条一条的删,主键不清空;DML

    truncate一次性删除,主键清零;DDL

  改

   改列名:alter table 表名 change 旧列名 新列名 类型 约束;

   改类型:alter table 表名 modify 列名 类型 约束;

   改表名:rename table 旧表名 to 新表名;

   改行:update 表名 set 字段名=字段值 where 条件;

  ***查

   select ... from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 ase|desc升降序

   查所有列:select * from 表名;

   查指定列:select 列名 from 表名;

   去除重复记录:select distinct 列名 from 表名;

   设置别名:select * from 表名 as 别名;

 插入到哪,从哪删除,修改什么,从哪查找。

 约束

  主键:标识当前记录(非空唯一):id int primary key;

  主键自动增长:id int primary key auto_increment;

  删除:alter table 表名 drop primary key;

  了解:mysql中常用的约束:主键约束(primary key) 唯一约束(unique) 非空约束(not null) 外键约束(foreign key)

 DOS中乱码问题:

  在mysql安装目录下有my.ini文件

  default-character-set=gbk 客户端编码设置

  character-set-server=utf8 服务器端编码设置

 条件语句where

  名字不为空:where name is not null;

  模糊查询

   "龙" 值为龙

   "%龙" 值以"龙"结尾

   "龙%" 值以"龙"开头

   "%龙%" 值包含"龙"

   "_"查询含有一个字符的内容

  模糊分页

   limit m,n

   m为下标,n为数据个数,下标从0开始

  聚合函数

   忽略null值,对一列进行运算

   sum(),avg(),max(),min(),count();

   【注意】不推荐使用,会降低执行效率,一般获取到数据,通过Java代码进行操作。

   统计n条记录:select count(*) from products;

  where和having的区别

   1.where 对分组前数据过滤 ;having 对分组后数据过滤

   2.where 后面不能使用聚合函数,having可以

 数据类型

  枚举:enumValue ENUM("北京","上海","广州","深圳")==int(4)

  集合:likes SET('AUGA3', 'AKM', 'M4A1', 'Kar98k')用二进制调用

 联表查询

  一对一,建议采用内联查询

  一对多,使用内联查询

  多对多,要加中间表去使用

你可能感兴趣的:(MySQL基础总结)