SQL语句大全

本文详细介绍了数据库的基本操作,包括创建、查看、使用和删除数据库,以及数据表的创建、修改和删除。同时,讲解了如何插入、更新和删除数据,以及各种查询操作,如条件查询、分组、排序、聚合函数和分页。此外,还涵盖了内连接、外连接和子查询等高级查询技巧。
摘要由CSDN通过智能技术生成

1.数据库操作:

–创建库

create database 库名;

–创建库时判断库是否存在,不存在则创建

create database if not exists 库名;

–查看所有数据库

show databases;

–使用指定数据库

use 库名;

–查看当前指定数据库包含的数据表

show tables;

–查看数据库的结构定义信息

show create database 库名;

–删除数据库

drop database 库名;

–修改数据库的字符集为utf8

alter database 库名 character set utf8;

2.数据表操作:

创建表

create table 表名(
字段1 类型1,
字段2 类型2,
字段3 类型3,
...........
);

–查看表结构

desc 表名;

–查看创建表的SQL语句

show create table 表名;

–修改表名

alter table 表名 rename to 新的表名;

–添加一个新的字段

alter table 表名 add 字段; 字段类型;

–修改字段名

alter table 表名 rename column 字段名 to 新的字段名;

–修改字段类型(注意类型修改前后数据是否兼容)

alter table 表名 modify column 字段名 新的字段类型;

–删除一个字段

alter table 表名 drop 字段名;

–删除表

drop table 表名;

–删除表时判断表是否存在,若存在则删除

drop table if exists 表名;

2.1.表数据插入:
–有多少个字段,就要写多少个值,且是一一对应的

insert into 表名 values(1,2,3...值n);

–此方法要写出所有字段,并一一对应插入值

insert into 表名(字段1,字段2...字段n) values(1,2...值n);

–部分字段插入数据,只写需要插入数据的字段名

insert into 表名(字段1,字段2...) values(1,2...);

2.2.删除数据(delete / truncate)
–删除表中所有数据

delete from 表名;

–删除表中指定的数据

delete from 表名 where 字段 =;

–删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)

truncate table 表名;

2.3.修改数据(update)
–无限制条件的修改,会修改整张表

update 表名 set 字段 =;

–有限制条件的修改,只修改特定记录

update 表名 set 字段 = 值 where 条件(字段 =);

##3.0 .查询数据(select):
–查询表中所有数据

select *from 表名;

3.1.查询在…到…之间(between and / && / and)
–查询users表中年龄在18~25岁之间的记录
–方式1 between…and…

select *from users where age between 18 and 25;

–方式2 &&

select *from users where age>=18 && age<=25;

–方式3 and

select *from users where age>=18 and age<=25;

3.2.指定条件查询
(1)单个条件(or / in)
–查询users表中年龄为18,20,25岁的记录
–方式1 or

select *from users where age=18 or age=20 or age=25;

–方式2 in

select *from users where age in(18,20,25);

(2)多个条件(and)
–查询users表中年龄为23,性别为女,名字为小楠的记录

select *from users where age=23 and gender='女' and name='小楠';

(3)查询不为NULL值(is not null),为NULL值(is null)
–查询users表中序号不为空的记录

select *from users where id is not null;

–查询user表中序号为空的记录

select *from users where id is null;

(4)模糊查询(like)
_:单个任意字符
%:多个任意个字符
–查询users表中姓名第一个字为李的记录

select *from users where name like '李%';

–查询users表中姓名第二个字为李的记录

select *from users where name like '_李%';

–查询users表中姓名含有李字的记录

select *from users where name like '%李%';

–查询users表中姓名是两个字的记录

select *from users where name like '__';

(5)去除重复记录查询(distinct)
–查询users表中所在城市不相同的记录
–select distinct 字段 from 表名;

select distinct city from users;

(6)排序查询(order by)
①单个条件
–查询users表中记录,并以年龄升序排序

select *from users order by age; --默认升序

–查询users表中记录,并以年龄降序排序

select *from users order by age desc;--desc降序

②多个条件
–查询users表中记录,并体育成绩降序,年龄降序

select *from users order by PE desc,age desc;

(7)聚合函数
①计算和(sum)

select sum(字段) (as sumvalue) from 表名;

②计算最大值(max)

select max(字段) (as maxvalue) from 表名;

③计算最小值(min)

select min(字段) (as minvalue) from 表名;

④计算平均值(avg)

select avg(字段) (as avgvalue) from 表名;

⑤计算个数(count)

select count(字段) (as totalcount) from 表名;

(8)分组查询(group by)
–查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分

select gender,avg(PE) from users group by gender;

–查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数

select gender, avg(PE),count(id) from users group by gender;

–查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组

select gender, avg(PE),count(id) from users where PE > 60 group by gender;

–查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人

select gender,avg(PE),count(id) from users where PE > 60 group by gender having count(id)>2;

(9)分页查询(limit)
–查询users表中的前10行条记录

select *from users limit 10;

–查询users表中第2~11条记录 (从第2条记录开始累加10条记录)

select *from users limit 1,10;

–查询users表中第5~17条记录 (从第5条记录开始累加13条记录)

select *from users limit 4,13;

(10)内连接查询
–语法1 (隐式内连接)

select 字段1,字段2...
from 表1,2...
where 过滤条件;

–语法2 (显式内连接)

select 字段1,字段2...
from 表1 inner join 表2 ...
on 过滤条件;

(11)外连接查询
–左外连接

select 字段1,字段2..
from 表1 left (outer) join 表2 on 过滤条件;

–右外连接

select 字段1,字段2..
from 表1 right (outer) join 表2 on 过滤条件;

(13)子查询
– 子查询求最大值(max)

select * from user where age=(select max(age) from user);

– 子查询的查询结果可以作为判断条件

select * from user where age <(select max(age) from user);

– 子查询结果是多行单列的,可以用运算符in做判断条件

select * form user where name in(select name from user where age=(select min(age) from user));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值