用户创建和授权
创建用户:create user ‘username’@’host’ identified by ‘password’
授权:grant all privileges on *.* to ‘username’@’host’ identified by ‘password’
刷新权限:flush privileges
撤销授权:revoke all on *.* from ‘username’@’host’
删除与用户:drop user ‘username’@’host’
数据库创建
创建一个新库:create database day;
删除一个库:drop database day;
创建表和删除
创建表:create table ‘表名’( )
删除表:drop table ‘表名’
增删改查操作
添加数据:insert into 表名 (列名1,列名2) values (值1,值2)
删除数据:delete from 表名 where 列名 = 值;
更新数据:update 表名 set 列名1=值,列名2=值 where 列名 = 值;
查询数据:select 列限定 from 表限定 where 行限定
更改表名、字段、添加删除字段
更改表名:alter table 原表明 rename 新表名
更改字段:alter table 表名 change 字段名 新字段名 类型
添加字段:alter table 表名 add 字段名 数据类型 字段位置(默认最后)
删除字段:alter table 表名 drop 列名
设置主键
create table day(
id int primary key,
)
create table day(
id int ,
primary key(id)
)
创建完后添加主键
alter table person3 add primary key(id)
外键
- 创建表时添加外键约束
create table teacher(
id int ,
name varchar(20),
primary key (id)
);
create table student (
id int ,
name varchar(20),
teacher_id int ,
primary key (id),
foreign key (teacher_id) references teacher(id)
);
- 创建完表之后,添加外键约束
alter table 表名 add foreign key (外键列列名) references 指向的表名 (主键列列名);
Between...and
语法 :
select 列限定 from 表限定 where 列名 between 值1 and 值1;
In
语法 :
select 列限定 from 表限定 where 列名 in(值1,值2....);
模糊查询like
其中 % 匹配任意个数的任意字符
_ 匹配单个任意字符
语法 :
select 列限定 from 表限定 where 列名 like '值' ;
Order by 排序
语法 :
select 列限定 from 表限定 order by 列名 asc/desc;
Asc : 升序
Desc : 降序
Limit
语法 :
select 列限定 from 表限定 limit 条数;
select 列限定 from 表限定 limit 开始值(不包含) ,条数;
单表查询(组函数)
MYSQL中有一类特殊的函数,用于统计,或者分组统计,
分组关键字使用 group by
常用组函数有 :
count(*) : 总条数
max(字段名) : 最大值
min(字段名) : 最小值
avg(字段名) : 平均值
sum(字段名) : 总和
语法 :
select count(*),max(字段名),min(字段名)... from 表名 group by 字段名;
子查询
场景一 : select后面
语法 :
select 字段名,(查询语句) from 表名;
当位于SELECT后面时,要注意
1.一定要在两个表之间找好对应关系(teacher.id必须是主键或者必须保证teacher.id在teacher表中是唯一的)
2.子查询中只能有一个字段(子查询的结果必须是一行一列)
使用子查询的时候,建议大家养成使用别名的好习惯,这样可以让我们的查询语句更加清晰。别名可以用来命令新字段,也可以用来命名新表.
场景二 : from后面
当位于FROM后面时,要注意
1.我们可以把子查询当成一张表
2.必须要有别名,因为子查询优先被执行,子查询的别名,可以让别的查询当做表或者列去操作
场景三 : where后面
当位于WHERE后面时,要注意
- 多条数据要用in而不要用=,如果确定子查询的结果为一行一列的话,就可以用 = 等于
- 如果返回结果为多行一列的话 要用 in , 一列是必须的,必须是一列
3.子查询中的SELECT后面只能有一个字段(多个字段的话会报错)
’