一、简介

SQL是英文 Structured Query Language 的缩写,是结构化查询语言,一门操作关系型数据库的编程语言,是定义操作所有关系型数据库的统一标准,对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,这称之为“方言”。
通用语法:SQL语句可以单行或多行书写,以分号;结尾。MySQL数据库的SQL语句不区分大小写。可以添加注释,其中单行注释使用-- 注释内容或者#注释内容(MySQL特有)多行注释使用/* 注释内容 */

二、数据库操作语句

1、查询

查询所有数据库

show databases;

2、创建

创建数据库

create database 数据库名称;

创建数据库(判断,如果不存在则创建,一般采用该方式创建避免出错)

create database if not exists 数据库名称;

3、删除

删除数据库

drop database 数据库名称;

删除数据库(判断,如果存在则删除,一般采用该方式删除避免出错)

drop database if exists 数据库名称;

4、使用

查看当前使用的数据库

select database();

使用数据库

use 数据库名称;

三、表操作语句

1、查询

查询当前数据库下所有表名称

show tables;

查询表结构

desc 表名称;

2、创建

创建表

create table 表名(
	字段名1 数据类型1,
	字段名1 数据类型1,
	...
	字段名n 数据类型n
);

注意:最后一组数据末尾不能加逗号, MySQL支持多种数据类型,这里整理了一个表如下:

SQL表 不存在 java 怎么捕获异常 sql语句不存在怎么写_数据类型

3、删除

删除表

drop table 表名;

删除表(判断,如果存在则删除,一般采用该方式删除避免出错)

drop table if exists 表名称;

4、修改

修改表名

alter table 表名 rename to 新表名;

添加一列

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

修改列数据类型

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

修改列名和数据类型

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

删除列

alter table 表名 drop 列名;

四、表数据操作语句

1、添加数据

给指定列添加数据

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

给全部列添加数据

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

批量添加数据

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

2、修改表数据

修改指定列数据(注意:修改语句中如果不加条件,则将对应列所有数据都修改

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

3、删除表数据

删除数据(注意:删除语句中如果不加条件,则将所有数据都删除

delete from 表名 where 条件;

4、查询表数据

a. 基础查询

查询多个字段

select 列名1, 列名2, ... from 表名; -- 查询指定列数据
select * from 表名;                -- 查询所有列数据

去除重复记录查询

select distinct 列名1, 列名2, ... from 表名;

给列起别名查询(as也可以省略,输出的列名为起的别名)

select 列名1 as 别名, 列名2, ... from 表名;
b. 条件查询

根据where条件查询

select 字段列表 from 表名 where 条件列表;

下表为where后常用条件符号及功能

SQL表 不存在 java 怎么捕获异常 sql语句不存在怎么写_数据类型_02

c. 排序查询

排序方式:
ASC:升序排列(默认值)
DESC:降序排列

select 字段列表 from 表名 order by 排序字段名1 排序方式1, 排序字段名2 排序方式2, ...;

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

d. 聚合函数查询

概念:将一列数据作为一个整体,进行纵向计算。

聚合函数分类如下表

SQL表 不存在 java 怎么捕获异常 sql语句不存在怎么写_表名_03


语法如下:

select 聚合函数名(列名) from 表名;
e. 分组查询
select 字段列表 from 表名 where 分组前条件限定 group by 分组字段名 having 分组后条件过滤;

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
wherehaving的区别:
执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
可判断条件不一样:where不能对聚合函数进行判断,having可以。
执行顺序:where > 聚合函数 > having

f. 分页查询
select 字段列表 from 表名 limit 起始索引, 查询条目数;

注意:起始索引从0开始,计算公式:起始索引 = (当前页码 - 1) * 每页显示的条数

五、SQL约束

1、概念及分类

概念:约束是作用于表中列上的规则,用于限制加入表的数据;约束的存在保证了数据库中数据的正确性、有效性和完整性。

分类如下图

SQL表 不存在 java 怎么捕获异常 sql语句不存在怎么写_表名_04

2、语法

a. 非空约束

创建表时添加非空约束

create table 表名(
	列名 数据类型 not null,
	...
);

建完表之后添加非空约束

alter table 表名 modify 字段名 数据类型 not null;

删除非空约束

alter table 表名 modify 字段名 数据类型;
b. 唯一约束

创建表时添加唯一约束

create table 表名(
	列名 数据类型 unique,
	...
);

建完表之后添加唯一约束

alter table 表名 modify 字段名 数据类型 unique;

删除唯一约束

alter table 表名 drop index 字段名;
c. 主键约束

创建表时添加主键约束

create table 表名(
	列名 数据类型 primary key,
	...
);
create table 表名(
    -- auto_increment:当不指定值时自增长
	列名 数据类型 primary key auto_increment,
	...
);

建完表之后添加主键约束

alter table 表名 add primary key(字段名);

删除主键约束

alter table 表名 drop primary key;
d. 默认约束

创建表时添加默认约束

create table 表名(
	列名 数据类型 default 默认值,
	...
);

建完表之后添加默认约束

alter table 表名 alter 列名 set default 默认值;

删除默认约束

alter table 表名 alter 列名 drop default;
e. 外键约束

创建表时添加外键约束

create table 表名(
	列名 数据类型,
	...
	-- 外键名称为自己定义
	constraint 外键名称 foreign key(外键列名) references 主表(主表列名)
);

建完表之后添加外键约束

alter table 表名 add constraint 外键名称 foreign key(外键列名) references 主表(主表列名);

删除外键约束

alter table 表名 drop foreign key 外键名称;

六、多表查询

多表查询:从多张表中查询数据。主要分为:连接查询和子查询,连接查询又分为内连接和外连接查询。

1、内连接查询

-- 隐式内连接
select 字段列表 from 表A,表B,... where 条件;
-- 显示内连接 inner 可以省略
select 字段列表 from 表A inner join 表B on 条件;

内连接查询相当于查询表A和表B的交集数据

2、外连接查询

-- 左外连接 outer 可以省略
select 字段列表 from 表A left outer join 表B on 条件;
-- 右外连接 outer 可以省略
select 字段列表 from 表A right outer join 表B on 条件;

左外连接查询相当于查询表A所有数据和交集数据
右外连接查询相当于查询表B所有数据和交集数据
使用中一般使用左外连接就够了,想要查询表B所有数据和交集数据,只需要将表A和表B位置调换即可。

3、子查询

查询中嵌套查询,称这种嵌套查询为子查询。
根据查询结果不同,作用不同可分为:单行单列、多行单列、多行多列。

a. 单行单列

子查询作为条件值,使用= != > < 等进行条件判断

select 字段列表 from 表名 where 字段名 = (子查询);
b. 多行单列

子查询作为条件值,使用in等关键字进行条件判断

select 字段列表 from 表名 where 字段名 in (子查询);
c. 多行多列

子查询作为虚拟表

select 字段列表 from (子查询) where 条件;

以上这些都是SQL常用的操作语法,直接开撸吧!