数据库操作
登录数据库
mysql -uroot -p
显示当前时间
select now()
退出
quit 或 exit 或 ctrl+d
查看所有数据库
show databases;
创建数据库
create database 数据库名 charset=utf8;
使用数据库
use 数据库名;
查看当前使用的数据库
select database();
删库
drop database 数据库名;
查看当前数据库中所有表
show tables;
创建表
create table 表名(
列名 数据类型 约束条件,
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女')
);
给表添加列名
alter table 表名 add 列名 数据类型 约束条件;
修改列的数据类型或约束条件
alter table 表名 modify 列名 字段新类型 约束条件;
修改列名和数据类型和约束条件
alter table 旧表名 change 旧表名 新表名 数据类型 约束条件;
删除列
alter table 表名 drop 列名;
查看建表SQL语句
show create table 表名;
查看建库SQL语句
show create database 数据库名;
删除表
drop table 表名;
查询所有列
select * from 表名;
查询指定列
select 列1, 列2 from 表名;
全列添加数据
insert into 表名 values (值1, 值n);
部分列添加数据
insert into 表名 (列1, 列n) values (值1, 值n);
全列多行添加数据
insert into 表名 values (值1, 值n), (值1, 值n);
部分列多行添加数据
insert into 表名 (列1, 列n) values (值1, 值n), (值1, 值n);
修改数据
update 表名 set 列1 = 值1, 列2 = 值2 where 条件;
物理删除数据
delete from 表名 where 条件;
逻辑删除数据
alter table 表名 add isdelete bit default 0; # 0为不删,1为删除
update 表名 set isdelete = 1 where id = 要删除的条目id值;
给列名起别名
select 列名 as 别名, 列名 as 别名 from 表名;
给表起别名(自连接必须给表起别名)
select 表别名.列名, 表别名.列名 from 表名 as 表别名;
去重
select distinct 列名 from 表名;
where
where > < = <= >= !=
查询没被删除
select * from 表名 where is_delete = 0;
and or not
where 条件 and or not 条件; # 可加括号
like模糊查询
select * from 表名 where 列名 like '王%'; # %匹配任意多个字符
select * from 表名 where 列名 like '王_'; # _匹配一个任意字符
范围查询
select * from 表名 where id between 3 and 8; # between...and表示在一个连续的范围内
判空查询
select * from 表名 where 列名 is null; # 也可以是 not null
排序查询
select * from 表名 order by 列1 asc|desc, 列2 asc|desc; # asc升序, desc降序。默认升序
分页查询
select * from 表名 limit 起始页码, 条目数;
分页查询第n页的数据
select * from 表名 limit (n-1)*m, m
求总条目数
select count(列名) from 表名;
求最大值
select max(列名) from 表名;
求最小值
select min(列名) from 表名;
求和
select sum(列名) from 表名;
求平均值
select avg(ifnull(列名)) from 表名;
分组查询
select 列名 from 表名 group by 列名;
内连接
select 列名 from 表1 inner join 表2 on 表1.列名 = 表2.列名;
左连接
select 列名 from 表1 left join 表2 on 表1.列名 = 表2.列名;
右连接
select 列名 from 表1 right join 表2 on 表1.列名 = 表2.列名;
自连接
select 表别名1.列名, 表别名2.列名
from 表1 as 表别名1
inner join
表2 as 表别名2
on
表别名1.列名 = 表别名2.列名
where
条件;
子查询
select * from 表名 where age > (select avg(age) from students);
添加外键约束
alter table 表名 add foreign key(被约束的列名) references 表名(列名);
删除外键约束
alter table 表名 drop foreign key 外键名;