如果你有幸看到这篇博客,那么请出门左转,因为博主很渣,这只是一篇笔记,没有大神独白
====================================数据库=============================
--显示所有数据库
show databases;
--显示打开数据库
select database();
--创建数据库
create datebase imooc;
--使用数据库
use imooc;
--查看警告级别
show warnings;
--显示数据库编码方式
show create database imooc; 数据库 编码
--修改数据库 编码
alter database imooc character set = utf-8;
--删除数据库
drop database imooc01;
--查看存储引擎
show engines;
===================================表==================================
--表 编码
show create table ss;
--创建表
create table ss(
name verchar(20),
age tinyint unsigned, 最小整数 无符号类型(没有负数)
salary float(8,2) unsigned 单精度(8位数,2位小数 )
);
--查询MySQL所有数据表的列表
show tables from mysql;
--查看数据表结构 也就是看列的属性
show columns from ss;
--插入数据
1.省略列名 必须为每列都赋值
insert ss values(值1,值2);
2.指定列赋值 未赋值的列为null
insert ss(列1,列2) values(值1,值2);
--查询表索引
show indexs from 表;
--删除表
drop table 表;
================================字段=====================================
auto_increment 自增 初始值:1
列级约束
primary key 主键 记录唯一 每张表只有一个主键
unique key 唯一约束 记录唯一 可以指定多个 可以为null
default 默认值 如没有为字段指定值 则为默认值
not null 不为空
表级约束
poreign keyp 外键约束
要求:1.父表 子表 使用相同存储引擎
2.禁止临时表
3.数据表的存储引擎只能InnoDB
4.外键列与参照列必须有相似的数据类型
5.外键列与参照列必须创建索引
操作定义:
cascade:父表删除更新 子表删除更新对应的行
set null:父表删除更新 子表外键列设置为null
restrict/no action: 拒绝对父表的删除更新
空、RESTRICT、NO ACTION
删除:从表记录不存在时,主表才可以删除。删除从表,主表不变
更新:从表记录不存在时,主表才可以更新。更新从表,主表不变
CASCADE
删除:删除主表时自动删除从表。删除从表,主表不变
更新:更新主表时自动更新从表。更新从表,主表不变
SET NULL
删除:删除主表时自动更新从表值为NULL。删除从表,主表不变
更新:更新主表时自动更新从表值为NULL。更新从表,主表不变
FOREIGN KEY(外键列) REFERENCES s1(参照列)
本表.外键列 对应 s1表(参照列)
===================================表操作=====================================
--插入单列
alter table 表 add 列名 列定义 插入位置(first/after 列名); 可以指定位置
--添加多列
alter table 表 add (列名1 列定义,列名2 列定义);
--删除列
alter table 表 drop 列;
--删除多列
alter table 表 drop 列1,列2;
--添加主键约束
alter table 表 add constraint 别名 primary key(约束列) 约束别名可写可不写
--添加唯一约束
alter table 表 add constraint unique (约束列)
--添加外键约束
alter table 表 add poreign (外键列) references(参照列); 需要满足外键约束的条件才能添加成功
--添加/删除默认约束
+:alter table 表 alter 列 set default 15;
-: alter table 表 alter 列 drop default;
--删除主键约束
alter table 表 drop primary key; 主键约束是唯一的 不需指定
--删除唯一约束
要先查询索引
alter table 表 drop index 索引;
--删除外键约束
先查询表编码 获取外键名
alter table 表 drop poreign key 外键名;
--修改列的定义 (如 int >>> tinyint) 注意:大类型》》小类型 数据丢失
alter table 表 modify 指定多列 定义;
--修改列名称+定义
alter table 表 change 指定列 新的名称 定义;
--修改表名
1.rename table 表名 to 新表名;
2.alter table 表名 rename 新表名;
===================================数据操作=========================================
--插入数据
1.INSERT test VALUES (1 ,'张三','123a',12),区别:可以多条插入
(2 ,'张三','123a',12);
2.INSERT test SET id='22',pwd='abc'; 单条插入 可以有子查询
3.INSERT test2(id) SELECT id FROM test; 把test表的id列 插入到test2表的id列
--单表更新
1.UPDATE test SET age=age+3; 所有age+5
2.UPDATE test SET age=age+3 where age=9; 按条件更新
--单表删除
1.DELETE FROM test ; 删除整个表数据
2.DELETE FROM test WHERE id=2; 按条件删除
where 条件
group by 分组
select * FROM test GROUP BY name; 根据 name 分组
having 分组条件
select * FROM test GROUP BY name HAVING name='张三'; 条件必须是 聚合函数 要么name在*中
--排序
select * FROM test ORDER BY id DESC ; 降序 去除“DESC”为升序
select * FROM test ORDER BY id DESC,age; 先根据“id”升序 相同id 按age降序
--限制返回结果
select * FROM test LIMIT 2,3; 从下标2开始 返回3个
select * FROM test LIMIT 3; 从下标0开始 返回3个
-- 比较大小时,子查询返回多个值 需要利用关键字比较
select * from test where id>= ANY (select id from test where id>3)
关键字
--------------------------------------
| any some all |
|------------------------------------|
|>.>= 最大值 最小值 最大值 |
|------------------------------------|
|<.<= 最大值 最大值 最小值 |
|------------------------------------|
| = 任意值 任意值 |
|------------------------------------|
|<>.!= 任意值 |
|------------------------------------|
待续。。。。。。