zoukankan      html  css  js  c++  java
  • mysql 数据库

    SQL

    SQL: structured query language,结构化查询语言(数据以查询为主:99%是在进行查询)

    SQL分为三部分

    • DDL:

    data definition language,数据定义语言,用来存贮维护数据的结构(数据库,表)
    代表指令:crate,drop,,alter等

    • DML

    data manipualation language, 数据操作语言,用来对数据进行操作(数据表中的内容)
    代表指令:insert,delete,update等 其中DML中又单独分出一个类DQL(data query laguage:数据查询语言,select)

    • DCL

    data control language,数据控制语言,只要负责权限管理(用户)
    代表指令:grant revoke等

    交互方式

    1. 客户端连接认证:连接服务器,认证身份mysql -h[主机] -P[端口] -u[用户名] -p
    2. 发送SQL指令 show databases; -- 查看所有的数据库
    3. 服务器接收SQL指令:处理SQL指令:返回操作结果
    4. 客户端接收结果:显示结果
    5. 断开连接(释放资源:服务器并发限制)exit/quit/‘q’

    SQL基本操作

    基本操作:CRUD

    将SQL的基本操作根据操作对象分类:分为三类:库操作,表操作(字段),数据操作

    库操作

    对数据库的增删改查

    • 新增数据库
    基本操作
     注释:-- 双下划线+空格, 也可以使用 #号
    
    create databases 数据库名字 [库选项];
    
    库选项: 用来约束数据库,分为两个选项
        字符集设定:charset/character set 具体字符集(数据存储的编码格式):常用字符集:GBK和UTF8
        校对集设定:collate具体校对及(数据比较的规则)
    

    当数据库中SQL语句执行后发生了什么?

    1. 增加了对应的数据库信息
    2. 保存数据文件夹下Data目录,创建一个对应数据库名字的文件夹
    3. 文件夹下会有一个.opt文件,数据库库选项(字符集,校对集:校对集依赖字符集)

    查看数据库

    1. 查看所有数据库:show databases;
    2. 查看指定部分数据库:模糊查询 show databases like 'pattern' -- pattern 是匹配模式(%:表示匹配对各字符, _:表示匹配单个字符)注意:其中包含_ 需要‘’转义
    3. 查看数据库的创建语句:show create database [databasename];

    更新数据库

    数据库名字不可修改。
    数据库仅限修改库选项:字符集和校对集(校对集依赖字符集)
    alter database 数据库名字 [库选项];
    charset/character set = 字符集
    collate 校对集

    删除数据库

    drop database 数据库名;

    删除数据库语句后发生了什么?

    1. 在数据库内部看不到对应的数据库
    2. 对应的数据库存储文件夹内:数据对应名字的文件夹也被删除(级联删除)
      注意:数据库不要随意删除应,应先备份后操作(删除不可逆)

    表操作

    表与字段密不可分。

    新增数据表

    create table [if not exists] 表名(
        字段名 字段类型,
        字段名 字段类型  -- 最后一行不需要加逗号
        )[表选项];
    
        if not exists 做表名不存在就创建,否则不执行创建代码:检查功能
        表选项:控制表的表现
            1. 字符集 charset/character set 具体字符集; -- 保证表中数据存储的字符集
            2. 校对集:collata 具体校对集;
            3. 存储引擎:engin 具体存储引擎(innodb和myisam)
    
    创建数据库语句出错,no database selected 没有选择数据库。
    
    方案一:显示的指定表所属的数据库
    create table 数据库名.表名();  -- 将当前数据表创建到指定数据库下
    
    方案二:隐式指定表所属的数据库:先进入某个数据库环境,然后创建的表就自动归属到指定数据库
    进入数据库(使用数据库): use 数据库名字;
    

    创建数据表sql指令执行后发生了什么?

    1. 在指定数据库下已存在对应的表
    2. 数据库文件夹下会产生对应表结构的文件(和存储引擎相关) .frm 文件

    查看数据表

    1. 查看所有表:show tables;
    2. 查看部分表:show tables like '%s';
    3. 查看表的创建语句:show create table;
    4. 查看表结构:查看表中字段信息:desc/describe 表名; show collumns from 表名;

    修改数据表

    表本身,字段两部分

    修改表本身

    表本身修改:表名,表选项

    修改表名:rename table 旧表名 to 新表名;
    
    修改表选项:字符集,校对集和存储引擎
    alter table student charset GBK;
    

    修改字段

    字段操作:新增,修改,重名,删除

    新增字段;
    alter table 表名 add [column] 字段名 数据类型 [列属性][位置];
    位置:字段名存在表中的任意位置
    first: 第一个位置
    after: 在某一个字段之后;默认在最后一个字段之后;

    修改字段:修改通常是该属性或者数据类型
    alter table 表名 modify 字段名 数据类型 [属性][位置];

    重命名字段

    alter table 表名 change 旧字段 新字段 数据类型 [属性][位置];

    删除字段

    alter table drop 字段名;
    小心:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆);

    删除数据表

    drop table 表名1,表名2.。。;可以一次性删除多张表

    删除数据表指令执行后发生了什么?

    1. 在表空间中,没有了指定的表(数据也没了)
    2. 在数据库对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除
      注意:删除有危险,操作需要谨慎(不可逆)

    数据操作

    新增数据

    两种方案
    方案1:给全表插入数据,不需要指定字段列表,要求数据的之出现的顺序必须与表中设计的字段出先的顺序一直:凡是非数值数据,都需要使用引号(建议单引号)包裹

    insert into 表名 values(值列表),(值列表),(值列表),... -- 可以一次性插入多条记录

    方案2:给部分字段插入数据,需要选定字段列表:字段列出表现的顺序与字段顺序无关;但是只列表顺序必须与选定字段顺序一致。

    insert into 表名 (字段列表) values(值列表),values(值列表),... -- 可以一次性插入多条记录

    查看数据

    查看所有
    select */字段列表 from 表名;

    查看指定字段,指定条件的数据
    例如:select id, num, name from student where id=1;

    更新数据

    update 表名 set 字段 = 值 [where条件]; -- 建议都使用where ,没有where条件的是更新全部内容

    更新不一定会成功:当数据更新没有变化时就会显示影响条数0条;

    删除数据

    删除不可逆:谨慎删除

    delete from 表名 [where条件];

  • 相关阅读:
    第四代Express框架koa简介
    用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了
    TMS320C6678开发环境搭建:系统调试工具SecureCRT安装
    ESP8266 WiFi模块如何联网?
    C 语言简单编程速成
    【算法】二分搜索方法
    零拷贝
    paxos raft zab
    NIO Java API
    Linux安装redis和部署
  • 原文地址:https://www.cnblogs.com/sha-ka/p/12779099.html
Copyright © 2011-2022 走看看