暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

删库跑路必备语法-Mysql基础语法(增、删、改、查)

小小IT仔 2021-04-07
664

Mysql基础语法

database

1.创建数据库

create databse 数据库名;

2.查看数据库

show databses;
show create database 数据库名;

3.删除数据库

drop database 数据库名;

4.修改数据库字符集

alter database 数据库名 character set utf8 collate utf8_bin;

table

1.创建表

create table 表名 
(
字段1 int,
字段2 varchar(20),
字段3 int,
字段4 int,
字段5 date
);

2.查看表结构

show tables;#查看该数据库下的所有表
show create table 表名;#查看这个表的创建语句
desc 表名;#查看这个表的结构

3.修改表结构

alter table user  add 新字段 int;#增加字段
alter table user modify 要修改类型的字段 varchar(20);#修改字段类型
alter table user drop 字段;#删除字段
alter table user change 旧字段名 新的字段名 varchar(20);#修改字段名称
rename table 旧的表名 to 新的表名;#给表重命名

4.删除表

drop table 表名;

5.插入数据

insert intovalues(字段1的值,字段2的值,字段3的值,字段4的值);#向表中所有字段插入值
insert into(字段1,字段3,字段4) values (值_1,值_3,值_4);#给表中的部分字段插入值

6.删除表中的数据

delete fromwhere 字段 =;#删除字段值=**的数据
delete from;#删除表中的所有数据
truncate;#删除表中的数据并创建一个一样的空表
start transaction;#开始事务
delete fromwhere 字段=;#删除字段值为**的数据
rollback;#回滚,值恢复

7.查询【select 字段1,字段2 from 表 where 条件】

select * from 表名;#查表中所有信息
select 字段1,字段2,字段3 from;#查询部分字段
select distinct 字段1,字段2,字段3 from;#查询相关字段,去掉重复值

7.1 查询-设置字段别名

select 字段1 as '别名',字段2 as '别名' from;#查询相关字段并设置别名
select 字段1 '别名',字段2 '别名' from;#查询相关字段,并设置别名 as可以省略
select 字段1+as '别名',字段2+as '别名' from;#查询相关值并做计算
select 字段1 as "别名",字段2+字段3 as "别名" from;#查询相关值并做计算

7.2 条件查询 where 后的语句
【in、like、and 、or】

in --代表的范围
select * fromwhere 字段 in (1,2,3);
like --模糊匹配查询like "值_" like "值%"
select * fromwhere 字段 like "值%"
and or
select * fromwhere 字段1>and 字段2 like "值%"
select * fromwhere 字段1 <or 字段2 <;
select 字段1 别名,字段2 as 别名 fromwhere 字段3 >;#条件查询

7.3 查询–对结果进行排序order
【select 字段1,字段2 from 表 order by 字段 asc/desc】

select * fromorder by 字段 asc;#对该字段进行升序排序
select * fromorder by 字段 desc;#对该字段进行降序排序
select 字段1 as 别名 ,(字段2 +字段3) as 别名 fromorder by (字段2+字段3desc;#按该字段进行降序排序
select 字段1 as 别名 ,字段2 ,字段3 fromorder by 字段2 desc,字段3 desc;#多种排序规则
select 字段1,字段2 fromwhere 字段3 like "值%" oder by 字段1 desc;

7.4 聚合函数
【求数量、求和、平均值、最大值、最小值】

count() 求数量
select count(*) from;#统计数量
select count(字段) from;#统计数量
select count(字段) fromwhere 字段 >字段;#统计符合条件的数量
select count(*) fromwhere (字段1+字段2) > 270;#统计符合条件的数量
sum() 求和只对数值类型有效
select sum(字段) from;#这个班级所有人数学成绩和
select sum(字段1),sum (字段2) from;#分别统计字段和
select sum(字段1+字段2) from;#统计字段和
select sum(字段1)/count(*) from;#统计该字段平均分
avg()平均
select avg(字段) from;
max()最大
select max (字段) from;
min()最小
select min (字段) from;

7.5 分组查询
【group by 】【having 】

select * fromgroup by 字段;#按字段分组
select count(*) fromgroup by 字段;
select * fromgroup by 字段;
select sum(字段1) fromgroup by 字段2;
select sum(字段1) fromgroup by 字段2 having 字段
条件;

8.多表的查询
8.1 单表的约束(主键)

【非空、唯一、被引用】
【主键的声明 primary key
【测试主键】
create table 表(
字段1 字段类型 primary key,
字段2 字段类型,
);
insert intovalues(1,值2);

【主键的**自动增长**
自动增长只能是int,bigint类型
关键字 auto_increment
create table 表(
字段1 类型 primary key auto_increment,
字段2 类型
);
insert intovalues(null,1)
insert intovalues(null,2)

8.2 多表约束(外键)

【保证表数据的完整性】
create table dept(
did int primary key auto_increment,
dname varchar(20)
);
create table emp(
eid int primary key auto_increment,
ename var char(20),
sal double,
dno int
);
insert into dept values(1,'it');
insert into dept values(2,'hr');

insert into emp values(1,'迪迦',10000,1);
insert into emp values(2,'雷欧',19990,2);
delete from dept where did=1;#可以正常删除

添加外键------映射到另外一个表的主键上并取值

create table dept(
did int primary key auto_increment,
dname varchar(20)
);
create table emp(
eid int primary key auto_increment,
ename var char(20),
sal double,
dno int
foreign key (dno) references dept (did)#添加外键
);
insert into dept values(1,'it');
insert into dept values(2,'hr');

insert into emp values(1,'迪迦',10000,1);
insert into emp values(2,'雷欧',19990,2);

insert into emp values(3,'雷欧',19990,3);#将会报错
delete from dept from where did =1;#将会报错

9 . 多表设计
一对一 一对多 多对多
9.1一对多
主表(一方),从表(多方)
建表原则:在多方表中添加字段,把该字段作为外键,指向一方表的主键

9.2多对多
场景:订单表 -----商品表 用户表—角色表
建表原则:用户表和角色表举例,都需要创建一张中间表,存储数据关系

9.3 多表查询
准备实验表

MariaDB [db1]> create table dept(
-> did int primary key auto_increment,
-> dname varchar(22)
-> );
Query OK, 0 rows affected (0.06 sec)

MariaDB [db1]> create table emp(
-> eid int primary key auto_increment,
-> ename varchar(22),
-> sal double,
-> dno int,foreign key emp(did) references dept(did)
-> );

【笛卡尔积—两个表乘积】

语法:select * from1,表2

【多表查询–内链接】
普通内链接
关键字:表1 inner join 表2 on 条件;

语法:select * from1 inner join2 on1.字段=2.字段;

测试语句:select * from dept inner join emp on dept.did=emp.dno;


隐式内连接

语法:select...from1, 表2 where1.字段=2.字段;

测试语句:select  * from dept,emp where dept.did=emp.dno;
设置别名:select * from dept d,emp e where d.did=e.dno;
指定字段 :select d.dname,e.ename,e.sal from dept d,emp e where d.did=e.dno;


【多表查询-外链接】
左外链接、右外链接
左外链接

语法:select * from1 left outer jion 表2 on 条件;outer可省略

举例:select * from dept left join emp on dept.did=emp.dno;

右外链接

语法:select * from1 right outer jion 表2 on 条件;outer可省略

举例:select * from dept right join emp on dept.did=emp.dno;


内链接与外链接的区别

举例
往emp、dept表中增加数据




9.4 子查询

select * fromwheresql查询语句);

一次查询的结果作为另一次查询的语句
举例,查出年龄小于平均年龄的的人员信息。

10.图形界面----navcat


文章转载自小小IT仔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论