Bootstrap

数据库常用代码

用户创建和授权

创建用户: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)

外键

  1. 创建表时添加外键约束

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)

);

  1. 创建完表之后,添加外键约束

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后面时,要注意

  1. 多条数据要用in而不要用=,如果确定子查询的结果为一行一列的话,就可以用 = 等于
  2. 如果返回结果为多行一列的话 要用 in , 一列是必须的,必须是一列

3.子查询中的SELECT后面只能有一个字段(多个字段的话会报错)

;