MySQL—增删改查命令
一、基本命令
【注意:下面的 []里面的内容可写可不写,具体看实际需要】
二、数据库
1、查看数据库
show databases;
2、使用数据库
use 数据库名称;
3、创建数据库
create database [if not exits] 数据库名称;
4、删除数据库
drop database [if exits] 数据库名称;
三、表
1、查看表格
show tables;
2、创建表格
create table 表名(
字段名1 数据类型[完整性约束条件][索引][注释],
字段名2 数据类型[完整性约束条件][索引][注释],
…
)[表类型][表字符集][注释];
3、删除表
drop table 表名;
4、查看表结构
desc 表名;
建表那里提一下:
【注意:完整性约束条件可以是:not null,primary key,auto_increment等
表类型:ENGINE=MYISAM/InnoDB…;
表字符集:charset=utf8;
注释:comment ‘注释内容’】
数据类型引伸一下下
数据类型可以是以下几种
1.数值类型
2.字符串类型
3.日期类型
4.NULL类型
表类型再引伸一下下
MYISAM 和 InnoDB 区别
四、修改表结构
1、修改表名
alter table 旧表名 rename 新表名;
2、添加字段
alter table 表名 add 字段名 列类型 [属性];
3、修改字段
alter table 表名 modify 字段名 列类型 [属性];
alter table 表名 change 旧字段名,新字段名 列类型 [属性];
4、删除字段
alter table 表名 drop 字段名;
5、外键
创表时增加外键
create table 表名(字段列表… ,[constraint 索引名] foreign key (本表的字段名) references 外表名(外表的字段名));
表已经存在时修改外键
alter table 表名 add [constraint 索引名] foreign key (本表的字段名) references 外表名(外表的字段名);
删除外键
alter table 表名 drop foreign key 索引名;
五、表内容的增删改查
1.插入
insert into 表名 (字段名1,字段名2…) values (字段名1,字段名2…);
2.修改
update 表名 set 列名=value where condition;
【condition :为筛选条件】
3.删除
delete from 表名 where condition;
truncate 表名;
二者区别:
truncate只删除表的内容,不删除表结构,索引,约束等,速度更快,恢复难
而delete删除所有,将删除的内容全部置空
4.查询
【as】:起别名
SELECT StudentNo AS “学号” FROM student;
SELECT a.StudentNo FROM student AS a;
SELECT Phone+1 AS Tel FROM student;
例如:select stu_id id,stu_name 名字 from student [where condition];
【distinct】:去重
select distinct 字段名1,字段名2… from 表名 [where condition];
【select语法】:
逻辑操作符
【between…and…】:范围
select 字段1,字段2…from 表名 where 字段 between 值1 and 值2;
【注意:左右都是闭区间】【like】:模糊查询
like “正则表达式”
【in】:在.中间,多替换or
select 字段1,字段2…from 表名 where 字段 in (值1,值2,…);
【group by 】:分组
group by 字段 [having 条件]:按照什么字段进行分组,如果想加条件,请在having语句后面写,不能随意写在where语句里
【order by】:排序
严格按照查询语句书写顺序
默认升序:asc,降序:desc
【limit】:限制显示个数
limit n:显示前n条数据
limit (m,n):显示从第m条数据往后数的n条数据
limit (m,n) 等价于 limit n offset m
关联
内关联
join 或 inner join :展示多个表能连接得上的数据(共同有的)
外关联
左连接:left join:会展示左表所有数据,右表能链接上的数据
右连接:right join:会展示右表所有数据,左表能链接上的数据
全连接:full join(mysql 5.8以后才有),相当于 左连接 union all 右连接
union和 union all区别:
使用union all 会把数据纵向拼接起来
union 是在union all的基础上去重
自连接
典型例子:
有一个category表,注意看这个是【拉链表:pid指向categoryId】
为了让它们自动分类,使用如下查询语句:select a.categoryName 分类,b.categoryName 专业 from category a join category b on a.categoryId = b.pid;