• Mysql学习第二天


    DDL 数据库定义语言(库的操作)(看懂,工作时使用较少)
    1.创建一个库
             create database 库名称 [character set 码表名称 collate 字符校对集名称]
             create database day15;
            1>看到Query OK, 1 row affected (0.00 sec) 表示执行成功.
            2>sql语句语法: 结尾应使用";"号.
            3>字符校对集: 决定数据排序的。
    2.显示mysql中都有哪些库了.
            show databases;
            +--------------------+
            | Database |
            +--------------------+
            | information_schema |
            | day13 |
            | mysql |
            | performance_schema |
            | test |
            +--------------------+
            可以看到除了自己创建的库之外,还有一些其他库。其他库(除了test)不要乱动。因为是保存mysql的配置信息,账户信息等等。
            test库 : 自动创建用于测试的。
    3.删除一个数据
            drop database 数据库名称;
            drop database day15;
    4.修改数据库码表和字符校对(不常用)
            alter database 数据库名称 character set 数据库码表 [collate 校对集名称];
            alter database day15 character set utf8 collate utf8_bin;
    5.当前要使用的库(重要)
            use 库名
            use day15;
            出现Database changed,说明切换完成.
    6.查看当前选择的数据库
            select database();
            +------------+
            | database() |
            +------------+
            | day15 |
            +------------+
    7.显示创建库的语句.
            show create database 数据库名称;
            show create database day15;
            | day15 | CREATE DATABASE `day15` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE
            utf8_bin */ |
    //-------------------------------------------------------------------------------------------------------------------------------------------------------
    数据库中的数据类型 (了解,知道在什么情况下应该使用什么类型的数据)
    一。数字型
            整型
             TINYINT 1字节 byte
             SMALLINT 2字节 short
             MEDIUMINT 3字节
             (常用)INT 4字节 int
             BIGINT 8字节 long
            浮点型
             FLOAT 单精度4字节 float
             **DOUBLE 8字节 double
             *DECIMAL 没有精度损失
    ===================================================
            DOUBLE 和 DECIMAL 区别?
             DOUBLE类型在运算时会有精度的缺失。
             DECIMAL 就是解决精度缺失问题的。(底层使用字符串来保存数字)
             单纯想表示小数属性时,使用double。
             需要频繁参与运算的小数,使用decimal。
    ===================================================
    二。字符串类型
     注意: 字符串类型要使用单引号包裹.
            短字符串类型
            CHAR/VARCHAR (最大长度255字节)
    ====================================================
    问题:char和varchar有什么区别?
             char定长字符串.varchar表示变长字符串.
             同时指定长度为10。当存储 abc
             char => 'abc '
             varchar => 'abc'
    结论: 开发中varchar用的最多。 char只在表示固定长度的枚举中使用。例如 :性别(用01,02表示)
    ====================================================
    长字符串类型(流类型)
          *TEXT/CLOB 保存文本(字符流) --> 当要保存的内容超过255字节时使用. java中的writer 字符
          BLOB 保存字节(字节流) --> 开发中用不到 java中的stream 字节
       Character Large Object
       binary Large Object
     区别:
          text:只能存储字符数据.
          BLOB:可以存储字符和多媒体信息(图片 声音 图像)
    三、日期和时间类型
            date 只记录日期 2015-01-14
            time 只记录时间 11:36:25
            year 只记录年 2015
            datatime 又记录日期 又记录 时间 2015-01-14 11:36:25
    **timestamp 同上 2015-01-14 11:36:25
       问题: datatime 和 timestamp 区别?
             这两种类型记录的数据是一模一样.
             区别在于插入的时候,如果插入datatime类型时,没有 传值,那么该类型默认值就是null;
             如果插入timestamp类型时,没有 传值,那么该类型默认值就是当前时间;
    //--------------------------------------------------------------------------------------------------------------------
    与创建表相关的语句(DDL) (记住,能够手写)
          CREATE TABLE table_name
          (
          field1 datatype 约束/主键约束 auto_increment,
          field2 datatype 约束,
          field3 datatype 约束
          )character set 字符集 collate 校对规则
    1.创建表
          create table t_user(
          name varchar(10),
          password varchar(20),
          age int(3), -- 数字类型在声明时,可以忽略长度.
          birthday datetime,
          hiredate timestamp
          );
    varchar最好指定长度
    整型一般不指定.
    2.查看当前库中有哪些表
            show tables;
    3.查看表的结构
            desc 表名;
            desc t_user;
    4.删除表
            drop table 表名;
            drop table t_user;
    5.添加一列
            alter table 表名 add 列名 类型;
            alter table t_user add photo blob;
    6.修改列的类型
            alter table 表名 modify 列名 类型;
            alter table t_user modify photo varchar(20);
    7.修改列的名称
            alter table 表名 change 旧列名 新列名 数据类型;
            将 photo这一列 改名为 image
            alter table t_user change photo image varchar(20);
    8.删除某列
            alter table 表名 drop 列名;
            alter table t_user drop image;
    9.修改表的名称
            rename table 旧表名 to 新名;
            rename table t_user to user;
    10(用的极少)修改表的字符集. (如果创建表时不指定,默认使用数据库的字符集)
            alter table 表名 character set 字符集 collate 校对集;
            alter table t_user character set utf8 collate utf8_bin;
    //-----------------------------------------------------------------------------------------------------
    列的约束 (掌握)
    保证数据的完整性的.
    1.非空约束(not null) 指定非空约束的列, 在插入记录时 必须包含值.
    2.唯一约束(unique) 该列的内容在表中. 值是唯一的.
    3.主键约束(primary key) 当想要把某一列的值,作为该列的唯一标示符时,可以指定主键约束(包含 非空约束和唯一约束). 一个表中只能指定一个主键约束列.
    主键约束 , 可以理解为 非空+唯一.
    注意: 并且一张表中只能有一个主键约束.
    约束体现数据库的完整性.
    例如:创建带有约束的表
          create table t_user2(
          id int primary key auto_increament, -- 员工编号
          name varchar(10) not null, -- 员工姓名
          loginname varchar(10) not null unique, -- 登陆名称
          password varchar(20) not null, -- 密码
          age int(3) not null, -- 年龄
          birthday datetime not null, -- 生日
          hiredate timestamp not null -- 入职日期
          );
    //----------------------------------------------------------------------------------------------------------------------------
    主键自动增长 (掌握)

    注意:
    1.前提某个表的主键是数字. 我们可以将该主键设置为自增.
    2.使用主键自增可能会造成主键的断层。
    3.mysql,sqlserver这两个数据库具有该功能.
    4.主键自增只能给主键约束的列加。
    自增就是 每次插入记录时不需要指定值. 该字段自己维护自己的值.
    维护方式就是每次加1;
    语法:
          create table t_user(
          id int primary key auto_increment,
          password varchar(30) not null,
          age int not null,
          birthday datetime not null,
          hiredate timestamp not null,
          number int unique
          );
    //--------------------------------创建修改表练习---------------------------------------------------
          CREATE TABLE employee (
          id INT(10),
          NAME VARCHAR(10),
          gender VARCHAR(10),
          birthday DATETIME,
          entry_date TIMESTAMP,
          job VARCHAR(5),
          salary DOUBLE(5,3),
          RESUME TEXT
          );

    1在上面员工表的基础上增加一个image列。

            alter table employee add image blob;

    2修改job列,使其长度为60。

            alter table employee modify job varchar(60)'

    3删除gender列。

            alter table employee drop gender;

    4表名改为user。

            rename table employee to user;

    5修改表的字符集为utf8
    6列名name修改为username
            alter table employee change name username varchar(20);

  • 相关阅读:
    JDK API文档下载
    idea技巧:查看一个类的所有子类以及子类的子类并以层级关系显示
    Vue项目优化
    deepin 安装netcore 记录
    UOS 下的VScode 使用经验
    UOS操作系统磁盘空间不够一例
    SRPBatcher优化的原理
    我的UOS生活
    假如美国禁用了Unity3D和Unreal怎么办
    BGFX学习笔记01
  • 原文地址:https://www.cnblogs.com/java0619/p/8358206.html
Copyright © 2020-2023  润新知