sql基本语言使用

命令行基本语法

  • 连接mysql
    语法:mysql -u用户名 -p密码
    例子:mysql -uroot -p123456
    注意:-u和-p参数后面没有空格
  • 查看当前已有数据库
    语法:show databases;
  • 连接数据库
    语法:use 数据库名称;
  • 查看当前数据库下所有的表
    语法:show tables
  • 查看当前连接的数据库
    语法:select database();
  • 创建数据库
    语法:create database 数据库名称 charset=字符集;
    例子:create database test charset=utf-8;
    解释:创建一个test名称的数据库,字符集为utf-8格式
  • 删除数据库
    语法:drop database 数据库名称;
    例子:drop database test
  • 查询表结构
    语法:desc 表名;
  • 查询创表语句
    语法:show create table 表名;

-建立表

  • 语法:create table 表名(字段 字段类型);
    例子:create table test001(num int,str varchar(30), float decimal(6,2));
    解释:建立一个名为test001的表名并增加nun(数字类型),str(字符串类型限制最多30个字符),float(小数类型)这个3个字段

删除表

  • 语法:drop table 表名;
    例子:drop table test001;
    解释:删除表名为test001的表

如果有就删除表

  • 语法:drop table if exists 表名;
    例子:drop table if exists test001;
    解释:假如有表名为test001的表就删除

添加数据

  • 语法:insert into 表名 values(数据1,数据2);
    例子:insert into test001 values(1,"2",3.3);
    解释:在test001的表中添加数据

修改数据

  • 语法:update 表名 set 要修改的字段 where 条件1;
    例子:update test001 set str=5 where num=1;
    解释:在test001的表中查找字段num=1的数据,并修改它的str字段数据为”5“

删除数据

  • 语法:delete from 表名where 条件1;
    例子:delete from test001 where num=1;
    解释:在test001的表中查找字段num=1的数据,并删除它

查询表内的数据

  • 语法: select * from 表名;
    例子:select * from test001;
    解释:查询表名为test001的所有数据

查询某一字段的所有数据

  • 语法: select 字段名 from 表名;
    例子:seelct str from test001;
    解释:在test001表中查询字段为str的所有数据

  • 又或者查询表中字段1和字段2的所有数据
    例子:seelct str,num from test001;
    解释:在test001表中查询字段str和num的所有数据

条件查询

  • 语法:select * from 表名 where 条件
    例子1:select * from test001 where num=1 and str="1";
    解释:在test001表中查询num=1并且str="1"的数据
    例子2:select * from test001 where num=1 or str="1";
    解释:在test001表中查询num=1或者str="1"的数据
    例子3:select * from test001 where not num=1 ;
    解释:在test001表中查询非num=1的数据

去重查询

  • 语法:select distinct(字段) from 表名;
    例子:select distinct(str) from test001;
    解释:在test001表中查询str字段的数据并去重

模糊查询

  • 语法:select * from 表名 where 字段 like "%包含的数据"
    例子1:select * from test001 where str like "%9";
    解释:在test001表中查询str字段中以9结尾的数据
    例子2:select * from test001 where str like "9%";
    解释:在test001表中查询str字段中以9开头的数据
    例子3:select * from test001 where str like "%9%";
    解释:在test001表中查询str字段中包含9的数据
    例子3:select * from test001 where str like "_9";
    解释:在test001表中查询str字段中2个字符并以9结尾的数据(_为占位符,比如"_服"只能匹配衣服或者汉服,无法匹配搭配到潜水服,但是有2个占位符就只能能匹配到潜水服,比如"__服")

索引值查询

  • 语法:select * from test001 limit 起始索引值,结束索引值
    例子:select * from test001 limit 4,9
    解释:查询test001表中第5行到第10行的数据(注意:索引值是从0开始的)

升序或者降序查询

  • 升序查询
    语法:select * from 表名 order by 字段 asc;
    例子:select * from test001 order by num asc;
    解释:在test001表中查询num字段数据并以升序排列
    降序查询
    语法:select * from 表名 order by 字段 desc;
    例子:select * from test001 order by num desc;
    解释:在test001表中查询num字段数据并以降序排列
    升序与降序配合使用
    语法:select * from 表名 order by 字段 desc,字段2 asc;
    例子:select * from test001 order by num desc,float asc ;
    解释:在test001表中查询num字段数据并以降序排列,假如num数据相同就以float字段进行升序排列

常用函数

  • 获取字段的行数
    语法:select count(字段) from 表名 ;
    例子:select count(str) from test001 ;
    解释:在test001表中获取字段str的行数(若数据为空不计入其中比如null)
    获取字段最大值
    语法:select max(字段) from 表名 ;
    例子:select max(num) from test001 ;
    解释:在test001表中获取字段num的最大值
    获取字段最小值
    语法:select min(字段) from 表名 ;
    例子:select min(num) from test001 ;
    解释:在test001表中获取字段num的最小值
    获取字段平均值
    语法:select avg(字段) from 表名 ;
    例子:select avg(num) from test001 ;
    解释:在test001表中获取字段num的最平均值
    获取字段数值总和
    语法:select sum(字段) from 表名 ;
    例子:select sum(num) from test001 ;
    解释:在test001表中获取字段num的数值总和

-分组

  • 语法:select sum(num) from 表名 group by 字段;
    例子:select sum(num) from test001 group by num;
    解释:在test001表中根据字段num进行分组并查询它们的总和
    一般用法
    一般配合函数一起使用
    例子1:select max(num) from test001 group by num;
    解释:在test001表中根据字段num进行分组并查询它们的最大值

  • 假如需要在分组时使用条件查询则使用having来进行条件筛选
    例子2:select max(num) from test001 group by num having num!=8;
    解释:在test001表中只有num!=8时才对num 字段进行分组并查询它们的最大值

别名

  • 语法:select 字段 as "数字" from 表名;
    例子:select sum as "数字" from test001
    解释:查询test001表中字段为sum的所有数据,并将此字段别名设置为数字
    例子2
    例子:select sum as "数字" ,float as "浮点数"from test001
    解释:查询test001表中字段为sum与float 的所有数据,并将此字段别名分别设置为数字和浮点数

连接查询

  • 内连接查询
    显示两张表存在对应关系的数据,无对应关系的不显示
    语法:select * from 表一 inner join 表2 on 表一.字段=表二.字段;
    例子:select * from test001 inner join test002 on test001.sun=test002.sun;
    解释:查询test001并显示test001中sun字段在test002表中sun所对应的数据
    例如表一test001为:
    在这里插入图片描述
    表二test002为:
    在这里插入图片描述
    那么select * from test001 inner join test002 on test001.typ = test002.typ;的结果为:
    在这里插入图片描述

左连接查询

  • 以左表为主表显示两张表存在对应关系的数据,无对应关系的也显示(null占位)
    语法:select * from 表一 left join 表2 on 表一.字段=表二.字段;
    例子:select * from test001 left join test002 on test001.sun=test002.sun;
    解释:查询test001并显示test001中sun字段在test002表中sun所对应的数据
    例如表一test001为:
    在这里插入图片描述
    表二test002为:
    在这里插入图片描述
    那么select * from test001 left join test002 on test001.typ = test002.typ;的结果为:
    sda1
    右连接查询
  • 以右表为主表显示两张表存在对应关系的数据,无对应关系的也显示(null占位)
    语法:select * from 表一 right join 表2 on 表一.字段=表二.字段;
    例子:select * from test001 right join test002 on test001.sun=test002.sun;
    解释:查询test001并显示test001中sun字段在test002表中sun所对应的数据
    例如表一test001为:
    在这里插入图片描述
    表二test002为:
    在这里插入图片描述
    那么select * from test001 right join test002 on test001.sun=test002.sun;的结果为:
    在这里插入图片描述
    注意:
    1.连接操作实质:连接查询是通过连接的方式来进行查询,形成数据源
    2.连接操作完成之后,之前的所有查询语法,都可以继续使用
  • 比如在连接查询之后需要继续条件筛选那么就可以使用以下语法
    select * from test001 right join test002 on test001.sun=test002.sun where test001.str="99";
    注意的是字段的变化,需要指定是哪个表1的哪个字段比如 需要过滤 test001表的str字段,那么
    where str="99"就要写成test001.str="99"
  • 又或者在连接查询之后需要进行降序排序那么就使用以下语法
    select * from test001 right join test002 on test001.sun=test002.sun order by test001.str desc;

自关联查询

  • 在一张表内,至少存在2列字段具备对应关系,即可使用自关联,通过起别名的方式将一张表变更成为两张表
    语法:select * from 表1 别名1 inner 表1 别名2 on 别名1.字段1 = 别名2.字段2;
    例子:select * from test001 t1 inner join test001 t2 on t1.bianma=t2.pid;
    解释:查询test001表bianma字段与pid字段相同的数据
    表1为:
    在这里插入图片描述
    那么select * from test001 t1 inner join test001 t2 on t1.bianma=t2.pid;的结果为:
    在这里插入图片描述

子查询

  • 子查询,就是在一个查询中嵌套了其他若干查询
    语法:select * from 表1 where 字段 > (select avg(字段) from 表1) ;
    例子:select * from test001 where sum > (select avg(sun) from test001);
    解释:查询test001表sum字段中大于平均值的数据

索引——减少查询时间

  • 语法:create index 索引名称 on 表名(字段);
    例子:create index a1 on test001(num);
    在查询前添加索引能大幅度减少查询时间
    查看索引
    语法:show index from 表名;
    删除索引
    语法:drop index 索引名称 on 表名;

事务

  • 定义:所谓事务可以称之为一个操作序列,一系列操作要么都执行,要么都不执行,对于数据库来件,对于数据库的操作行为,要么都实现要么都不实现,最终需要确保写入到数据库的数据的一致性、
    前提:数据库的引擎类型必须是innodb(可以通过查看创表语句来确定show create table 表名;)
    开始事务语法:begin;
    提交事务语法:commit;
    退出事务语法:rollback;

视图
定义:能够封装sql语句,类似以表的形式存在(类似python封装函数)
创建视图语法:create view 试图名称 as 语句;
使用视图语法:select * from 视图名称;
删除视图语法:drop view 视图名称;
例子:create view v_test as select * from test;
结果:在视图分组内查看该视图的结果
在这里插入图片描述

例如其他用法:

  • 创建视图
    create view v_test002 as select price from test003;
  • 使用视图给出结果使用子关联查询
    select * from v_test003 v1 inner join test003 v2 on v1.price=v2.price;

日志查看
语法:show VARIABLES like "general_log%";
结果:
在这里插入图片描述
解释:
genral_log字段:是否显示是否打开日志
genral_log_file字段:日志存放位置
开启日志语法:set global general_log=1;
关闭日志语法:set global general_log=0;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值