一、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 表名
4.SQL语法总结
1)SQL是一种类似于自然语言的编程语言
- 基本SQL指令以行为单位
- 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 ab_3 charset utf8MB4 collate utf8mb4_general_ci;
小结:
1)数据库的创建是存储数据的基础,数据库的创建通常是一次性的
2)创建数据库的语法包含几个部分
- 关键字:create database
- 数据库名字:自定义名字
- 数字、字母和下划线组成
- 不区分大小写
- 不能以数字开头
- 使用下划线创建复杂数据库名字
- 数据库选项:非必须的规定
- 字符集 : charset / character set 字符集,非必须,默认继承DBMS
- 校对集 : collate 校对集,非必须,依赖字符集
3)创建好的数据库可以在数据存储指定地点(安装时指定)看到
- 一个数据库对应一个文件夹
- 每个数据库下有个对应的文件,里面有字符集和校对集信息(MySQL7以前才有)
2.显示数据库
显示数据库:通过客户端指令来查看已有数据库
- 数据库的查看是根据用户权限限定的
- 数据库的查看分为两种查看方式:
- 查看全部数据库
- 查看(具体的某一个)数据库创建指令
示例1,显示所有数据库 : show databases;
示例2,显示数据库创建指令 : show create database db_1;
小结:
1)查看数据库分为两种方式
- 查看全部: show databases;
- 查看具体创建指令: show create database 数据库名字;
2)查看数据库的目的和应用
- 开发人员确认数据库是否存在
- 数据库管理员维护
3.使用数据库
使用数据库:指在进行具体SQL指令之前,让系统知道操作针对的是哪个数据库
- 数据库的操作通常是针对数据表或者数据
- 通过使用数据库可以让后续指令默认针对具体数据库环境
- 使用数据库语法 : use 数据库名字;
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 数据库名字;
示例:drop database db_1;
小结:
1)删除数据库使用指令 : drop database 数据库名字;
2)数据库的删除不可逆
- 删除会清空当前数据库内的所有数据表(表里数据一并删除)
- 删除数据库会将对应的文件夹从磁盘中抹掉
- 数据库删除要谨慎(一般不建议删除)
6.总结
1)数据库的操作通常是一次性的,即在进行业务代码开展之前将数据库维护好
2)数据库的删除需要非常慎重,尤其是生产环境,数据库的删除是不可逆(会将数据库中的所有数据全部删除)
三、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
- 默认存储引擎
- 支持事务处理和外键
- 数据统一管理
- Mylsam
- 不支持事务和外键
- 数据、表结构、索引独立管理
- MySQL5.6以后不再维护
6)扩展:如果想创建一个与已有表一样的数据表,MySQL提供了一种便捷的复制模式
- create table 表名 like 数据库名字.表名
2.显示数据表
显示数据表:客户端通过指令显示已有的数据表
- 数据表的显示跟用户权限有关
- 显示数据表有两种方式
- 显示所有数据表
- 显示具体数据表的创建指令
示例1,显示所有数据表——当前数据库下 :show tables;
示例2,显示所有数据表——指定数据库 : show tables from db_3;
示例3,显示部分关联数据表——匹配 :show tables like ‘%like’; 或者 show tables like ‘____like’;
示例4,显示数据表的创建指令 : show create table t_1; #看到的结果未必一定是真实创建的指令(系统会加工)
PS: _表示匹配一个字符(固定位置),%表示匹配N个字符
小结:
1)显示数据有两种形式
- 显示所有数据表 : show tables [from 指定数据库];
- 显示部分:show tables like ‘pattern’ ; 匹配模式:_匹配单个字符,%匹配不限量字符
- 显示数据表创建指令 : show create table 表名;
2)显示数据表通常是为了验证数据表是否存在或者验证数据表的创建指令是否正确
3)在显示数据的时候可以使用不同的语句结束符
- \g :与普通分号无区别
- \G:纵向显示列数据 (更清楚方便查看数据)
3.查看表结构
查看数据表:指查看数据表中的具体结构
- 通常是查看字段信息
- 详细的显示字段的各项信息
查看语法有三种(效果一样)
desc 表名;
describe 表名;
show columns from 表名;
示例:查看t_1表有哪些字段 : 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
- 字段操作还有位置处理
- 字段操作通常是在表已经存在数据后进行
5.1新增字段:在表创建好后往里面增加其他字段
- 字段的新增必须同时存在字段类型
- 新增语法: 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)字段的追加默认是在所有字段之后
5.2字段位置:指字段放到某个指定字段之后
- 字段位置分两种
- 第一个字段: 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 已存在字段名
5.3更改字段名:指对已经存在的字段名进行修改
- 字段名的修改也必须跟上字段类型
- 字段名修改语法 : alter table 表名 change 原字段名 新字段名 字段类型 [字段属性] [位置]
示例 ,修改字段名card为sfz : alter table t_3 change card sfz varchar(18);
小结:
1)字段名更改通常只是修改字段名字,但是也必须跟上字段类型
2)字段名修改语法: ater table 表名 change 原字段名 新字段名 字段类型
3)字段名修改change其实也可以修改字段类型、属性和位置,但是通常不使用
5.4修改字段:指修改字段的相关信息
- 修改字段类型、字段属性和位置
- 修改字段语法 : alter table 表名 modify 字段名 字段类型 [字段属性] [位置];
示例,修改身份证的类型为char(18)并且位置放到id后面 : alter table t_3 modify sfz char(18) after id;
小结:
1)修改字段包含多个操作
- 字段类型修改
- 字段属性修改
- 字段位置修改
2)修改字段语法: alter table 表名 modify 字段名 字段类型 [字段属性] [位置]
6.删除数据表
删除字段:即将某个不要的字段从表中删除
- 删除字段会将数据也删除(不可逆)
- 删除字段语法: alter table 表名 drop 字段名;
示例,删除年龄字段 : alter table t_3 drop age;
小结:
1)字段删除在删除字段名的同时会删除字段对应的数据,而且不可逆
2)字段删除语法:alter table 表名 drop 字段名
7.总结
1)数据表结构的操作是数据操作的基础
2)一般情况下新手都不会接触数据表的设计,但是作为一名新手一定要在使用数据表之前查看数据表的结构信息
3)不要轻易的修改或者删除数据表结构(数据会一并被处理掉)
4)数据表结构的维护通常是一次性的,在业务开展前尽可能设计好数据表,而不要后期再进行其他维护
四、SQL数据操作(掌握Mysql中数据的增删改查的基本操作)
1.新增数据
2.查看数据
3.更新数据
4.删除数据
主要是为了我们搭建数据库,创建数据表,实现数据的存储与查询操作