查看数据库

show databases;

创建数据库

create database db5;

删除数据库

drop database db5;

创建表

CREATE TABLE student( 
	NAME VARCHAR(10) NOT NULL PRIMARY KEY, 
	age INT NOT NULL, 
	address TEXT NOT NULL 
	);

删除表

drop table student;

修改表

  1. 修改列名
Alter table 表名  change  列名  新列名 类型;

ALTER TABLE student CHANGE address base TEXT NOT NULL;
  1. 修改列的类型
Alter table 表名  modify  列名  新类型;

ALTER TABLE student modify base VARCHAR(20) NOT NULL;

----------------------数据查询(单表)-----------------------------

查询表中所有信息

select * from student;

查询表中指定列的信息

select name,age from student;

数据去重

select distinct 列…. From 表名;

拼接结果

select concat(列1,列2) from 表名;

SELECT CONCAT(NAME,age) FROM student;

flask mysql实现增删改查 mysql增删改查语句面试_sql

设置别名(注意:关键字as可以省略)

select 列 as 别名 from 表名;   
select 列 别名 from 表名;

条件查询

select 列… from 表名 where 条件;
  1. 条件中比较运算符:( 等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <> )
where 列  比较运算符  值;

where age=18;
  1. 逻辑运算符( 并且:and 或 && 或:or 非:not 或 ! )
where 条件1  逻辑运算符  条件2;  
where not 条件;
  1. 范围查询
where 列 between 条件1  and 条件2;          //列在这个区间的值
where 列 not between 条件1 and 条件2;    //不在这个区间
where !( 列 between 条件1 and 条件2 );     //同样表示不在这个区间
  1. 集合查询( 判断列的值是否在指定的集合中 )
where 列 in(值1,值2);          //列中的数据是in后的值里面的
where 列 not in(值1,值2);   //不是in中指定值的数据
  1. NULL值查询( 注意:列中值为null不能使用=去查询 )
where 列 is null;  //查询列中值为null的数据
  1. 模糊查询 %:表示0到多个字符
where 列 like '%0';   //表示以0结尾
where 列 like  '0%';   //表示以0开头
where 列 like  '%0%';   //表示数据中包含0
  1. _:表示一个字符,可多次使用,示例:
where 列 like '%0_';   //数据结尾第二位是0
  1. 分页查询( beginIndex:表示从第多少条数据开始 pageSize:表示每页显示的数据条数 )
where [条件] limit beginIndex,pageSize;
  1. 结果排序( 对查询出的结果按照一列或多列进行升序还是降序排列 升序:asc 降序:desc 注意:不能使用中文的别名排序)
where 条件 order by 列 [asc/desc]
  1. 分组函数( 注意:如果要对分组后的数据进行筛选,那么必须使用having关键字,条件写在having后 )
select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件
COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
MAX:  统计计算最大值
MIN:  统计计算最小值
SUM:  统计计算求和
AVG:  统计计算平均值

Where和having的区别:

Where: 先过滤已有的数据(数据是已经存在的),再进行分组,再聚集计算
Having:先分组,再对每组进行计算,根据得到结果在过滤(分组把数据算出之后,在过滤)
注意:使用having的时候,它是可以使用别名的。

----------------------数据查询(多表)-----------------------------

交叉连接

select *  from 表1,表2

内连接:

过滤为空的数据(查询的实际上是两张表数据的交集部分)
目的 :解决笛卡尔积现象,正确查询了需要的数据

select * from 表1,表2  where 表1.字段=表2.字段;  
//隐式内连接,使用where条件消除笛卡尔积

select * from 表1 [inner] join 表2 on 表1.字段=表2.字段;  
//显式内连接,如果是多张表,则一直在join..on后依次添加join..on即可,inner关键字可被省略

外连接:

  1. 左外连接、
select * 
from 表1 left [outer] join 表2 
on 表1.字段=表2.字段;   
//表1为左表,表2为右表,outer关键字可被省略
  1. 右外连接、
select * 
from 表1 right [outer] join 表2 
on 表1.字段=表2.字段;  
//表1为左表,表2为右表,outer关键字可被省略
  1. 全外连接
select 表1.字段1,表2.字段2 
from 表名 as 表1,表名 as 表2 
where 表1.字段1=表2.字段2

----------------------插入数据-----------------------------

insert into 表名(字段1,字段2..) values(值1,值2…);    

insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);     //插入多条数据【MYSQL】

insert into student(name,age) values(lqy,18);

----------------------修改数据-----------------------------

update 表 set 字段=值 where 条件;  //带条件修改指定数据,否则修改全表

update student set age=19 where name=lqy;

----------------------删除数据-----------------------------

delete from 表 where 条件;  //删除数据带条件指定数据,否则删除全表数据

------------------------索引----------------------------------

  1. 创建索引
CREATE INDEX 索引名称 ON 表名 (列名)
  1. 删除索引
DROP INDEX 索引名 ON 表名