zoukankan      html  css  js  c++  java
  • MySql笔记之数据表

    数据表:行称为记录  列称为字段 用来存储数据

    一、数据类型

    数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。

    在我们存储不同类型的数据时,为了数据优化存储,需要选择合适的数据类型。

    1. 整型

    计算机存储方式:二进制

    有符号位:数字的最高位用0 1 表达数字是正数或负数

    无符号位:不存在负数,永远是正数。范围大致是有符号位的2倍  关键词unsigned

    2. 浮点型倍

     m:小数点前后数字总位数   d:小数点后位数

            eg:float[(7,2)]   小数点后两位数,小数点前5位数,共7位数 最高99999.99

    3. 字符型

    char(M):定长类型   没有达到制定长度,后面空格补齐

    eg:char(5)  我们写值abc  ,但在计算机存储的时候,除了存abc后面将补充两个空格。

    varchar(M):变长类型   没有达到制定长度,不用空格补齐

    eg:varchar(5)  我们写值abc  ,在计算机存储的时候,只存abc。

    4. 日期时间型

    时间范围:1000.1.1-----9999.12.31

    二、数据表操作

    首先创建数据库test1

    1. use命令

    • 打开数据库,进入我们想要操作的数据库
    • 用法:use 数据库名称

    2. 查看当前使用数据库

    • select database();

    3. 创建数据表

     CREATE TABLE [IF NOT EXISTS] table_name (column_name data_type,... ...)

    小括号中:column_name 列名称(一般会实现确定好列数,当然也可以后期修改)  data_type 数据类型

    创建表tb1:username 长度20边长字符类型    age  无符号位tinyint整型   salary  无符号位单精度型

    4. 查看数据列表

     show tables [from db_name]; 

    默认显示正在使用的数据库的所有表

    查看其他数据库表后面加上from 数据库名即可

    4. 查看数据表结构

     show columns from tb_name; 

    5. 删除数据表
     DROP TABLE table_name ; 

    这里我们新创建了数据表tb2,再将它删除掉

    6. 插入记录

     INSERT [INTO] table_name ( field1,...fieldN ) VALUES ( value1,...valueN ); 

    当我们部分插入时需要将待插入的列名和值一一对应用括号()括起来,当我们插入所有列值时可以省略列名,自动按顺序匹配保存数值。

    7. 查找记录

     SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] 

    查看所有记录:用 * 代替列名

     select * from table_namel; 

    where用来匹配对应数值的记录,后面细说。 字符型数据操作需要用引号括起来

    8. 删除记录

    以删除john为例

      delete from tb1 where username = 'John'; 

    9. 添加列

    • 添加一列

    First指你插入的这一列在第一列

    After指插入在col_name这个列的后面

    省略first/after则默认最后一列

    eg:在username列后面加上password列

    • 添加多列

    添加多列与添加一列区别:

    添加一列不需要小括号,可以指定添加位置

    添加多列需要用小括号括起来,不可以指定列位置

    10. 删除列

    • 删除一列

    • 删除多列

    用逗号隔开多个drop,多个列名。

    删除列时同时增加列

    在alter关键词之后一起写add和drop,用逗号隔开多列操作即可

    三、约束

    a)约束保证数据的完整性和一致性

    b)约束分为表级约束和列级约束

    表级约束与列级约束:列级约束只针对一个字段,表级约束指针对两个和两个以上的字段

    c)约束类型

    1. 空值与非空

      • null,字段值可以为空
      • not null,字段值禁止为空

    Null列里id可以为空,name不能为空。

    eg:创建有id有name记录,创建有id无name记录,创建无id有name记录

    创建有id空name的记录时报错,提示没有默认值不能为空

    2. 自动编号

      • AUTO_INCREMENT
      • 必须与主键组合使用(自动编号需要配合主键使用,主键不一定需要自动编号)
      • 默认情况下初始值为1,每次增量1

    直接使用自动编号会提示有错误(原来会提示id不为主键,现在成为提示版本问题)

    3. 主键约束

      • PRIMARY KEY
      • 每张表只能存在一个主键
      • 主键保证记录的唯一性(即不存在重复)
      • 主键默认not null

    eg1:

    创建自动编号的主键id,每新增一条记录,主键自加1

    eg2:

      • 主键可以赋值(不是自动编号的情况下)
      • 主键不能重名(唯一性)上述例子。

    4. 唯一约束

      • UNIQUE KEY
      • 唯一约束可以保证记录的唯一性
      • 唯一约束的字段可以为空值(null)
      • 每张表可以存在多个唯一约束

    5. 外键约束

      • foreign key(外键列_name) references table_name(参照列_name)
      • 父表和子表具有相同的存储引擎,而且禁止使用临时表
      • 数据表的存储引擎只能为InnoDB
      • 外键列和参照列必须具有相似的数据类型:其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同.
      • 外键列和参照列必须创建索引,如果外键列不存在索引的话,mysql将自动创建索引

    i:编辑数据表的默认存储引擎

    ii:查看搜索引擎

     show engines; 默认InnoDB

    iii:查看表的创建信息及环境

     show create table tble_nameG; G:以网格形式展示

     

    下面一行显示引擎位InnoDB,编码格式位utf8

    iv:错误150:父表和子表数据类型不一致 

    外键列pid  参照列 id:  数据类型需要一致  数字必须相同(包括unsigned)  字符可以不同

    v:插入记录:必须先在父表中插入记录 原因:子表参照的是父表的信息

    vi:子表索引不能超出父表中的索引范围

    vii:子表外键索引可重复  id 1 3 4 创建错误的记录会使索引增加1

    viii:删除父表中索引为3的数据  子表中外间索引为3的自动删除

    ix:

    6. 默认约束

      • DEFAULT
      • 默认值
      • 插入记录时,没有明确为字段赋值,则自动赋予默认值

    枚举取值范围,默认值取3,在创建name为tom的记录时默认sex值为3。

    初学者,若有问题,请大佬指出。

  • 相关阅读:
    asp.net 使用urlrewrite之后的form postback
    WebService来获取Context.User.Identity.Name为空的问题?
    求救:C#的一个绘图问题
    flex 使用webservice的域访问问题
    请教大家一个问题,有关于数据库的设计
    C# 中使用结构体
    Discuz Nt 3.0开启Memcached 以及二次开发监控Memcached状态
    Flex 中对xml数据的处理
    Oracle alert log 按天 存放 脚本
    Asktom Oracle:On Caching and Evangelizing SQL
  • 原文地址:https://www.cnblogs.com/GG-Bond/p/9282965.html
Copyright © 2011-2022 走看看