Mysql之DQL语句

Mysql笔记-sql语句

sql语句的分类

sql-StructuredQueryLanguage结构化查询语言

sql语句有很多,最好进行分门别类,这样更容易记忆

  1. DQL:
    数据查询语言(凡是带有select关键字的都是查询语句)
  2. DML:
    数据操作语言(凡是对表当中的数据进行增删改的都是DML)
    insert、delete、update
  3. DDL:
    数据定义语言(凡是带有create、drop、alter的都是DDL)
    DDL主要操作的是表的结构,不是表中的数据
    create:新建表
    drop:删除表
    alter:修改表
    也是增删改,只是是针对表结构的
  4. TCL:
    事务控制语言
    commit:事务提交
    rollback:事务回滚等等
  5. DCL:
    数据控制语言
    grant:授权
    revoke:撤销权限等等

怎么将sql文件的数据导入数据库
常用命令:
use 数据库名
source ——文件全路径(根路径)
show tbales ——查看表
select * from 表名 —— 查询表中的数据,*表示所有
如:select * from student 从student表中查看所有数据
desc 表名 ——不看表中的数据,只看表的结构(describe缩写为desc)
所有对表的操作都要在具体的数据库里面
varchar就是Java中的String
select version();——查看当前数据库的版本号
select database ——查看当前使用的是哪个数据库
mysql不见分号不执行,“;”表示结束;\c用来终止一条sql语句命令的输入


DQL语句

简单语句

  1. 查询一个字段
    select 字段名 from 表名;
    其中要注意:
    select和from都是关键字
    字段名和表名都是标识符
    如:desc 表名;
    select 字段 from 表名;
    对于SQL语句来说是通用的
    所有的SQL语句以“;”结尾
    SQL语句不区分大小写
  2. 查询两个字段或者多个字段,使用“,”隔开
    如:selet 字段,字段 from 表名;
  1. 查询所有字段
    *——效率比较低,可读性查,实际开发中建议下面这种方式
  2. 把每个字段都写上——建议使用
  1. 给查询的列起别名(使用as关键字)
    select 字段名 as 别名 from 表名;
    注意
    只是将显示的查询结果列名显示为别名,原表列名不变
    select语句是永远都不会进行修改操作的,只负责查询、检索
    as关键字可以省略
    假设起别名的时候有别名里有空格——DBMS进行SQL语句的编译,不符合语法,会报错
    解决:加‘ ’将别名括起来(用“”也可以…只是不建议使用)
    注意
    在所有的数据库当中,字符串统一使用单引号括起来,单引号是标准,双引号在oracle数据库中用不了,但是在mysql当中没有影响
  2. 计算
    字段可以使用数学表达式
    select sal*12 as yearsal from 表名;
    别名是一个中文的话要使用‘’括起来
  3. 条件查询 ——筛选
    不是将表中的所有数据查出来,是查询出来符合条件的
    语法格式:
    select
    字段1,字段2,字段3…
    from
    表名
    where
    条件;

都有哪些条件:
1、= 等于。可用于基本数据也可以用于字符串
2、<> 或 != 不等于
3、<=小于等于
4、>=大于等于
5、between … and … 两个值之间,等同于 >= and <=
**注意:**使用between…and…时必须遵循左小右大原则,是闭区间,包括两端的值
6、is null 为 null(is not null不为空)
**注意:**在数据库当中null不能使用等号进行衡量,需要使用is null。因为数据库中的null代表什么也没有,它不是一个值,所以不能使用等号衡量
7、and 并且
select 字段,字段,字段… from 表名 where 条件 and 条件;
8、or 或者
select 字段,字段,字段… from 表名 where 条件 or 条件;
and和or同时出现有优先级问题——and优先级比or高

select  
 a,b 
from 
 c
where
 a >= 3000 and b=10 or b=20; 

以上SQL语句的含义是从c表中找出工资大于3000并且部门编号为10的员工,或者找出部门编号为20的所有员工。
纠正:
a >= 3000 and (b=10 or b=20);
如上所示即为从10和20部门当中找出工资高于3000的员工——小括号的优先级最高,在开发中不确定优先级,使用小括号就行
9、in 包含-相当于多个or(not in 不在包括的范围内)
or表示:
select 字段名,字段名 from 表名 where 条件1 or 条件2;
in表示
select 字段名,字段名 from 表名 where 字段 in(条件,条件);
in不是一个区间,in后面跟的是具体的值
10、not 用于取非(取反),主要用在is或in当中
11、like
称为模糊查询,支持%或下划线匹配
%匹配任意多个字符
下划线_:一个下划线只匹配一个字符,任意一个字符
找出名字当中有o的

select  
  name
from 
  table
where
  name like '%o%'; 

以t结尾的

select  
    name
from 
	table
where
	name like '%t'; 

以k开头的

select  
	name
from 
	table
where
	 name like 'k%'; 

第二个字母是A的

select  
    name
from 
   table
where
   name like '_A%'; 

等等
******仍然是转义字符

排序

  1. 查询所有员工工资并排序
    select name,sal from table order by sal;//默认是升序
  2. 降序
    select name,sal from table order by sal desc;//降序
    指定降序——desc;指定升序——asc
  3. 多个字段排序
    查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话,再按照名字升序排列
    select name,sal from table order by sal asc,name asc;
    sal在前起主导,只有sal相等的时候才会考虑启用name排序
  4. 根据字段的位置排序
    select name,sal from table order 2;
    2表示第2列。第2列是sal,即按照sal排序,了解一下,不建议在开发中使用,不健壮,因为列的顺序会发生修改

综合实例:
找出工资在1250到3000之间的员工信息,要求按照薪资降序排列

select
	name,sal
from
	table
where 
	sal between 1250 and 3000 
order by 
	sal desc;

关键字顺序不能变,排序总是在最后执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值