DDL操作(数据库 表 列)
增(create add)
数据库
create database 数据库名
create database if not exists 数据库名;
表
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
字段名3 数据类型3
)
最后一行不能加括号
列
alter table 表名 add 列名 数据类型;
删(drop)
数据库
drop database 数据库名
drop database if exists 数据库名
表
drop table 表名;
drop table if exists 表名;
列
alter table 表名 drop 列名;
改(modify change)
数据库
数据库无改操作
表
表无改操作
列
alter table 表名 modify 列名 新数据类型
alter table 表名 change 列名 新列名 新数据类型
查(show use select)
数据库
查询所有数据库
show databases;
使用数据库
use 数据库名称;
查看当前使用的数据库
select database();
表
查询当前数据库所有表名称
show tables;
查询表结构
desc 表名称
列
列无查操作
DML(data)
增(insert)
insert into 表名(列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3);
insert into 表名 values (值1,值2,值3),(值1,值2,值3);
删(delete)
delete from 表名 [where 条件]
不加where,所有数据都会被删除
改(update)
update 表名 set 列名1 = 值1,列名2 = 值2...[where 条件];
不加where,所有数据都会被修改
查(放在DQL语句中)
DQL
select
字段列表
from
表名列表
group by
分组字段
having
分组后条件
order by
排序字段
limit
分页限定
去除重复记录
distinct
起别名
as
模糊查询
_ 单个任意字符
% 任意个任意字符
升序
asc(默认)
desc(降序)
聚合函数
count(列名):count(*)
max(列名)
min(列名)
sum(列名)
avg(列名)
**注意:分组之后 查询的字段为聚合函数和分组字段,查询其他字段没有任何意义**
where是分组之前进行限定,having是分组之后对结果进行过滤
where不能对聚合函数进行判断,having可以
分页查询
select 字段列表 from 表名 limit 起始索引,查询条目数;
起始索引 = (当前页码-1) * 每页显示的条数
约束
非空约束 not null
建完表后
添加非空约束:
alter table 表名 modify 字段名 数据类型 not null;
删除非空约束
alter table 表名 modify 字段名 数据类型
唯一约束 unique
建完表后:
添加约束
alter table 表名 modify 字段名 数据类型 unique;
删除约束
alter table 表名 drop index 字段名
主键约束 primary key
建完表后
添加约束
alter table 表名 add primary key(字段名);
删除约束
alter table 表名 drop primary key;
检查约束 check(mysql不能用)
默认约束 default 默认值
建完表后
添加约束
alter table 表名 alter 列名 set default 默认值;
删除约束
alter table 表名 alter 列名 drop default;
外键约束 foreign key(外键列名) references 主表(主表列名)
建完表后
添加外键约束
alter table 表名 add constraint 外键名称 foreign key(外键字段名称) references 主表名称(主表列名称)
删除外键约束
alter table 表名 drop foreign key 外键名称;
内连接
隐示内连接
select 字段列表 from 表1,表2...where 条件;
显示内连接
select 字段列表 from 表1 [inner] join 表2 on 条件;
外连接
左外连接
select 字段列表 from 表1 left [outer] join 表2 on 条件;
右外连接
select 字段列表 from 表1 right [outer] join 表2 on 条件;
子查询
又称为嵌套查询
单行单列
作为条件值,使用= ! > <进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);
多行单列
作为条件值,使用in关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询);
多行多列
作为虚拟表
select 字段列表 from (子查询) where 条件;
事务
一组数据库操作命令,是一个不可分割的工作逻辑单元
要么同时成功,要么同时失败
开启事务
start transaction;
或者
begin;
提交事务
commit
回滚事务
rollback
执行成功提交事务,出现问题回滚事务;
以后是在java实现
mysql默认自动提交事务
select @@autocommit;
查询结果是1自动提交,结果是0手动提交
set @@autocommit = 0;