登录数据库:
mysql -uroot -p
显示当前时间:
select now();
登出数据库:
exit/quit/ctr+d
查看所有数据库
show databases;
创建数据库:
create database 数据库名 charset=utf-8;
使用数据库:
use 数据库名;
查看当前使用的数据库:
select database();
删除数据库
drop database 数据库名;
查看数据库内的表:
show tables;
创建表:
create table 表名(
字段名称 数据类型 可选的约束条件,
column1 datatype contrai,
…
);
修改表-添加字段:
alter table 表名 add 列名 类型 约束;
修改表-修改字段类型
alter table 表名 modify 列名 类型 约束;
修改表-修改字段名和字段类型
alter table 表名 change 原名 新名 类型及约束;
修改表-删除字段
alter table 表名 drop 字段名;
查看表结构:
desc 表名;
查看创建表的sql语句:
show create table 表名;
查看创建库的sql语句:
show create database 数据库名;
删除表:
drop table 表名;
查询数据:
–查询所有列
select * from 表名;
–查询指定列
select 列1,列2,… from 表名;
添加数据:
–全列插入
insert into 表名 values(…);
–部分列插入
insert into 表名(列1,…) values(值1,…)
–全列多行插入
insert into 表名 values(…),(…)…;
–部分列多行插入
insert into 表名(列1,…) values(值1,…)(值1,…)…;
修改数据:
update 表名 set 列1=值1,列2=值2… where 条件;
删除数据:
delete from 表名 where 条件
以上的删除方式都是物理删除,建议多使用逻辑删除 而并非物理删除
逻辑删除:添加标识字段 比如1代表未删除 0代表已经删除
起别名:
as
去除重复数据行:
select distinct 列1,… from 表名;
排序查询:
select * from 表名 order by 列1 asc|desc [,列2 asc|desc,…]
asc:升序
desc:降序
分页查询:
select * from 表名 limit start,count;
limit:是分页查询关键字
start:表示开始行索引2,默认是0可不写
count:表示查询条数
聚合函数:默认忽略字段为null的记录,要想列值为null的记录也被计算,就要用ifnull函数对null值做替换
count(col):表示求值列的总行数
max(col):求指定列最大值
min(col):求指定列最小值
sum(col):求指定列的和
avg(col):求指定列的平均值
分组查询:
group by 列名1,… [HAVING 条件表示] [WITH ROLLUP]
列名:是指按照指定字段的值进行分组
HAVING 条件表达式:用来过滤分组后的数据
WITH ROLLUP:在所有记录的最后一条记录,显示select查询时聚合函数的统计和计算结果
内连接查询:
select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
左连接查询:
select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2
右连接查询:
select 字段 from 表1 right join 表2 on 表1.字段1 = 表2.字段2
自连接查询:
自连接查询必须对表起别名 就是把一张表模拟成两张表
事务:要用InnoDB引擎
索引:
查看索引:主键列会自动创建索引,外键约束这个字段也会创建索引
show index from 表名;
索引的创建:索引名不指定,默认使用字段名
alter table 表名 add index 索引名可选;
索引的删除:
如果不知道索引名,可以查看创表sql语句
show create table 表名;
alter table 表名 drop index 索引名;