SQL基本操作

SQL:Structured Query Language:结构化查询语言(通称: 针对所有的关系型数据库)

SQL分为三个部分

  • DDL: Data Definition Language,数据定义语言: 定义结构(数据库,数据表,视图,函数等: create/drop/alter)
  • DML: Data Manipulation Language,数据操作语言: 数据操作(增删改查: insert/delete/update/select): 在DML中因为使用的最多的查询: DQL(Data Query language:数据查询语言: select)
  • DCL: data Control Language,数据控制语言: 权限控制(用户管理, 权限分配: grant/revoke)

SQL是针对关系型数据库,而不是针对某个具体的数据库产品: SQL本身有很多规定, 但是没有一种是明确规定必须怎么设计的(如W3C)

SQL也是一种非强制的规范: 在不同的数据库产品里, 对应的SQL指令会有一些小小的区别(但是整体是一样).

基本操作分为三种:

  • 库操作
  • 表操作(字段)
  • 数据操作

基本操作都是对对象的增删改查:CRUD

  • C: create,新增
  • R: retrive/read,查询(读取)
  • U: update,更新(修改)
  • D: delete,删除

SQL操作基本语法:SQL是一条一条的指令,每条指令以语句结束符结束:";" , "g" , "G"

";"与"g"本质效果是一样; "G"将结果纵向显示

SQL中也有不少注释:

  • -- : 两个中划线 + 空格 + 注释内容(单行注释)
  • # : 单行注释
  • /**/ : 块注释

一、库操作

对数据库进行增删改查

1. 查看数据库

基本语法1:

show databases; -- 查看所有的数据库

查看语法2:

show databases like 'pattern'; -- 模糊匹配

单字符匹配: _, 匹配指定位置的一个字符
多字符匹配:%, 匹配指定位置的多个字符

查看语法3:

show create database 数据库名字; -- 查看数据库的创建语句

2. 新增数据库

创建数据库基本语法

create database 数据库名字 [库选项];

库选项: 数据库的其他特性: 主要是两种

  • charset 字符集: 设定数据库内部的数据存储的字符集
  • collate 校对集: 设定数据库内部的数据的比较方式

这条语句的执行会发生什么呢?

1、会在数据库空间中产生一个叫做mydb的数据库

2、凡是创建的实体数据库都会在mysql的数据文件夹产生一个对应名字的数据库文件夹

3、在对应的数据库里面(文件夹内部)还会产生一个db.opt文件,保存了库选项: 校对集是依赖字符集存在

数据库的命名规范:

1、字母,下划线和数字构成, 不能以数字开头

2、若要使用关键字(系统已经使用)或者保留字(系统将要使用), 必须对关键字名字加上反引号(ESC键下的~对应的英文状态下的输出: `)

3、理论上,数据库名字支持中文: 但是需要设定字符集

4、中文数据库建立的文件夹会是额外编码(utf8-->GBK)

3. 修改数据库

数据库是不能修改名字的: 只能修改数据库的库选项(字符集和校对集)

alter database 数据库名字 新的字符集 新的校对集;

4. 删除数据库

删除数据库是一种结构操作: drop

drop database 数据库名字; -- 一次只能删除一个数据库

数据库删除到底发生了什么?

1、在库结构空间中会自动删除mydatabase数据库

2、在数据库存储数据的文件夹下(data)将数据库对应的文件夹整体删掉: 内部的所有内容全部都被删除

注意: 数据库不要轻易使用drop、一旦删除了,数据就永远找不回来了

二、表操作

1. 新增数据表

基本语法

create table 表名 (
    -- 所有的字段必须要有字段类型: 限制数据的格式
    字段名 字段类型(数据类型),
    字段名 字段类型 -- 最后一个不需要逗号分隔
) [表选项];

表选项:增加表的限制

  • 字符集: charset 具体字符集
  • 校对集: collate 具体的校对集
  • 存储引擎: engine 具体的存储引擎(innodb默认的和myisam)

表是属于数据库的:创建表的时候必须指定表所属数据库.

方案1: 显示的指定数据库: 在表名之前增加要指定的数据库名字.表名

方案2: 隐式的指定数据库: 首先进入到数据库环境: use 数据库名字;

方案3: 从已有表可以直接创建表: 可以省去字段的麻烦(获取结构: 不会获取数据)

create table 表名 like 数据库.表名; -- 创建一张表象指定数据库里面的某张表

备份或者进行数据库迁移的时候有可能用到.

创建数据表的语句执行之后会发生什么呢?

1、会在数据库环境下增加对应的数据表

2、会在对应的数据库文件夹下创建对应的数据表结构文件,frm是存储表结构的文件

2. 查看数据表

方案1: 查看所有表

 show tables;

方案2: 模糊匹配

show tables like 'pattern';

方案3: 查看数据表的创建语句

show create table 表名;

方案4: 查看表结构

desc/describe/show columns from 表名;

3. 修改数据表

表有自己的内容: 表名和表选项; 表还有额外的内容(字段)

维护表自身: 表名和表选项

修改表名: 可以修改

rename table 旧表名 to 新表名;

修改表选项: 字符集,校对集或者存储引擎

alter table 表名 [charset 字符集] [collate 校对集] [engine = 存储引擎];

维护字段: 字段的增删改

字段的细节操作很多

alter table 表名 add/drop/change/modify 字段 字段类型 [位置];

位置分为两种: first和after 字段名

增加字段

修改字段: 修改字段本身(名字),修改字段的数据类型

修改字段名

change 旧名字 新名字 字段类型 [位置];

修改字段的数据类型

modify 字段名 字段类型 [位置];

删除字段: 不要字段

alter table 表名 drop 字段名;

4. 删除数据表

基本语法

drop table 表名1[,表名2...];

删除语句执行后到底发生了什么?

1、数据库空间会删除对应的表;
2、数据库文件夹对应的表结构文件(如果是myisam表会删除三个文件)
注: 正是因为数据表的删除会一次性的将表结构, 数据以及对应的索引全部删除: 如果是误删, 找不回来. 需要特别谨慎操作: 先备份后操作.

三、数据操作

1. 新增数据

如果没有指定字段列表,那么值列表里面的数据的顺序必须完全按照字段的定义顺序存放

如果有指定字段列表: 字段列表里面的字段顺序与定义表的时候的顺序无关: 但是要求值的顺序也要跟指定的字段的顺序一致

2. 查看数据

基本语法

select 字段列表/* from 表名 where 条件判断;

条件判断: 是针对记录数
字段列表: 是针对字段数

指定字段列表: 顺序与定义的字段顺序无关

限制数据: where条件判断(where对每一条记录都进行条件匹配,匹配成功保留,失败就不获取)

3. 修改数据

修改指定记录中的某个字段的数据

Update 表名 set 字段名=新的值[,字段名=新的值] [where条件];

如果不使用where条件限定: 修改所有数据.

注: 修改数据是一种不可逆的操作, 更新需谨慎(一定要带where条件限定)

4. 删除数据

删除基本语法

delete from 表名 [where条件]; -- 如果没有指定条件: 全表删除

注: 删除数据是不可逆的, 需要谨慎操作.(备份)

原文地址:https://www.cnblogs.com/chenjiacheng/p/6522345.html