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;
  • 相关阅读:
    XML及XML的解析
    单例设计模式(Singleton)的优化
    Java反射初识
    TCP协议的简单应用一
    Java中实现线程同步的三种方法
    Java集合框架Map接口
    JDK1.8新特性之Stream类初识
    Java JDK1.8新特性之四大函数式接口
    tomcat 启动报 找不到 StrutsPrepareAndExecuteFilter。。
    easyjweb ejs 2014.2.25
  • 原文地址:https://www.cnblogs.com/huikejie/p/11028000.html
Copyright © 2011-2022 走看看