SQL最常用基本操作语法

一、简介

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支持多种数据类型,这里整理了一个表如下:

image.png

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后常用条件符号及功能

image.png

c. 排序查询

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

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

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

d. 聚合函数查询

概念:将一列数据作为一个整体,进行纵向计算。
聚合函数分类如下表

image.png

语法如下:

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、概念及分类

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

image.png

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常用的操作语法,直接开撸吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容