zoukankan      html  css  js  c++  java
  • 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条件]; -- 如果没有指定条件: 全表删除

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

  • 相关阅读:
    Linux启动报错missing operating system
    Linux tmp目录自动清理总结
    ORACLE口令管理
    oom_kill_process造成数据库挂起并出现found dead shared server
    Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089
    从flink-example分析flink组件(1)WordCount batch实战及源码分析
    从mysql高可用架构看高可用架构设计
    由mysql分区想到的分表分库的方案
    六边形效果
    迷你MVVM框架 avalonjs1.5.2 发布
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522345.html
Copyright © 2011-2022 走看看