数据库笔记 day01(MySQL,数据库和表的增删改,约束,数据类型)

数据库笔记 day01

2019/8/20 周二
学习内容:Oracle;MySQL;对数据库或表的增删改;约束;MySQL数据类型;
关键词:drop; create;insert into; not null; default; unique key(UK); primary key(PK); auto_increment; foreign key(FK); constraint references; show; use; desc; charset; int; varchar;


Oracle

1. "drop"关键字,删除表或数据库

    droptable ishop_order;

如果不确定表或数据库是否存在

    drop table if exists ishop_order

2. "create"关键字,创建表或数据库

create table ishop_commoditytype(
    字段名称 数据类型   约束
    ct_id number(11,2) primary key,
    ct_name varchar2(50) not null
);
  • number是数值数据类型,(11,2)中,11代表该数值的最大位数,2代表小数位数,前者包括后者,即该数字整数位最多9位;如果只写number(11)则是默认没有小数位了
  • varchar2是字符数据类型,(50)代表最大宽度为50个字符
  • 最后一个字段后面不要写逗号
  • 约束也可以不写

同样,如果不确定表或数据库是否存在

create table if exists ishop_commoditytype(……);

3."insert into"往表中新增数据

insert into 表名(字段1,字段2……) values (各字段对应的值);

insert into ishop_commoditytype (ct_id,ct_name) values (1,'玩具');

约束

为保证数据库中数据的准确性和一致性为创建的机制。

  1. not null 约束字段的值不为空
  2. default 设置字段的默认值
  3. unique key (UK) 约束字段的值是唯一
  4. primary key (PK) 约束字段为表的主键,非空且唯一(即1和3结合的效果),可以作为该表记录的唯一表示
  5. auto_increment 约束字段的值为自动增长(必须是主键,且类型为int,而且自动增长的数字不会回退)
  6. foreign key (FK) 约束字段为表的外键

- 关系型数据库中最重要的就是外键约束。其用法为

constraint fk_1 foreign key (c_type) references ishop_commoditytype (ct_id);
  • 除了某些大公司有自己的规范之外,约束的名字已约定俗成,fk_1、fk_2以此类推。另外,整个数据库中约束名不能有重复。
  • 在外键约束中,箭头的起点c_type所在的表为子表(相对的),指向ct_id所在的ishop_commoditytype表则为对应的父表。这里的子表又可以作为另一个表的父表。
  • 子表的取值范围受父表的约束;因此建表时先建父表,再建子表,先添加父表数据,才能添加子表数据。

MySQL

  • 特点:开源,跨平台,社交版免费,支持多用户、多线程

  • 端口:3306

  • 在cmd命令下登录

  • 默认字符集:Latin,需要在创建数据库的时候指定数据库的字符集为utf8

    mysql -h localhost -P 3306 -u root -p 密码

    -h: 主机地址,本机可以写localhost或127.0.0.1
    -P: 端口,P是大写
    -u: 用户
    -p: 密码,回车后再输密码就是不可见的

  • 数据类型

  • 数值类型-整数类型
    tinyint 1字节
    smallint 2字节
    mediumint 3字节
    int / Integer 4字节
    bigint 8字节
    由于技术的发展以及使用的需求,一般只用int

  • 数值类型-浮点类型
    float 4字节
    double 8字节

  • 数值类型-定点数类型
    dec(m,d),decimal(m,d) m+2字节
    早期技术限制,为表示负数而设置的,但会造成精度缺失

  • 数值类型-位类型
    bit(m) 1~8字节

  • 日期类型
    date 4字节 yyyy-MM-dd
    datetime 8字节 yyyy-MM-dd HH:mm:ss
    timestamp 4字节 时间戳
    time 3字节HH:mm:ss
    year 1字节 yyyy
    (时间戳也不一定能保证创建实例id的唯一性,可以用UUID)

  • 字符串类型
    char(m) m(0-255)字节
    varchar(m) m(0-65535)字节
    text
    tinytxt
    mediumtext
    longtext


SQL语句

  • Structred Query Language 结构化查询语句

  • 分类:
    1.数据定义语言(Data Definition Language, DDL)
    2.数据操作语言(Data Manipulation Language, DML),基本操作为:检索(查询select)和更新(插入insert、删除delete和更新update)
    3.数据控制语言(Data Control Language, DCL)

  • 所有mysql命令都需要有命令结束标识符, 一般情况下是分号

  • 查看数据库命令

     show databases;
    
  • 建立数据库命令

     create database database_name;
    

    (注意,只能一个一个建)

    更严谨的写法,加上判断数据库是否已存在和指定编码:

     create database if not exists ishop1 default charset=utf8;
    
  • 删除数据库命令

      drop database database_name
    

    也只能一个一个删,且需注意不要把系统数据库删除了

  • 使用数据库进行操作

      use database_name
    
  • 新建数据表命令

     create table t_name(
         属性名 数据类型 [约束],
         ct_id int(11) primary key,
         ct_name varchar(50) not null,
         ……
         属性名 数据类型 [约束]
     ) default charset=utf8;
    
  • 查看数据表命令

     show tables
    
  • 查看数据表结构命令

     dese table_name
    
  • 删除数据表命令

     drop table_name
    
  • 注释: "#"号

你可能感兴趣的:(数据库)