1、数据库操作语句

目录

1.    列的别名

2.    去除重复行

3.    空值参与运算

4.    着重号’’

5.    查询常数

6.    显示表结构

7.    过滤数据

8.    运算符:+、-、*、/(div)、%(MOD),dual为伪表

9.    比较运算符,true为1,false为0,=、<=>(安全等于)、<>(!=)、<、<=、>、>=

‘=’的比较

10.   Least()\greatest()

11.   Between  A  and  B

12.   离散查找in()、not  in()

13.   模糊查询like

15.   逻辑运算符:not或!(非)、and或&&(与)、or或||(或)、xor(异或)

16.   位运算符&、|、^(异或)、~、>>、<<

排序与分页

1、使用order  by对查询的数据进行排序操作,默认升序排列

2、ASC升序排列

3、Desc升序排列

4、用列的别名进行排序

5、二级排序

1)Order  by  [字段1]  asc/desc,[字段2]  asc/desc,……

6、分页

1)使用limit实现数据的分页显示

2)每页显示pagesize条记录,显示第pageno页。

3)MySQL8.0新特性:limit [条目数] offset [偏移量]

4)Mysql求字节数使用关键字length()


1.    列的别名

    使用AS

Select  id  as  学号  from  employ;

    使用  一对引号“”

Select  id  “学号”  from  employ;

    直接使用别名

Select  id  学号  from  employ;

2.    去除重复行

    在属性前面加distinct

Select  distinct  id  from  employ;

3.    空值参与运算

    空值为null,其中null不等同于0,‘’,‘null’

    空值参与运算结果一定为null,解决方法用ifnull

Select  salary*(1+ifnull(commission,0))  from  employ;//ifnull意思是如果commission是null,则用0替换。

4.    着重号’’

    使用的字段或表明是保留字、关键字时,使用着重号

Select  *from  ‘order’;

5.    查询常数

Select  ‘尚硅谷’,name  from  employ;

6.    显示表结构

    使用describe,显示表中字段详细信息

Describe  employ;

    使用desc,显示表结构

Desc  employ;

7.    过滤数据

    用where筛选符合条件的记录,过滤信息

Select  *from  employ  where  id=1;

8.    运算符:+、-、*、/(div)、%(MOD),dual为伪表

    在SQL中,+没有连接的作用,仅表示加法运算。此时会将字符型数字转化成为数值(隐式转换)

Select  100+‘1’  from  dual;//结果:101

    字符型字母会当成0处理

Select  100+‘a’  from  dual;//结果:100

    Null参与运算,结果为null

Select  100+null  from  dual;//结果:null

Select  ‘a’<>null  from  dual;//结果:null

    分母为0时,结果为null

Select  100  div  0  from  dual;//结果:null

    取模运算:%  MOD,余数的符号之和被除数有关

Select  12%3,12%5,12  MOD-5,-12  MOD  5,-12  MOD  -5  from  dual;//结果:0,2,2,-2,-2

9.    比较运算符,true为1,false为0,=、<=>(安全等于)、<>(!=)、<、<=、>、>=

‘=’的比较

    字符串与数字比较时,字符串存在隐式转换,如果转换数值不成功,则看做0

Select  1=2,1!=2,1=‘1’,1=‘a’,0=‘a’  from  dual;//结果:0,1,1,0,1

    纯字符串比较时,则按照ANSI编码值比较

Select  ‘a’=‘a’,‘ab’=‘ab’,‘a’=‘b’from  dual;//结果:1,1,0

    只要有null参与比较,结果就为null

Select  1=null,null=null  from  dual;//结果:null,null

注意:‘<=>’的比较,  ‘<=>’与’=’类似,唯一区别是:‘<=>’可以判断null。在两个操作数均为null时,返回值为1,否则返回0

       Select  1<=>null,null<=>null  fom  dual;//结果:0,1

    Is  null(值为空)、is  not  null(值不为空)、函数:isnull(字段)

Select  name,salary  from  employ  where  commission  is  null;

//查找commission值为null的记录

Select  name,salary  from  employ  where  commission  is  not  null;

//查找commission值不为null的记录

Select  name,salary  from  employ  where  isnull(commission);

//查找commission值为null的记录

10.   Least()\greatest()

    筛选最小值\最大值

Select  least(‘g’,’b’,’t’,’m’),greatest(‘g’,’b’,’t’,’m’)  from  dual;//结果:b,t

Select  least(name1,name2)  from  dual;//获取name1和name2中最小的

Select  least(length(name1),length(name2))  from  employ;//获取name1和name2长度最短的

11.   Between  A  and  B

    查询符合A到B之间的记录

Select  name,salary  from  employ  where  salary  between  A  and  B;

//查询工资在A和B区间的员工信息,包括A和B

Select  name,salary  from  employ  where  salary  >=6000  and(或&&)  salary<=8000;

//查询工资在6000到8000之间的员工信息

    查询符合A或符合B的记录

Select  name,salary  from  employ  where  salary<=A  or  salary>=B;

//查询工资小于A或大于B的员工信息

Select  name,salary  from  employ  where  salary  not  between  A  and  B;

//查询工资不在A和B区间的员工信息

12.   离散查找in()、not  in()

    In(set)判断一个值是否是列表中的一个值。not  in(set)判断一个值是否不是列表中的一个值

Select  name,salary  from  employ  where    department  in(A,B,C);

//查找部门属于A、B、C中员工信息

Select  name,salary  from  employ  where  department  not  in(A,B,C);

//查询不能不属于A,B,C的员工信息

13.   模糊查询like

    Like:判断一个值是否符合模糊匹配规则

Select  name,salary  from  employ  where  name  like  ‘%a%’;

//%代表不确定个数的字符,查询name包含字符a的姓名

Select  name,salary  from  employ  where  name  like  ‘a%’;

//查询name以字符a开头的员工信息

Select  name,salary  from  employ  where  name  like  ‘%a%b’or  name  like  ‘%b%a’;

//查询包含字符a和b的name

    查询指定位置字符,_代表一个不确定的字符

Select  name,salary  from  employ  where  name  like  ‘_a%’;

//查询第二个位置字符为a的姓名

    如果查询的字段含有‘_’,查询‘_’需要使用转义字符,或者使用escape关键字声明‘_’

Select  name,salary  from  employ  where  name  like  ‘%\_%’;

//查询含有‘_’的姓名

Select  name,salary  from  employ  where  name  like  ‘%_%’  escape  ‘_’;

//查询含有‘_’的姓名

14.   正则表达式regexp,语法格式:expr  regexp  [匹配条件]。如果expr满足匹配条件,返回1,;否则返回0。若expr或者匹配条件任何一个为null,则结果为null。

    ‘^’匹配以该字符后面的字符开头的字符串

    ‘$’匹配以该字符前面的字符结尾的字符串

    ‘.’匹配任何一个单字符

    “[…]”匹配在方框内的任意字符。例如:“[abc]”匹配‘a’或‘b’或‘c’。命名字符的范围使用‘-’,例如“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字

    ‘*’匹配零个或多个在它前面的字符。例如:“x*”匹配任何数量的‘x’字符,“[0-9]*”匹配任何数量的数字,而“*”匹配任何数量的任何字符

Select  ‘shkstart’  regexp  ‘^s’,  ‘shkstart’  regexp  ‘t$’,  ‘shkstart’  regexp  ‘hk’  from  dual;//结果:1,1,1

Select  ‘atguigu’  regexp  ‘gu.gu’,‘atguigu’  regexp  ‘[ab]’  from  dual;//结果:1,1

15.   逻辑运算符:not或!(非)、and或&&(与)、or或||(或)、xor(异或)

Select  name,salary  from  employ  where  department  =A  xor  salary>B;

//查询部门符合A但工资不大于B的员工信息,以及部门不等于A但工资大于B的员工信息

注意:优先级not>and>or,!>&&>||=xor

16.   位运算符&、|、^(异或)、~、>>、<<

Select  10&~1  from  dual;//结果:10

排序与分页

1、使用order  by对查询的数据进行排序操作,默认升序排列

Select  *from  employ  order  by  name;//按姓名的顺序排序

2、ASC升序排列

Select  name,salary  from  employ  order  by  salary  asc;

//按照工资的高低升序排列

3、Desc升序排列

Select  name,salary  from  employ  order  by  salary  desc;

//按照工资高低降序排列

4、用列的别名进行排序

Select  name,salary  as  工资  from  employ  order  by  工资;

//按工资高低的顺序排序

注意:列的别名只能在order  by中使用,不能在where中使用。Where需要声明在from之后,order  by之前。

5、二级排序

1)Order  by  [字段1]  asc/desc[字段2]  asc/desc,……

Select  namedepartmentsalary  from  employ  order  by  department  desc,salary  asc;

//显示员工信息,按照department降序排序,salary的升序排序

注意:多列排序,首先排序的第一列必须有相同的列值,才会对第二列排序。如果第一列数据中所有的值不是唯一的,将不再对第二列排序。

6、分页

1)使用limit实现数据的分页显示

Select namesalary from employ limit 0,20

//每页显示20条记录,显示第一页,“0”表示偏移量,“20”表示每页多少条记录

Select namesalary from employ limit 20,20

//每页显示20条记录,显示第二页,第一个“20”表示偏移量,第二个“20”表示每页多少条记录

2)每页显示pagesize条记录,显示第pageno页。

公式:(pagesize-1*pageno

注意:Whereorder bylimit声明顺序如下:where>order by>limit

Select namesalary from employ where salary>6000 order by salary desc limit 0,20

//筛选工资大于6000,按照降序顺序排列,分页显示,每页显示20条数据。

注意:limit偏移量从0开始时,0可以不写,默认从头开始显示。

如:limit 0,20==limit 20

3)MySQL8.0新特性:limit [条目数] offset [偏移量]

Select namesalary from employ limit 20 offset 0

//每页显示20条记录,从第一页显示

4)Mysql求字节数使用关键字length()

Select name,salary,email from employ where email like ‘%e%’ order by length(email) asc

//查询邮箱含有e的员工信息,并按照邮箱字节数排序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值