常用sql语句整理

两张表中有匹配数据,那就将他们组合起来

select *  from 表A inner join 表B on 表A.字段 compopr 表B.字段 where 表.字段=‘值’(compopr运算符号)

例子:从表admin中找到关联check表中id=570的last_check_user的user_name (last_check_user与admin 中的id对应)
select user_name from admin INNER JOIN check ON admin .id=check .last_check_user WHERE check .id=‘570’

group by 与 having基于聚合函数的使用

group by把返回的记录分成多个组,分完组后,用聚合函数对每组中的不同字段做运算;having自居可以让我们筛选成组后的各组数据。
– 显示每个地区region的总人口数population和总面积area

select region,sum(population),sum(area)from 表名 group by region

增删改查、去重、模糊查询、排序

 语法:insert  into  表名称  values (值1,值2,值3,...值n);

例子:insert into user values(‘张三’,‘演员’,22,‘男’);

注意:必须把所有列都进行新增,并且新增值的顺序需要与建表时列的顺序一致。新增值的数据类型要与列的数据类型相对应,数字型数据类型直接写,其他类型的值需要单引号引起来。replace也可以插入数据,相当于insert

新增指明列的记录

语法:insert  into  表名称(列名1,列名2,...列名n)  values (值1,值2,...值n);

例子:insert into user (name,age,sex) values (‘张三’,22,‘男’);

注意:指明列的顺序可以不和建表时的顺序相同,新增值需要和指明列相对应,未指明列为默认值(default指定的值或者null)。同时,未指明列必须满足约束条件(如:列设置了not null,并且没有设置default)。

修改指明列的记录

语法:update  表名称  set  列名=值  where  条件;

例子:update user set name=‘李四’ where sex=‘男’;(把sex为‘男’的记录的name列的值全部修改为‘李四’)

注意:修改列为多个时使用逗号分隔。条件为多个时使用and或者or分隔。如果没有where条件则指明列的数据都会被修改

删除所有的记录

 语法:delete  from  表名称;
 语法:truncate  表名称;

注意:两种方法都可以使用。但是删除记录时慎重,事物提交后无法恢复删除记录。要想恢复很复杂。truncate速度更快,占用日志更少(直接释放数据页并且在事物日志中也只记录数据页的释放)。而delete一行一行删除,在事物日志中要记录每一条记录的删除

删除指明条件的记录

 语法:delete  from  表名称  where  条件;

例子:delete from user where name=‘张三’;(删除name为‘张三’的所有记录)

查询表中某个字段

语法:select  列名  from  表名称;

例子:select name from user;

注意:多个列时,列名与列名之间使用逗号分隔,最后一个列名不需要逗号。
另外,查询时使用别名

语法:select  列名  as‘别名’ from  表名称;

例子:select name as‘姓名’ from user;

注意:as关键字可以省略,多个列时不是所有的列都必须添加别名。别名只修改查询时列的名称,真正表的列名不会被修改。

查询时使用算术运算符:(+、-、*、/)

 语法:select  列名+值  from  表名称;

例子:select age+20 from user;

注意:算术运算符只作用在数值类型的列上。可以是固定值,也可以指定某列。

去除重复记录:(distinct)

  语法:select  distinct  列名  from  表名称;

例子:select distinct age from user;

注意:distinct紧跟着在select关键字之后。如果查询多个列则会把查询的所有列的值进行拼接后,在去重

分页:(limit)

  语法:select  *  from  表名称  limit  m,n;
 公式:select  *  from  表名称  limit((页码-1) * 行数),行数;

● 例子:select * from user limit 0,10;

注意:m表示从多少下标位开始(默认从0开始),n表示显示多少条记录。m如果省略掉。则默认从0下标位开始显示记录

复制查询出来的表结构及记录:

  语法:create  table  新表名称  as  select  *  from  表名称;

例子:create table user1 as select * from user ;

注意:as关键字可以省略。复制的表不会把原表中的主外键约束进行复制

只复制表结构不复制记录:

 语法:create  table  新表名称  select  *  from  表名称  where  条件;

例子:create table user1 select * from user where 1=2 ;

注意:只需where条件为假就行

多条件的查询:(and、or、not)

● and:并且的意思,查询的记录必须都满足条件
● or: 或者的意思,查询的记录只需满足其中一个条件
● not:取条件表达式的反值

 语法:select  *  from  表名称  where  条件;

例子:select * from user where not name=‘张三’;
(查询出name不为‘张三’的所有记录)

注意:在条件与条件之间需使用and、or把条件进行连接起来

查询空值的记录:(null、‘’)

语法:select  *  from  表名称  where  列名  is  null  or  列名=‘’;

例子:select * from user where name is null or name=‘’;

意:查询空值必须两个条件都写,查询null时只用is null。查询非空is not null

查询区间记录:(between)

  语法: select  *  from  表名称  where  列名  between  m  and  n;

例子:select * from user where age between 20 and 50;
(查询出age>=20并且<=50的所有记录)

注意:在m、n之间的记录,并包含m、n。and前写小值,and后写大值。between相当于age>=20 and age<=50的简写

查询具体值的记录:(in)

  语法:select  *  from  表名称  where  列名  in(值1,值2,....值n);

例子:select * from user where age in(20,22,23);
(查询出age为20,22,23的所有记录)

注意:in相当于age=20 or age=22 or age=23的简写

模糊查询:(like、not like)

  语法:select  *  from  表名称  where  列名  like ‘条件’;

例子:select * from user where name like ‘%三%’;
(查询出name含有三的所有记录)

注意:%表示任意长度的字符。_表示一个长度的字符

正则查询:(rlike)

  语法:select  *  from  表名称  where  列名  rlike ‘[条件]’;

● 例子:select * from user where name rlike ‘[张王]三’;
(查询出张三或王三的所有记录)

例子:select * from user where name rlike
‘[^张王]三’;(查询出除了张三或王三的所有记录)

注意:[…]范围也可以为[0-9][a-z],也可以写固定的值

查询出来的结果进行排序:(order by)

 语法:select  *  from  表名称  order  by  排序列名  排序要求;
 语法:select  *  from  表名称  order  by  排序列名  排序要求,排序列名  排序要求;(多列排序)

例子:select * from user order by age desc;
(查询出来的记录根据age的降序排序)

注意:排序是对整行记录进行排序。desc表示降序,asc表示升序,如果省略了asc或者desc默认为升序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值