史上最全sql基础知识语法(代码片段)

YuLong~W YuLong~W     2022-12-13     201

关键词:

一、 SQL基本介绍

SQL (Structured Query Language):结构化查询语言,是一种针对关系型数据库特殊标准化的编程语言

  • SQL是一种编程语言
  • 能够实现用户数据库查询和程序设计
  • SQL根据操作不同,分为几类
    • DQL: Data Query Language,数据查询语言,用于查询和检索数据
    • DML: Data Manipulation Language,数据操作语言,用于数据的写操作(增删改)
      TPL:Transaction Process Language,事务处理语言,辅助DML进行事务操作(因此也归属于DML)
    • DDL: Data Definition Language,数据定义语言,用于创建数据结构
    • DCL: Data Control Language,数据控制语言,用于用户权限管理

注意:

1、SQL虽然是编程语言,但是目前数据库通常只用来进行数据管理(逻辑部分给其他编程语言)

2、SQL虽然是针对关系型数据库的通用语言,但是不同的产品操作指令不完全通用

3、数据库连接资源有限,用完即关闭

二、SQL基础

目标:学习基本的SQL操作,实现数据库的基本管理

  • SQL基本语法
  • SQL库操作
  • SQL表操作
  • SQL数据操作

1、SQL基本语法

目标:了解SQL的基本语法规则

SQL语法规则

  • 基础SQL指令通常是以为单位
  • SQL指令需要语句结束符,默认是英文分号:;、\\g、\\G
    • \\G:主要用于查询数据,立体展示结果
  • SQL指令类似自然语言
  • 编写的SQL中如果用到了关键字或者保留字,需要使用反引号``来包裹,让系统忽略

1、结构创建

  • create 结构类型 结构名 结构描述;

2、显示结构

  • 显示结构:show 结构类型(复数);
  • 显示结构创建详情:show create 结构类型 结构名;

3、数据操作(数据表)

  • 新增数据: insert into 表名 values;
  • 查看数据: select from 表名;
  • 更新数据: update 表名 set;
  • 删除数据: delete from 表名;

小结

1、SQL是一种类似于自然语言的编程语言

  • 基本SQL指令以行为单位
  • SQL指令需要语句结束符

2、根据数据库的对象层级,可以将基础SQL操作分为三类

  • 库操作:数据库相关操作
  • 表操作:数据表(字段)相关操作
  • 数据操作:数据相关操作

2、SQL库操作

目标:掌握数据库相关SQL指令

  • 创建数据库
  • 显示数据库
  • 使用数据库
  • 修改数据库
  • 删除数据库

1) 创建数据库

创建数据库:根据项目需求创建一个存储数据的仓库

  • 使用create database 数据库名字创建
    • 数据库层面可以指定字符集:charset / character set
    • 数据库层面可以指定校对集:collate
  • 创建数据库会在磁盘指定存放处产生一个文件夹
  • 创建语法: create database 数据库名字 [数据库选项];

1、创建一个指定名字的数据库

create database db_1;

2、创建一个指定字符集的数据库

create database db_2 charset utf8MB4;

3、创建一个指定校对集的数据库

create database db_3 charset utf8MB4 collate utf8mb4_general_ci;

小结

1、数据库的创建是存储数据的基础,数据库的创建通常是一次性的

2、创建数据库的语法包含几个部分

  • 关键字: create database
  • 数据库名字: 自定义名字
    • 数字、字母和下划线组成
    • 不区分大小写
    • 数字不能开头
    • 使用下划线法创建复杂数据库名字
  • 数据库选项:非必须的规定
    • 字符集:charset /character set 字符集。非必须,默认继承DBMS
    • 校对集:collate 校对集。非必须,依赖字符集

3、创建好的数据库可以在数据存储指定地点(安装时指定)看到

2) 显示数据库

显示数据库:通过客户端指令来查看已有数据库

  • 数据库的查看是根据用户权限限定的
  • 数据库的查看分为两种查看方式:
    • 查看全部数据库: show databases;
    • 查看数据库创建指令: show create database 数据库名字;

1、显示所有数据库

show databases;

2、显示数据库创建指令

show create database db_1;

小结

1、查看数据库分为两种方式

  • 查看全部
  • 查看具体创建指令

2、查看数据库的目的和应用

  • 开发人员确认数据库是否存在
  • 数据库管理员维护

3) 使用数据库

使用数据库:指在进行具体SQL指令之前,让系统知道操作针对的是哪个数据库

  • 数据库的操作通常是针对数据表或者数据
  • 通过使用数据库可以让后续指令默认针对具体数据库环境
  • 使用数据库语法:use 数据库名字;

1、使用某个数据库

use db_1;

小结

1、使用数据库的指令是:use 数据库名字;

2、使用数据库的目标

  • 让系统知道后续SQL指令都是针对当前选择的数据库
  • 简化后续SQL指令的复杂度(如果不指定数据库,那么所有的SQL操作都必须强制指定数据库名字)

4) 修改数据库

修改数据库:修改数据库的相关库选项

  • 数据库名字不可修改(老版本可以)
    • 先新增
    • 后迁移
    • 最后删除
  • 数据库修改分为两个部分(库选项)
    • 字符集
    • 校对集
  • 数据库修改指令(与创建指令差不多): alter database 数据库名字 库选项

1、修改数据库字符集

alter database db_2 charset gbk;

2、修改数据库校对集(如果字符集修改必须同时改变字符集)

alter database db_3 charset gbk collate gbk_chinese_ci;

小结

1、数据库的修改只能修改库选项,不能修改名字

2、字符集的修改指令使用alter,其他跟创建指令一致

3、数据库修改通常有两部分

  • 字符集修改
  • 校对集修改(校对集必须对应字符集)

4、一般都不会使用数据库修改(一般要改也是删除后新增)

5) 删除数据库

删除数据库:将当前已有数据库删除

  • 删除数据库会删除数据库内所有的表和数据
  • 删除数据库操作要慎重(删前备份)
  • 删除数据库后,对应的存储文件夹就会消失
  • 删除语法:drop database 数据库名字;

1、删除某个数据库

drop database db_1;

小结

1、删除数据库使用指令:drop database 数据库名字

2、数据库的删除不可逆

  • 删除会清空当前数据库内的所有数据表(表里数据一并删除)
  • 删除数据库会将对应的文件夹从磁盘抹掉
  • 数据库删除要谨慎(一般不建议删除)

6) 总结

1、数据库的操作通常是一次性的,即在进行业务代码开展之前将数据库维护好

2、数据库的删除需要非常慎重,尤其是生产环境,数据库的删除是不可逆(会将数据库中的所有数据全部删除)

3、SQL表(字段)操作

目标:掌握数据库和字段的相关操作指令,熟练运用这些指令完成数据表的增删改查

  • 创建数据表
  • 显示数据表
  • 查看表结构
  • 更改数据表
  • 更改字段
  • 删除数据表

1) 创建数据表

目标:了解数据表创建的语法,掌握创建规则

创建数据表:根据业务需求,确定数据表的字段信息,然后创建表结构

  • 表与字段不分家,相辅相成
  • 表的创建需要指定存储的数据库
    • 明确指定数据库:数据库.表名
    • 先使用数据库:use 数据库名字
  • 字段至少需要指定名字、类型
  • 数据库表不限定字段数量
    • 每个字段间使用逗号,分隔
    • 最后一个字段不需要逗号
  • 表可以指定表选项(都有默认值)
    • 存储引擎:engine [=] 具体存储引擎
    • 字符集:[default] charset 具体字符集(继承数据库)
    • 校对集:collate(继承数据库)
  • 表创建语法: create table [数据库名.]表名(字段名 字段类型,...字段名 字段类型)表选项;

1、创建简单数据表(指定数据库创建数据表)

create table db_2.t_1(
	name varchar(50)
);

2、创建数据表——多字段

# 使用数据库(进入数据库环境)
use db_2;
create table t_2(
    name varchar(50),
    age int,
    gender varchar(10)
);

3、创建数据表——表选项

create table t_3(
	name varchar(50)
)engine Innodb charset utf8MB4;

小结

1、创建数据库表是为了存储具体数据

2、数据表的创建与字段是同时存在的

3、数据表的创建需要指定数据库

  • 在表名字前指定数据库:数据库名.表名
  • 进入数据库环境(常用)

4、一张数据表用来存一组相关数据

5、扩展:存储引擎是指数据存储和管理的方式,MySQL中提供了多种存储引擎,一般使用默认存储引擎

  • InnoDB
    • 默认存储引擎
    • 支持事务处理和外键
    • 数据统一管理
  • MyIsam
    • 不支持事务和外键
    • 数据、表结构、索引独立管理
    • MySQL5.6以后不再维护

6、扩展:如果想创建一个与已有表一样的数据表,MySQL提供了一种便捷的复制模式

  • create table 表名 like 数据库名字.表名;

2) 显示数据表

目标:了解如何查看数据表结构

显示数据表:客户端通过指令显示已有的数据表

  • 数据表的显示跟用户权限有关
  • 显示数据表有两种方式
    • 显示所有数据表:show tables [from 指定数据库];
    • 显示部分:show tables like 'pattern';
    • 显示具体数据表的创建指令:show create table 表名;

1、显示所有数据表——当前数据库下

show tables;

2、显示所有数据表——指定数据库

show tables from db_3;

3、显示部分关联数据表——匹配

show tables like '%like';	# _表示匹配一个字符(固定位置),%表示匹配N个字符

4、显示数据表的创建指令

show create table t_1; # 看到的结果未必一定是真实创建的指令(系统会加工)

小结

1、显示数据表有两种形式

  • 显示所有数据表:show tables [from 指定数据库];
  • 显示部分:show tables like ‘pattern’; 匹配模式:_匹配单个字符,%匹配不限量字符
  • 显示数据表创建指令:show create table 表名;

2、显示数据表通常是为了验证数据表是否存在或者验证数据表的创建指令是否正确

3、在显示数据的时候可以使用不同的语句结束符

  • \\g:与普通分号无区别
  • \\G:纵向显示列数据

3) 查看数据表

目标:了解查看数据表的概念和掌握数据表查看的语法

查看数据表:指查看数据表中的具体结构

  • 通常是查看字段信息
  • 详细的显示字段的各项信息
  • 查看语法有三种(效果一样)
    • desc 表名;
    • describe 表名;
    • show columns from 表名;
desc t_1;

小结

1、数据表的查看是为了查看表中具体字段的信息

2、查看数据表的指令有多个,效果都一样

  • desc 表名;(常用)
  • describe 表名;
  • show columns from 表名;

3、查看表结构的原因通常是在开发过程中为了更清晰的了解数据的存储形式和要求

4) 更改数据表

目标:了解数据表的修改内容以及修改语法

更改数据表:修改表名字和表选项

  • 修改表名:rename table 表名 to 新表名;
  • 修改表选项:alter table 表名 表选项;

1、修改表名

rename table t_1 to t1;

注意:如果有时候想要跨库修改的话,需要使用数据库名.表名

2、修改表选项

alter table t1 charset utf8;

小结

1、更改数据表分为两个部分

  • 更改表名:rename table 原表名 to 新表名;
  • 更改表选项:alter table 表名 表选项

2、通常我们较少使用更改数据表,数据表应该在创建时就定义好

5) 更改字段

目标:了解字段更改的类型和基本语法的使用

更改字段:指针对表创建好后,里面字段的增删改

  • 字段操作包含字段名字、类型和属性的操作
  • 字段操作分为四类
    • 新增字段:add [column]
    • 更改字段名:change
    • 修改类型:modify
    • 删除字段:drop
  • 字段操作还有位置处理
  • 字段操作通常是在表已经存在数据后进行

① 新增字段

新增字段:在表创建好后往里面增加其他字段

  • 字段的新增必须同时存在字段类型

  • 新增语法:alter table 表名 add [column] 字段名 字段类型 [字段属性] [字段位置]

1、给已经存在的t_3表增加一个字段age

alter table t_3 add age int;

2、给已经存在的t_3表增加一个字段nickname

alter table t_3 add column nickname varchar(10);

小结

1、新增字段就是给已有表追加一个字段(较少)

2、字段新增必须指定字段类型

3、字段新增语法为:alter table 表名 add [column] 字段名 字段类型;

4、字段的追加默认是在所有字段之后

② 字段位置

字段位置:指字段放到某个指定字段之后

  • 字段位置分为两种
    • 第一个字段:first
    • 某个字段后:after 已经存在字段名
  • 字段位置适用于追加字段、修改字段、更改字段名
  • 字段位置语法:alter table 表名 字段操作 字段位置;

1、为t_3表增加一个id字段,放到最前面

alter table t_3 add id int first;

2、在t_3表name字段后增加一个身份证字段card

alter table t_3 add card varchar(18) after name;

小结

1、字段位置是配合字段操作的(新增、修改)

2、字段位置分两种

  • 最前面(第一个字段):first
  • 字段后面:after 已存在字段名

③ 更改字段名

更改字段名:指对已经存在的字段名进行修改

  • 字段名的修改也必须跟上字段类型
  • 字段名修改语法:alter table 表名 change 原字段名 新字段名 字段类型 [字段属性] [位置]

1、修改字段名card为sfz

alter table t_3 change card sfz varchar(18);

小结

1、字段名更改通常只是修改字段名字,但是也必须跟随类型

2、字段名修改语法:alter table 表名 change 原字段名 新字段名 字段类型

3、字段名修改change其实也可以修改字段类型、属性和位置,但是通常不使用(专人专事)

④ 修改字段

修改字段:指修改字段的相关信息

  • 修改字段类型、字段属性和位置
  • 修改字段语法:alter table 表名 modify 字段名 字段类型 [字段属性] [位置];

1、修改身份证的类型为char(18)并且位置放到id后面

alter table t_3 modify sfz char(18) after id;

小结

1、修改字段包含多个操作

  • 字段类型修改
  • 字段属性修改
  • 字段位置修改
    2、修改字段语法:alter table 表名 modify 字段名 字段类型 [字段属性] [位置];

6)删除字段

目标:了解字段删除语法

删除字段:即将某个不要的字段从表中剔除

  • 删除字段会将数据也删除(不可逆)
  • 删除字段语法:alter table 表名 drop 字段名;

1、删除年龄字段

alter table t_3 drop age;

小结

1、字段删除在删除字段名的同时会删除字段对应的数据,而且不可逆

2、字段删除语法:alter table 表名 drop 字段名

7)总结

1、数据表结构的操作是数据操作的基础

2、一般情况下新手都不会接触数据表的设计,但是作为一名新手一定要在使用数据表之前查看数据表的结构信息

3、不要轻易的修改或者删除数据表结构(数据会一并被处理掉

4、数据表结构的维护通常是一次性的,在业务开展前尽可能好的设计好数据表,而不要后期再进行其他维护

4、SQL数据操作

目标:掌握mysql中数据的增删改查的基本操作

  • 新增数据
  • 查看数据
  • 更新数据
  • 删除数据

1)新增数据

目标:了解数据的新增指令和逻辑,实现数据的入库操作

新增数据:将数据插入到数据表永久存储

  • 新增数据是根据表的字段顺序和数据类型要求将数据存放到数据表中
  • 数据表中的数据以行(row) 为存储单位,实际存储属于 字段(field) 存储数据
  • 数据插入分两种方式:
    • 全字段插入:insert into 表名 values(字段列表顺序对应的所有值);
    • 部分字段插入:insert into 表名 (字段列表) values(字段列表对应的值顺序列表);

1、给t_3表插入一条完整数据

insert into t_3 values(1,'440111200011111101','Jim','Green');

2、根据字段插入数据

insert into t_3 (id,sfz,name) values(2,'441000200011111211','Tom');

小结

1、数据插入是利用insert指令将数据永久存储到数据表中

2、数据存储以为单位,字段为最小实际存储单位

3、数据插入分为两种方式插入数据

  • 全字段插入
    • insert into 表名 values(值列表)
    • 值列表必须与字段列表顺序一致
    • 值列表的每个数据类型必须与字段类型一致
  • 部分字段插入
    • insert into 表名 (字段列表) values(值列表)
    • 字段列表可以顺序随意
    • 值列表必须与指定的字段列表顺序一致
    • 值列表元素的类型必须与字段列表的类型一致

2、查看数据

目标:了解数据查看的指令,掌握数据查看实际操作

查看数据:将表中已经存在的数据按照指定的要求显示出来

  • 查到的数据显示出来是一张二维表
  • 数据显示包含字段名数据本身
  • 数据查看分两种方式
    • 查看全部字段:使用*代替所有字段
    • 查看部分字段:明确字段名,使用逗号分隔
  • 查看数据很多时候也是根据条件查询部分数据
  • 查看语法:select */字段列表 from 表名;

1、查看t_3表中所有数据

select * from t_3;

2、查看t_3表中的name和身份证信息

select name,sfz from t_3;

3、查看t_3表中id值为1的信息

select * from t_3 where id = 1;

小结

1、数据查看是数据库中最常用的操作(99%)

2、数据查看分两种情况

  • 查看全部:select * (*叫做通配符)
  • 查看部分:select 字段列表(建议)

3、实际使用时通常会带where条件进行数据筛选

3) 更新数据

目标:了解更新数据的语法,掌握数据更新操作

更新数据:即更新某个已有字段的值

  • 更新数据通常是根据条件更新某些数据,而不是全部记录都更新
  • 更新数据语法:update 表名 set 字段 = 新值[,字段 = 新值] [where条件筛选];

1、更新所有记录的身份证信息

update t_3 set sfz = '440100200010100001';

2、更新某个记录的多个字段数据

update t_3 set name = 'Lily',sfz = '440100200010100002' where id = 1;

小结

1、更新数据的针对记录的字段数据进行更新

2、更新通常是限定条件更新(一般不会更新全部)

4、删除数据

目标:了解删除语法,掌握删除操作实现

删除数据:将数据从已有数据表中清除(针对的是记录record)

  • 删除数据是一种不可逆操作
  • 数据删除通常都是有条件删除
  • 数据删除语法:delete from 表名 [where条件];

1、删除t_3表中id为2的数据

delete from t_3 where id = 2;

小结

1、数据删除是不可逆的操作

2、数据删除通常都匹配条件部分删除

5)总结

1、数据操作不论是初级开发者还是高级开发者都频繁接触的操作

2、数据操作中读操作,往往占据了整个操作的99%以上

3、基本的增删改查是作为进阶的必要知识,必须熟练掌握和频繁练习(尽可能使用原码,集成工具后期开发时使用)

python二级考试知识点(史上最全)(代码片段)

Python二级考试知识点(一)1、Python语言基本语法元素考点1.1程序的基本语法元素:程序的框架、缩进、注释、变量、命名、保留字、数据类型、赋值语句、库引用33个保留字6种数据类型4种引用方法:import库、from... 查看详情

23篇大数据系列sql基础知识(史上最全,建议收藏)(代码片段)

作者简介蓝桥签约作者、大数据&Python领域优质创作者。维护多个大数据技术群,帮助大学生就业和初级程序员解决工作难题。我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展!大数据系列文章ÿ... 查看详情

史上最全的latex特殊符号语法(代码片段)

运算符语法效果语法效果语法效果+++-−−\\triangleleft◃◃\\pm±±\\div÷÷\\triangleright▹▹\\times××\\setminus∖∖\\star⋆⋆\\cdot⋅⋅\\cap∩∩\\ast∗∗\\cup∪∪\\sqcup⊔⊔\\circ∘∘\\vee∨∨\\sqcap⊓⊓\\bullet∙∙\\wedge∧∧\\oplus⊕⊕\\ 查看详情

python知识点(史上最全)(代码片段)

Python期末考试知识点(史上最全)python简介Python是一种解释型语言Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行数据类型:整形int无限大浮点型float小数复数complex由实数和虚... 查看详情

史上最全jquery知识点小结(下)(代码片段)

话说上回:史上最全jQuery知识点小结(上)本节案例请移步查看:jQuery-案例欢迎学习交流!!!持续更新中…文章目录2.jQuery常用API2.4jQuery属性操作2.5jQuery内容文本值2.6jQuery元素操作(遍历、创建... 查看详情

java知识点详解9,史上最全(代码片段)

tryif(true==b_chinese_file)//测试字节流读取中文乱码问题fis=newFileInputStream(ioTest.const_fileChinese);elsefis=newFileInputStream(ioTest.const_file);intread=0;while((read=fis.read())! 查看详情

史上最全jquery知识点小结(上)(代码片段)

本节案例请移步查看:jQuery-案例欢迎学习交流!!!持续更新中…文章目录1.jQuery概述JavaScript库jQuery概念jQuery的入口函数jQuery的顶级对象$jQuery对象和DOM对象2.jQuery常用API2.1jQuery选择器基础选择器层级选择器筛选选... 查看详情

23篇大数据系列scala基础知识全集(史上最全,建议收藏)(代码片段)

作者简介:蓝桥签约作者、大数据&Python领域优质创作者。管理多个大数据技术群,帮助大学生就业和初级程序员解决工作难题。我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展!大数据系列文... 查看详情

[转]史上最全的mssql复习笔记

阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联合结果集union12.CASE函数用法13.IFELSE语法14.WHILE循... 查看详情

史上最全面的springboot配置文件详解(代码片段)

SpringBoot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍。SpringBoot配置文件对SpringBoot来说就是入门和基础,经常会用到,所以写下做个总结以便日后查看。1.配置文件当我们构建完SpringBoot项目后,会... 查看详情

号称史上最全java多线程与并发面试题总结—基础篇(代码片段)

前言 多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括... 查看详情

android之一篇史上最适合最全面的jni入门教程(代码片段)

...勤动手才能掌握,否则里边的坑也只是想当然demoNDK的基础知识,强烈推荐小楠总的NDK系列博客,先拜读一遍,照着学习还是很厉害的一.基础知识   JNI:是ja 查看详情

bytebuddy(史上最全)(代码片段)

ByteBuddy(史上最全)文章很长,建议收藏起来慢慢读!总目录博客园版为大家准备了更多的好文章!!!!推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,... 查看详情

bytebuddy(史上最全)(代码片段)

ByteBuddy(史上最全)文章很长,建议收藏起来慢慢读!总目录博客园版为大家准备了更多的好文章!!!!推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,... 查看详情

操作系统面试题(史上最全持续更新)(代码片段)

尼恩面试宝典专题40:操作系统面试题(史上最全、持续更新)本文版本说明:V28《尼恩面试宝典》升级规划为:后续基本上,每一个月,都会发布一次,最新版本,可以联系构师尼恩获取,... 查看详情

史上最全java面试题(带全部答案)(代码片段)

今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这... 查看详情

javascript代码技巧——史上最全类型判断(代码片段)

1.typeof(不能区分复杂类型)console.log(typeofbool);//booleanconsole.log(typeofnum);//numberconsole.log(typeofstr);//stringconsole.log(typeofund);//undefinedconsole.log(typeofnul);//objectconsole. 查看详情

javascript代码技巧——史上最全类型判断(代码片段)

1.typeof(不能区分复杂类型)console.log(typeofbool);//booleanconsole.log(typeofnum);//numberconsole.log(typeofstr);//stringconsole.log(typeofund);//undefinedconsole.log(typeofnul);//objectconsole. 查看详情