第三十五 MYSQL 语句

为什么使用数据库:

   数据如果比较多时我们需要考虑使用数据库来经行存储

数据库的分类:

  关系型数据库:

    1.有约束

    2.基于硬盘的存储(即将数据永久存储到硬盘上,落地)

    典型代表:Mysql   oracle(国企) sqserver(微软) aqllite   db2

  非关系型数据库:

    1.没有约束(key-->value)

    2.基于内存存储(将数据放入内存中)

    典型代表:Memcache, redis(微博),mongodb

Mysql的架构:

  即c/s架构,基于socket 通信方式,有客户端,服务端

Mysql的安装:

  版本:(5.5,5.7)此区间的是比较稳定的,使用的最多。

数据库的操作:

  数据库--》于文件夹

  表---------》文件

  数据行---》文件中的内容

  1.数据库:

    增:sql语句:

        create database 数据库名 ]  charset=utf8;

    删:

        drop database [ 数据库名 ] ;

    改:

        没有修改数据库的指令,删除重新建

    查:

        show databases;

    使用:

        use  [ 数据库名 ];

  

2. 数据表:

  新建:
  use db1;

  版本0:
  SQL语句:
  create table 表名 (
          列名1 列类型
          );

例子:
  create table t1 (
         id int,
         name char(32)
         );

  增加
    指令:
      insert into 表名 (列1, 列2) values (值1, 值2);

    例子:
      insert into t1 (id, name) values (1, ‘zekai‘);
      insert into t1 (id, name) values (2, ‘你好‘);

    改进1:
      create table 表名 (
              列名1 列类型
              )engine=Innodb charset=utf8;

    ps:
      引擎: Innodb 和 MyIsam
      5.5 版本以上 默认是Innodb

    create table t2 (
            id int,
            name char(32)
             )engine=Innodb charset=utf8;

    insert into t2 (id, name) values (1, ‘你好‘);
    insert into t2 (id, name) values (1, ‘xxx‘);

   改进2:

    create table 表名 (
            列名1 列类型 auto_increment primary key
            )engine=Innodb charset=utf8;

    create table t4 (
           id int auto_increment primary key,
           name char(32) not null default ‘‘
           )engine=Innodb charset=utf8;

    auto_increment : 自增
    primary key : 主键索引 (作用: 加快查找的速度)
    not null : 不能为空
    default : 默认值

注意: 后面一列写完之后, 不能加逗号 (*********)

一种:
  insert into t3 (id, name) values (1, ‘你好‘);
  insert into t3 (id, name) values (2, ‘xxx‘);
二种:
  insert into t3 (name) values (‘hello‘);
  insert into t3 (name) values (‘xxx‘);

  最终的格式:
     create table 表名 (
              列1 列属性 [是否为null 默认值],
              列2 列属性 [是否为null 默认值],
              .....
              列n 列属性 [是否为null 默认值]
              )engine = 存储引擎 charset = 字符集

  最终的例子:
     create table t4 (
            id int auto_increment primary key,
            name char(32) not null default ‘‘,
            pwd char(32) not null default ‘‘
            )engine=Innodb charset=utf8;

  查看:
  指令:
    select 列名 from 表名;
  例子:
    select * from t1;

列类型:

  a. 数值型
  create table t4 (
          id unsigned mediumint auto_increment primary key,
          name char(32) not null default ‘‘,
          pwd char(32) not null default ‘‘
         )engine=Innodb charset=utf8;

  tinyint :
  范围:
  有符号: -128到127
  无符号: 0 到 255 unsigned
  smallint
  范围:
  有符号: -32768到32767
  无符号: 0 到 65535 unsigned

  mediumint
  范围:
  有符号: -8388608到8388607
  无符号: 0 到 16777215 unsigned
  int
  bigint

  区别:
  a. 取值范围不一样, 根据自己公司的业务来去选择
  b. 无符号和有符号的意思

  float(M,D) 浮点型
  decimal(M,D) 定点型 比float更加的精准

  例如: 3.1415151519868789789
  float: 3.141515000000000000
  decimal : 3.1415151519868789789

  126.35

  M:小数总共多少位 decimal(5, )
  D:小数点后面几位 decimal(5, 2)

  使用场景:
  比如 说存 salary 工资 : 6000.23 decimal(,2)

  b. 字符串类型

  char : 定长 char(32) 这一列的值就是32 优点: 速度快 缺点: 浪费
  varchar : 变长 varchar(32) 优点: 不浪费, 节省空间 缺点: 速度慢
  根据自己公司的业务来去选择:

  create table userinfo (
            id unsigned mediumint auto_increment primary key,
            name varchar(128) not null default ‘‘,
            pwd char(32) not null default ‘‘,
            create_time datetime not null default ‘1970-01-01 00:00:00‘
           )engine=Innodb charset=utf8;
      一般情况下, 如果没有100%的把握, 都是用varchar()

text: 文本 范围比较大, 如果存储大量字符的话, 可以使用这个字段

  c. 时间类型
    date 2019-6-12
    推荐使用datetime


指令:
drop table 表名;

连带着将数据表中的所有数据都会删掉

ps: 工作中, 线上数据库, 这个命令根本不会让你用到

实例:
drop table t1;

  查询
    show tables;

    desc 表名; : 查看表的结构

    show create table 表名 : 查看表的创建过程

    关于主键自增: (不是重点)
    show session variables like ‘auto_inc%‘;
    set session auto_increment_increment = 2;

    show global variables like ‘auto_inc%‘;
    set global auto_increment_increment = 2;

  修改
    create table t4 (
            id int auto_increment primary key,
            name char(32) not null default ‘‘,
            pwd char(32) not null default ‘‘
           )engine=Innodb charset=utf8;

  修改字段:
    alter table 表名(t3) change 原列名(name) 新列名(username varchar(32) not null default ‘‘);

  新增字段:
    alter table 表名(t3) add 新列(pwd char(32) not null default ‘‘);

  删除字段:
    alter table 表名(t3) drop 列名(pwd);

3. 数据行:

  增
    insert into t3 (id, name) values (1, ‘你好‘);

  查询

    select * from t3; : 将表中的 所有的列全部列出
    select 列名, 列名, 列名 from t3 : 将某一列的值查出

  删

    delete from 表名(t3); 将表中的所有的 数据删除掉, 再次添加的时候, 继续会延续上一个 ID

    truncate 表名(t3); 将表中的所有的 数据删除掉, 再次添加的时候, ID 会重新开始

    truncate 速度快

    ps: 工作中, 线上数据库, 这个命令根本不会让你用到

    delete from 表名(t3) where name = ‘xxxxx‘;

  修改

    update t3 set username=‘zekai‘;

    update t3 set username=‘xxxx‘ where id=3;

    update t3 set username=‘xxxx‘, pwd=‘xxxxx‘ where id=3;

七. 外键: (***********************)

    缺点:        1. 数据重复        2. 如果 部门过长的话, 太占用空间
    解决方法:

        重新设计一张表, 这张表 中存放部门的相关信息
    部门表:

        create table department (            id  int auto_increment primary key,             depart_name varchar(32)  not null  default ‘‘        )engine=Innodb charset=utf8;

        insert into department (depart_name) values (‘公关‘), (‘关关‘),(‘关公‘);

        create table userinfo (             id  int auto_increment primary key,             name varchar(32) not null default ‘‘,            depart_id int not null  default 1,

            # constraint 外键名(fk_userinfo_depart) foreign key (列名(depart_id)) references 表名(department)(关联的列名(id)),            constraint fk_userinfo_depart foreign key (depart_id) references department(id)

        )engine=Innodb charset=utf8;
        insert into userinfo (name, depart_id) values (‘root1‘, 1);        insert into userinfo (name, depart_id) values (‘root2‘, 2);  错误的

        注意:            创建多个外键的时候, 名称不能一样

        =====> 一对多

原文地址:https://www.cnblogs.com/sry622/p/11014636.html

时间: 2024-08-30 07:26:51

第三十五 MYSQL 语句的相关文章

Python学习日记(三十五) Mysql数据库篇 三

使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名完成创建,再添加数据: 使用外键将两表产生联系 再创建一个department表 添加数据: 创建外键,右键userinfo设计表创建外键: 写入SQL语句 点击查询->新建查询 转储SQL文件 将SQL文件进行备份 保存数据和结构 保存结构 使用终端进行转储 保存数据和结构(备份) 保存结构(备份

Python进阶(三十五)-Fiddler命令行和HTTP断点调试

Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 ??上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都称为一个session).界面中能够看到Fiddler抓取的全部HTTP请求.而为了更加方便的管理全部的session, Fiddler提供了一系列内置的函数用于筛选和操作这些session(习惯命令行操作Linux的童鞋应该能够感受到这会有多么方便

Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

中国,第三十五个生日.周以纯

1 群山对江河说 江河对森林说 森林对土地和太阳说 土地和太阳对人说 十亿中华儿女对世界说—— 中国!中国 沿着历史长河的古道 走进第三十五个 金灿灿的十月 大地和天空 欢声和金风,旗的红云 神圣的五颗金星 镶嵌在中国的 平川.高原.大漠…… 从未有过的蓬勃—— 风,撒着欢儿奔跑 雨,适着时令洒落 心,在一个节拍上跳荡 爱,在一棵大树上结果 2 呵!中国 在过第三十五个生日 心地,再不窄小狭隘 却是宇宙般寥阔 胸怀,再无骤雨恶风 却是蓝天般澄澈 眼界,再不短浅局限 却是穿越一切微观宏观世界 该摈

Welcome to Swift (苹果官方Swift文档初译与注解三十五)---248~253页(第五章-- 函数 完)

Function Types as Return Types (函数类型作为返回值类型) 一个函数的类型可以作为另一个函数的返回值类型.可以在一个函数的返回值箭头后面写上一个完整的函数类型. 例如: 下面的例子定义了两个简单的函数,分别为stepForward 和 stepBackward.其中stepForward函数返回值比它的输入值多1,stepBackward函数返回值比它输入值少1.这两个函数的 类型都是(Int) -> Int: func stepForward(input: Int

NeHe OpenGL教程 第三十五课:播放AVI

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错.你可以试试. 首先我得说我非常喜欢这一章节.Jonat

Java进阶(三十五)java int与integer的区别

Java进阶(三十五)java int与integer的区别 前言 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象. 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而integer 是后者(也就是一个类):因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null. 2.初始化时: int i =1; Integer i= new In

三十五、git commit简介

翻译整理自: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-commit.html 在用git来进行版本控制时,我需要执行git commit命令,将索引内容添加到仓库中. 示例1: git commit  -m "提交的描述信息" 如果我们这里不用-m参数的话,git将调到一个文本编译器(通常是vim)来让你输入提交的描述信息 可能一天下来,你对工作树中的许多文档都进行了更新

IT行业:听说编程编到三十五岁就没人要了一定要转行找出路

我听说编程编到三十五岁就没人要了一定要转行找出路是吗? 这个观点虽然很流行,但根本不值一驳.现在三十五岁转行的那些人,都具有前面所说的那些特征,对学习新技术不感兴趣,对探索计算机的本质不感兴趣,得过且过,下了班就是打游戏.看电视,总之就是懒.如果是开出租.摆摊,勤快人懒人都有饭吃,而IT这一行对懒人是非常无情的,懒人就不该入IT这一行,不从自身找原因,却到处散布这种言论,怪社会不好,打击新人的信心,着实可恨. 另外一种情况,编程编到三十五岁,进入公司的管理层,或者自己创业,这都是很勤快的人,如果