数据库复习

数据库操作

登录数据库

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 外键名;
原文地址:https://www.cnblogs.com/lulujunsir/p/mysql.html