SQL

SQL是访问和处理数据库的计算机语言,用于存取数据以及查询、更新和管理关系数据库系统

SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制

这篇文章只介绍一下数据定义和数据操纵

数据定义(DDL)

数据定义语言是用的定义和操作数据库对象

创建

创建数据库

create database 数据库名;

创建表

create table 表名{
列名1 数据类型1,
列名2 数据类型2,
列名3 数据类型3,
...
列名n 数据类型n,
约束...
};

删除

删除数据库

drop database 数据库名;

判断数据库是否存在,存在才执行删除

drop database if existx 数据库名;

删除表

drop table 表名;

判断表是否存在,存在才执行删除

drop table if exisex 表名;

修改

修改数据库的字符集

alter database 数据库名 character set 字符集名;

修改表名

alter table 表名 rename to 新表名;

修改表的字符集

alter table 表名 character set 字符集名;

往表里补添一列

alter table 表名 add 列名 数据类型;

修改列名及数据类型

alter table 表名 change 列名 新列名 新数据类型;

修改列名的数据类型

alter table 表名 modify 列名 新数据类型;

删除指定一列

alert table 表名 drop 列名;

查询

查询所有数据库的名称

show databases;

查询指定数据库的创建语句

show create database 数据库名;

进入已有数据库

use 数据库名;

查询指定数据库中所有表的名称

show tables;

查询表结构

desc 表名;

数据操纵(DML)

数据操纵是SQL语言使用最多和最重要的部分,作用于数据库中的表里的数据,作为后端程序员主要的工作就是使用SQL将各种数据与数据库交互

数据操纵主要分为四个部分,分别是增加新数据,删除废弃数据,修改旧数据和使用最多的查询各种条件的期望数据,我们将这部分简称为增删改查

增(insert into)

语法格式

语法1:这种方式按照表的列名固定顺序添加一行数据,values后面括号里的数据必须与数据库的列全部对应

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

语法2:这种方式按照表名后面括号里的数据顺序对应values后面括号里的值添加数据,可以不按表的顺序,也可以不写全所以列,未添加的列的值按默认值或空值添加

insert into 表名(列名1, 列名3, 列名4) values(值1, 值3, 值4);

删(delete)

删除数据是最简单的语句了,只需要指定表名和查询条件就行

语法格式

delete from 表名 where 条件;

改(update)

修改数据只需要指定自己需要修改的几个列名,按条件查询出对应数据,并将值设置好就可以了

语法格式

update 表名 set 列名1 = 值1, 列名2 = 值2, 列名5 = 值5, ... where 条件;

查(select)

查询数据是数据操纵的重点难点,主要难在判断条件上

下面语句中的 * 代表查询所有列,在实际项目中我们会将星号替换成我们实际需要用到的几个列名,多条列名用英文逗号分隔,这样有助于提高查询速度

基本语法

select * from 表名 where 条件;

模糊查询

模糊查询用于不确定具体查询条件是什么的时候使用,用于匹配字符串,比如以某个字符开头,以某个字符结尾或是否包含某个字符

和基本语法对比,模糊查询将判断符号换成了 like

下面语句以 模糊格式 代替这部分语句

举例

以字符a开头:a%
以字符a结尾:%a
包含a:%a%

select * from 表名 where 列名 like 模糊格式;

排序查询

升序

select * from 表名 where 条件 order by 列名 asc;

降序

select * from 表名 where 条件 order by 列名 desc;

条件

这里单独将一下查询条件

1.基本条件

使用 > >= < <= = 等逻辑运算符判断

比如判断年龄大于等于18岁

age >= 18

2.范围条件

语法 bentween 起点值 and 结束值

比如判断分数在60到75之间

score bentween 60 and 75

3.单点指定

语法 in(值1, 值2, 值3, ...)

可以指定多个值,比如查询学号为15,35,46,47几位同学

sid in(15, 35, 46, 47)

聚合函数

上面说到查询语句里的 * 可以替换成指定列名,其实还可以替换成SQL语言提供的内置聚合函数实现特定功能

  • count(列名) 统计当前条件下查询出的数据的数量
  • sum(列名) 求某一列值的总和
  • max(列名) 求某一列的最大值
  • min(列名) 求某一列的最小值
  • avg(列名) 求某一列的平均值

下面几个用于语句最后

  • distinct 去冗余
  • group by 分组
  • having 分组筛选

总结

SQL用于操作数据库,是使用数据库的必备技能,上面只是介绍了适用于所有数据库的通用语法,不同数据库的个别语法有少许差异,需要我们进一步学习运用