SQL 语句汇总:学习常用 SQL 语句,轻松掌握数据库操作
在开发过程中,数据库的操作无处不在。你是否曾为处理数据而烦恼?掌握SQL语句,就像是找到了一把开启数据宝库的神奇钥匙。这一点,对所有开发者来说都是至关重要的学习内容,同时也是许多新手感到头疼的难点。
--创建库
create database 库名;
--创建库时判断库是否存在,不存在则创建
create database if not exists 库名;
--查看所有数据库
show databases;
--使用指定数据库
use 库名;
--查看当前指定数据库包含的数据表
show tables;
--查看数据库的结构定义信息
show create database 库名;
--删除数据库
drop database 库名;
--修改数据库的字符集为utf8
alter database 库名 character set utf8;
SQL语句的重要性
--创建表
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 表名;
对于开发者来说,数据库操作是整个开发流程的重中之重。在大数据时代背景下,数据的存储、管理和检索显得尤为重要。SQL语句,作为与数据库沟通的主要手段,熟练掌握它能够显著提高开发效率。无论是小型系统还是大型企业级应用,各个项目中都离不开SQL语句的应用。比如,在电商项目中,商品的库存管理、用户信息的存储等方面都涉及到SQL语句的使用。
--有多少个字段,就要写多少个值,且是一一对应的
insert into 表名 values(值1,值2,值3...值n);
--此方法要写出所有字段,并一一对应插入值
insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);
此外,技术不断进步,诸如人工智能、机器学习等众多新兴技术领域,都需与数据库进行交互。SQL语句在此过程中扮演着关键角色,它能迅速而精确地提取和整理所需数据。若不熟悉SQL语句,开发过程中难免会遇到重重障碍,进而导致开发周期显著延长。
--部分字段插入数据,只写需要插入数据的字段名
insert into 表名(字段1,字段2...) values(值1,值2...);
--删除表中所有数据
delete from 表名;
--删除表中指定的数据
delete from 表名 where 字段 = 值;
--删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)
truncate table 表名;
DDL数据定义语言
--无限制条件的修改,会修改整张表
update 表名 set 字段 = 值;
--有限制条件的修改,只修改特定记录
update 表名 set 字段 = 值 where 条件(字段 = 值);
--查询表中所有数据
select *from 表名;
DDL主要用于数据库和数据表的层面操作。它可以实现数据库或数据表的创建、修改和删除。比如,当你需要创建一个用户信息表时,可以通过DDL语句来设定表的名称、字段名称、数据类型等基础属性。以开发社交平台为例,创建用户表、朋友关系表等都是DDL语句的用武之地。
--查询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;
同时,若业务逻辑出现变动,需对数据表结构进行调整,比如新增字段、修改字段类型等,这同样需要使用DDL语句。然而,在进行修改或删除操作时,必须格外小心,因为操作失误可能会引发数据丢失等严重后果,例如不小心删除了数据表中的关键字段。
--查询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);
DML数据操作语言
--查询users表中年龄为23,性别为女,名字为小楠的记录
select *from users where age=23 and gender='女' and name='小楠';
--查询users表中序号不为空的记录
select *from users where id is not null;
--查询user表中序号为空的记录
select *from users where id is null;
DML主要关注于对数据表内数据的处理。其中,数据插入是最基础的操作之一,它可以分为全部字段插入和部分字段插入两种。以电商订单系统为例,当需要创建一个新订单时,需要将订单的所有信息,包括订单号、用户ID、商品ID等,一次性完整地插入到订单表中。这时,可以选择适合的全字段插入方法。
_:单个任意字符
%:多个任意个字符
--查询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 '__';
部分字段插入在某些情况下是适用的。比如,当我们只需更新表格中的部分信息,如更改用户的联系方式时,只需更新那个特定的字段。若采用全字段插入,可能会引发数据覆盖等问题。在进行操作时,务必确保数据的完整与精确。
DQL数据查询语言
--查询users表中所在城市不相同的记录
--select distinct 字段 from 表名;
select distinct city from users;
数据查询语言DQL在数据查询过程中扮演着至关重要的角色。在执行查询时,常常需要结合多种限制条件。比如,要查询特定时间段内的数据,例如近一个月的销售订单信息,这时就会使用到“and”这样的逻辑运算符。
--查询users表中记录,并以年龄升序排序
select *from users order by age; --默认升序
--查询users表中记录,并以年龄降序排序
select *from users order by age desc;--desc降序
模糊查询的使用颇为广泛。尤其在搜索引擎项目中,用户输入部分关键词进行搜索时,便需借助like操作符在数据库中进行数据模糊匹配。去除重复记录的查询,能在处理大量数据时有效精简结果。而排序查询则根据用户需求或业务逻辑,对查询结果进行有序排列,比如按订单金额的高低顺序展示订单信息。
--查询users表中记录,并体育成绩降序,年龄降序
select *from users order by PE desc,age desc;
连接查询
select sum(字段) (as sumvalue) from 表名;
处理多表关系时,连接查询是不可或缺的。内连接查询可以找出不同表中的重合部分。比如,在员工表和部门表之间,通过内连接,我们可以查询到特定部门下的员工信息。
select max(字段) (as maxvalue) from 表名;
左外连接和右外连接各有其特定用途。左外连接通常用于需要保留某个表全部数据的场景,同时还要与另一表进行关联查询。相对的,右外连接则刚好相反。在具体工作中,比如查询学校的学生表和选课表,我们会根据分析学生选课情况或对应学生的需求,来决定使用哪种连接方式。
select min(字段) (as minvalue) from 表名;
子查询的魅力
select avg(字段) (as avgvalue) from 表名;
子查询能简化复杂的查询需求。比如,要找出年龄最大的人的记录,用传统方法可能要分多步进行,但子查询只需一条语句就能搞定。当子查询返回的结果是一行一列时,我们可以用运算符来进行判断。拿人员信息表来说,如果我们想找出所有年龄小于最大年龄的记录,可以将子查询得到的最大年龄值作为筛选条件。
select count(字段) (as totalcount) from 表名;
子查询结果若为多行单列,则可运用“in”运算符进行条件判断。举例来说,若需从特定人群内找出最小值,并以该最小值作为条件筛选出相关记录,此举能有效降低代码复杂度,并显著提升查询速度。
--查询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;
在进行数据库操作的过程中,你可能会发现,出错最频繁的地方是哪里?不妨在评论区留言交流,同时,也欢迎你点赞并转发这篇文章。
--查询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;