概述
什么是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')用二进制调用
联表查询
一对一,建议采用内联查询
一对多,使用内联查询
多对多,要加中间表去使用