zoukankan      html  css  js  c++  java
  • 6月13号

    MySQL操作

     

    数据库

    1、增

      语法:create database 库名;

      库名的一些规范:可以有数字、字母、下划线、@、#、$组成,

              区分大小写

              不能使用关键字 例如:create alter

              不能单独使用数字

              最长128位

    2、删

      语法:drop database 数据库名;

    3、改

      没有专门的修改指令

      删了重建

    4、查

      语法:1、show databases;   # 查看存在的所有库

         2、show create database 数据库名   # 查看某一个库的创建信息

    5、使用

      语法:use 数据库名      # 相当于进入文件夹里,可以对表进行一些操作,只需要ues一次(只在同一个库里做修改)

    数据类型

      数据类型的后面可以带上宽度,括号苦括起来,数值型的宽度只用于显示

      其他类型的宽度表示的是最大字符数,如果你插入的字符超过这个最大宽度,

      不会报错,之后取最大宽度的值,其他的值就丢失了

    1、数值型

      --整数型(唯一的区别就是取值范围不同)

        tinyint:小整数

          有符号:-128 ~ 127

          无符号:0 ~ 255

        int :整数

          有符号:-2147483648 ~ 2147483647

          无符号:0 ~ 4294967295

        bigint:大整数

          有符号:-9223372036854775808 ~ 9223372036854775807

          无符号: 0 ~ 18446744073709551615

      --浮点型

        M:表示总长度

        D:表示小数点后的长度

        float(M,D) 浮点型

          随着长度的不断增加,可能精准的慢慢下降

        decimal(M,D)定点型  ,比浮点型精准

          随着长度的不断增加,精准度依旧

    2、字符串型

      char:定长 简单粗暴 浪费空间 存取速度快

      varchar:变长字符串 精准 节省空间 存取速度慢

      一般没有百分百把握的情况下,都使用varchar,除了像密文密码这样,用MD5加密过长度始终一样。

    3、日期型

      data  :xxxx-xx-xx   2019-6-12(年月日)

      time  :xx:xx:xx  10:14:32(时分秒)

      datatime:xxxx-xx-xx xx:xx:xx 2019-6-12 10:14:32

      推荐使用datatime

    4、枚举型和集合型

      枚举enum  :在指定范围内多选一

      集合set    :在指定范围内多选多

    数据表

    1、增

    # sql语法:
    create table 表名(
    列1 列属性 [是否为空,默认值设置],
    列2 列属性 [是否为空,默认值设置],
    列3 列属性 [是否为空,默认值设置]
    )engine=innodb charset=utf-8;

    ps:engine代表的引擎  有innodb 和 myisam  mysql5.5版本以上默认是innodb

    创建表需要注意的点:

      1、列名和列属性是必须的,后面的约束条件(是否位空,默认值)可以根据需求添加

      2、每个列之间用逗号隔开,最后一个列的后面不带逗号

    2、查

    """
    1、show tables; # 查询当前库中的所有的表
    2、describe 表名; # 查询的是当前表的结构信息,describe可以缩写成desc
    3、desc create table 表名; # 查询建表信息
    """

    3、改

    复制代码
    """
    修改字段
    alter table 表名 change 原列名 新列名 列属性 [约束条件];
    新增字段
    alter table 表名 add 新列名 列属性 [约束条件];
    删除字段
    alter table 表名 drop 列名;
    """
    复制代码

    4、删

    drop table 表名;

    表和表中的数据都会被删除,工作中一般不轻易使用

    数据行

    1、增

    insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...)...;

    注意点:

      1、列名数量必须要和值得数量对应上

      2、值必须要满足对应列的一些约束

      3、一次像插入多行,用括号分隔开,一个括号代表一行

    2、查

    select * from 表名;
    # 将表中的所有数据全部列出来
    select 列名1,列名2.. from 表名;
    # 将表中的某一列数据查出来
    select * from 表名 where 列名=值;
    # 将表中某一列位某个值 的 一整行全部列出来

    3、改

    update 表名 set 列名=值;
    # 将表中的某一列全部改成某个值
    update 表名 set 列名=值 where 列名2=值2;
    # 将表中的某一列(列2)为某个值(值2) 的 另一个列(列名)的值改为某个值(值)
    update 表名 set 列1= 值1,列2=值2 where 列3=值3;
    # 当某个列(列3)位某个值(值3)时,同时修改多个列的值

    4、删

    delete from 表名;

    删除表中所有数据,如果表中有列是自增加的话,再次添加会延续上一次自增加的值

    truncate 表名;

    删除表中所有数据,再次添加时,自增加的值会重置

    delete from 表名 where 列=值;

    删除表中某一行数据

    delete与truncate的区别

      delete是一行一行的删,效率慢

      truncate是全部一起删掉,速度快

    主键

    含义:相当于字典的目录,作用就是为了加快索引取值


    每一个表默认存在一个主键,主键所有的值都是唯一的
    创建表时可以通过primary key 把某一列设置成主键
    如果不设置,会有一个内部的主键

    外键

    定义

      当一张表里面有一个列的值 是 用另一张表主键来表示的时候,那么这个列就成为外键

    原因

      一张表中数据可能会反复出现并且字符长度过长,如果我们不适用外键的话,会特别的占用资源

    设置方法

      1、一个表要使用外键,在创建这个表之前,那个外键的表就必须已经存在

      2、创建的时候通过下面sql语句跟在创建列的后面

    constraint 键名 foreign key (列) references 表(主键列)

      3、键名没有要求可以自定义,但是如果要创建多个外键的话,键名不能相等

    例子

    create table t2(
    t2_id int auto_increment primary key,
    name varchar(32) not null default '',
    cid int not null default 0,
    constraint fk_t2_t1 foreign key (cid) reference t1(t1_id)
    )engine=innodb charset=utf8;
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/huikejie/p/11028000.html
Copyright © 2011-2022 走看看