目录
数据库增删改查SQL语句
MySQL数据库指令
1.查询数据库
2.创建数据库
3.删除数据库
4.选择数据库
创建表table
查看所有表
创建表
查看指定表的结构
删除表
数据库命令进行注释
增删改查(CRUD)详细说明
增加
SQL库提供了关于时间的函数:now()
查询
查询表作列与列之间进行运算
select 列名, 列名+列名+列名 from 表名;
查询指定某列作为别名,使用关键字as
进行查询数据去重操作,使用关键字distinct
查询结果排序
指定条件查询 where
范围查找区别:between A and B (前闭后闭)
查询某个具体的数值:使用in来表示
模糊查找某个字符:使用like
分页查询,使用limit来查询
查询结果作为表新增的数据
SQL查询结果进行字符串截取:substring
SQL查询结果进行字符串拼接:concat
SQL查询结果进行字符大写:upper
聚合查询
数据求和:sum
计算平均值:avg
求某列的最大值和最小值 :max \ min
分组查询:group by
条件过滤:having \ where
计算表中行的数量:count
多表查询:join on
左外连接:left join 表 on
右外连接:right join 表 on
合并多表查询结果:union \ union all
数据库索引
查看索引
创建索引
删除索引
userlogin为表的名字
增:insert into userlogin values ('5','5');
删:delete from userlogin where username ='3';
改:update userlogin set username ='3' where pwd ='2';
查:select * from userlogi;
注意点:查询语句中的通配符 * 尽量不要使用,原因:数据量大时会降低查询效率,使用列名代替*,平时养成好习惯
show databases;(多个数据库用复数)
create database 数据库名 charset utf8;
(数据库名由字母、数字、下划线组成,数字不能在最前面)
注意:此处为database,后面没有s,创建数据库增加 charset utf8 可以使数据库插入中文,否则插入中文会报错
报错案例:
drop database 数据库名;
use 数据库名;
注意点(创建表前先选中具体某个数据库)
show tables;
create table 表名(列名 类型,列名 类型,列名 类型);
注意点:类型有int,varchar(),decimal(m,n) m指有m位有效数字,n指在小数点后有n位数字
desc 表名;
drop table 表名;
在SQL中可以使用“--空格+描述”来表示注释说明
Insert into 表名 (id,name,age) values(1, ‘小红’,111) 注意点:插入字符串时记得用分号’ ’隔开
注意点:一次插入多个记得用逗号,隔开
Select * from 表名;
Select 列名,列名 from 表名;
select 列名, 列名+列名+列名 from 表名;
对查询的结果需要进行排序时,可以使用order by asc(asc 可以默认不写) 即order by
对结果进行升序操作(由小到大):order by
对结果进行降序操作(由大到小):order by desc
注意点:(orde by 可以后面接别名,比如计算总和时,前面有as total ,后面可以order by total),Where 不能后面接别名
条件查询,可以直接拿两个列进行比较
示例:查询 语文成绩大于数学成绩的学生名单
select name from table where chinese > math;
举例:查询表前3条数据(此时默认从第一页查询)
如果想自定义从某一页查询,就使用offset
用法:substring(字符串,截取起始位置,截取字符数)
用法:concat(字符串1,字符串2,字符串3,......)
用法:upper(字符串)
sum求和只针对数字有效,无法对字符串进行求和,在对列进行求和时会自动跳过结果为null的行
avg能够计算某一列的平均值,使用方法和sum一样
avg还能搭配表达式一起使用
分组查询会把相同的列分在同一组中。
比如说如果需要计算某一个岗位的工资就需要把每一个岗位分在同一个组中,再来计算这个岗位的平均工资
where: 过滤指定的行
having: 过滤分组,与group by 连用
注意:group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where 语句,而需要用having
select count(*) from 表名;
注意:当涉及到多个数据计算时,使用count记得使用分组group by
从多个表中查询不同列数据时,此时就需要使用多表查询语句join on
语句用法:select *from 表1 join 表2 on 条件1 join 表3 on 条件2
示例:
select * from student join score on student.id = score.id join course on course.id = score.course_id;
先考虑 左表 和 中表 进行外连接,得到一个表“临时”,再拿这个“临时”表和 右表 进行外连接
left join ---- 左连接,以左边表的列为主,取两列的交集,对于不在右边列存在的列取null
左外连接:表1 left join 表2 on 连接条件,右边表(表2)返回与连接条件完全匹配的数据,左边表(表1)除了返回与连接条件匹配的数据以外,不匹配的数据也会返回;
right join ---- 右连接,以右边表的列为主,取两列的交集,对于不在左边列存在的列取null
右外连接:表1 right join 表2 on 连接条件,左边表(表1)返回与连接条件完全匹配的数据,右边表(表2)除了返回与连接条件匹配的数据以外,不匹配的数据也会返回
union 可以把多个表的查询结果进行合并,前提条件是多个结果列必须得一一对应。
union:对两个查询结果进行并集操作,自动进行去重,不包括重复行,即去掉重复结果后再显示
union all : 对两个查询结果进行并集操作,不会进行去重,包括重复行,即所有查询结果都会显示
show index from 表名;
create index 索引名 on 表名(列名);
drop index 索引名 on 表名;