MySQL1:数据库的介绍、基础操作语句及常见数据类型

文章目录

  • 一、数据库的介绍、基础操作语句及常见数据类型
    • 1.数据库简介
      • 1、什么是数据库?
      • 2、什么是数据库系统?
      • 3、什么是数据库管理系统?
    • 2.SQL简介
      • 1.什么是SQL?
      • 2.SQL语言的组成部分?
    • 3.MySQL常用登录与退出相关操作
      • 1、设置字符集
      • 2、常用登录方式
      • 3、常用退出方式
    • 4.修改MySQL命令提示符
      • 1、设置命令提示符
      • 2、命令提示符常用参数
    • 5.MySQL常用命令
      • 1、设置端口号
      • 2、查看当前mysql版本
    • 6.MySQL语句的规范
    • 其他常用操作
  • 二、数据库操作(DDL)
    • 1.创建数据库
      • 常用命令
    • 2.查看当前服务器下的数据库列表
    • 3.查看指定数据库的定义
    • 4.修改指定数据库的编码方式
    • 5.打开指定数据库
    • 6.删除指定的数据库
  • 三、数据表相关操作
    • 1.什么是表?
    • 2.如何创建数据表
    • 3.如何查看数据库中的数据表以及表结构
  • 四、MySQL中的数据类型
    • 1.整数类型
    • 2.浮点类型
    • 3.字符串类型
    • 4.日期时间类型
  • 五、其他常用操作
  • 六、MySQL存储引擎
    • 1.什么是存储引擎
    • 2.如何查看MySQL的存储引擎
    • 3.MySQL常用存储引擎及特点
    • 4.如何选择合适的存储引擎

一、数据库的介绍、基础操作语句及常见数据类型

1.数据库简介

1、什么是数据库?

数据库(database)就是存储数据的仓库。为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上。通过数据库管理系统,有效地组织和管理存储在数据库中的数据。

2、什么是数据库系统?

数据库系统和数据库不是一个概念,数据库系统(DBS),比数据库大很多,由数据库、数据库管理系统、应用开发工具构成。

3、什么是数据库管理系统?

数据库管理系统(DataBase Management System,简称DBMS),用来定义数据库、管理和维护的软件。他是数据库系统的一种重要的组成部分。

2.SQL简介

1.什么是SQL?

Structured Query Language简称SQL,结构化查询语言,数据库管理系统通过SQL语言来管理数据库中的数据。

2.SQL语言的组成部分?

  • DDL(Data Defination Language):数据定义语言,主要用于定义数据库、表、视图、索引和触发器等。像DROP、CREATE、ALTER等语句。
  • DML(Data Manipulation Language):主要包括对数据的增删改。INSERT插入数据、UPDATE更新数据、DELETE删除数据。
  • DQL(Data Query Language):数据检索语句,用来从表中获得数据,确定数据怎样在应用程序中给出,像SELECT查询数据。
  • DCL(Data Control Language):数据控制语言,主要用于控制用户的访问权限,像GRANT、REVOKE、COMMIT、ROLLBACK等语句。

3.MySQL常用登录与退出相关操作

1、设置字符集

客户端字符集:

[mysql]

default-character-set=utf-8

服务器端字符集

[mysqld]

character-set-server=utf-8

2、常用登录方式

  • mysql -uroot -p
  • mysql -hlocalhost -uroot -p
  • mysql -h127.0.0.1- uroot -p

3、常用退出方式

  • quit,\q,exit

4.修改MySQL命令提示符

1、设置命令提示符

  • 登录的同时可以通过–prompt=name,修改命令提示符

MySQL1:数据库的介绍、基础操作语句及常见数据类型_第1张图片

2、命令提示符常用参数

  • prompt提示符:连接上客户端后,通过PROMPT命令修改

    在这里插入图片描述

  • \h:服务器名称

  • \u:当前用户名

  • \D:完整的日期

  • \d:当前数据库

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第2张图片

    也可以在登录时进行设置

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第3张图片

5.MySQL常用命令

1、设置端口号

  • mysql -uroot -p -P3306(一般默认3306)

2、查看当前mysql版本

  • mysql -uroot -proot -V

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LPUCdz5-1594303859769)(C:\Users\z&y\AppData\Roaming\Typora\typora-user-images\image-20200705174037168.png)]

MySQL1:数据库的介绍、基础操作语句及常见数据类型_第4张图片

  • 登录mysql后,通过SELECT VERSION();显示当前MySQL版本,或者通过select version()\g;

  • 在mysql中;和\q代表分隔符;
    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第5张图片
    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第6张图片

  • SELECT NOW();显示当前日期时间

  • SELECT USER();显示当前用户

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第7张图片

6.MySQL语句的规范

  • 关键字与函数名称全部大写

  • 数据库名称、表名称、字段名称等全部小写

  • SQL语句必须以分隔符结尾

  • SQL语句支持折行操作,只要不把单词、标记或引号字符串各分为两部分,可以在下一行继续写

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第8张图片

  • 数据库名称、表名称、字段名称等尽量不要使用MySQL的保留字,如果需要使用的时候需要使用反引号(``)将名称括起来

  • 引号不要分开写!

其他常用操作

  • Delimiter + 要修改的分隔符:修改默认命令分隔符

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第9张图片

    也可以在登录时通过delimiter进行修改

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第10张图片

  • 在命令语句后加\c代表语句不执行

  • 登录后\T 文件存储路径,记录操作日期,可通过\t关闭

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第11张图片

二、数据库操作(DDL)

1.创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name]

  • 也可以直接创建:CREATE DATABASE 数据库名称

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第12张图片

常用命令

SHOW WARNINGS

MySQL1:数据库的介绍、基础操作语句及常见数据类型_第13张图片

2.查看当前服务器下的数据库列表

  • SHOW {DATABASES | SCHEMAS}

MySQL1:数据库的介绍、基础操作语句及常见数据类型_第14张图片

3.查看指定数据库的定义

  • SHOW CREATE {DATABASE | SCHEMA } db_name

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第15张图片

4.修改指定数据库的编码方式

  • ALTER {DATABASE | SCHEMA } db_name [DEFAULT] CHARACTER SET [=] charset_name

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第16张图片

5.打开指定数据库

  • USE db_name;

  • SELECT DATAVASE();得到当前打开的数据库名称

    MySQL1:数据库的介绍、基础操作语句及常见数据类型_第17张图片

6.删除指定的数据库

  • DROP {DATABASE | SHCEMA } [IF EXISTS] db_name

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UtmQwOxf-1594304794453)(C:\Users\z&y\AppData\Roaming\Typora\typora-user-images\image-20200705231123816.png)]

三、数据表相关操作

1.什么是表?

  • 数据表是数据库最重要的组成部分之一,是其其它对象的基础;
  • 数据表是存储数据的数据结构;
  • 数据表是包含了特定实体类型的数据;
  • 数据表由行(row)和列(column)构成的二维网络;
  • 数据表一定现有表结构,再有数据;
  • 数据表至少有一列,可以没有行或者多行;
  • 数据表名称要求唯一,而且不要包含特殊字符;

2.如何创建数据表

CREATE TABLE [IF NOT EXISTS] tbl_name(字段名称 字段类型 [完整性约束条件]) ENGINE = 引擎名称 CHARSET = ‘编码方式’;

-- 创建数据库
CREATE DATABASE IF NOT EXISTS `spike` DEFAULT CHARACTER SET 'UTF8';

USE `spike`;

-- 创建学员表(user)
-- 编号 id
-- 用户名 username
-- 年龄 age
-- 性别 sex
-- 邮箱 email
-- 地址 addr
-- 生日 birth
-- 薪水 salary
-- 电话 tel
-- 是否结婚 married
-- 注意:当需要输入中文的时候,需要临时转换客户端的编码方式
-- SET NAMES GBK 仅针对当年链接有效且从设置位置开始到之后有效
-- 字段注释 通过comment注释内容,给字段添加注释
CREATE TABLE IF NOT EXISTS `user`
(
    id       SMALLINT,
    username VARCHAR(20),
    age      TINYINT,
    sex      ENUM ('男','女','保密'),
    email    VARCHAR(50),
    addr     VARCHAR(200),
    birth    Year,
    salary   FLOAT(8, 2),
    tel      INT,
    married  TINYINT(1) COMMENT 'O代表结婚,非0代表未结婚'
) ENGINE = INNODB
  CHARACTER SET = UTF8;
-- 创建新闻分类表cms_cate
-- 编号、分类名称、分类描述
CREATE TABLE IF NOT EXISTS cms_cate
(
    id       TINYINT,
    cateName VARCHAR(50),
    cateDesc VARCHAR(200)
) ENGINE = MyISAM
  CHARSET = UTF8;

-- 创建新闻表cms_news
-- 编号、新闻标题、新闻内容、新闻发布时间、点击量、是否置顶、新闻所属分类、发布人
CREATE TABLE IF NOT EXISTS cms_news
(
    id       INT,
    title    VARCHAR(50),
    content  TEXT,
    pubTime  INT,
    clickNum INT,
    top      TINYINT(0) COMMENT 'O代表不置顶,非0代表置顶'
);

-- 查看cms_news表的表机构
DESC cms_news;
DESCRIBE cms_news;
SHOW COLUMNS FROM cms_news;
  • 完整性约束条件

    • PRIMARY KEY主键:被标记为主键的值要具有唯一性(相当于ID)且不能为空,一个表中只可以有一个主键,也可以是符合主键;

      -- 测试主键
      CREATE TABLE IF NOT EXISTS user1
      (
          id       INT PRIMARY KEY,
          username VARCHAR(20)
      );
      -- 查看创建表的定义
      SHOW CREATE TABLE user1;
      
      -- 符合主键
      CREATE TABLE IF NOT EXISTS user2
      (
          id       INT,
          username VARCHAR(20),
          card     CHAR(18),
          PRIMARY KEY (id, card)
      );
      
      INSERT user2
      VALUES (1, 'king', '111'); 
      
      INSERT user2
      VALUES (1, 'queen', '112'); -- 因为是符合主键,所有仅有序号重复不会报错
      
    • AUTO_INCREMENT自增长

    • FOREIGN KEY外键

    • NOT NULL非空

    • UNIQUE KEY唯一

    • DEFAULT默认值

3.如何查看数据库中的数据表以及表结构

  • 查看数据库下的数据表:

    • SHOW TABLES;
  • 查看指定表的表结构:

    • DESC tbl_name
    • DESCRIBE tbl_name
    • SHOW COLUMNS FROM tbl_name

四、MySQL中的数据类型

1.整数类型

  • 数据类型 存储范围 字节
    TINYINT 有符号值:-128到127(-27到27-1) 1
    无符号值:0到255(0到28-1)
    SMALLINT 有符号值:-32768到32767(-215到215-1) 2
    无符号值:0到65535(0到216-1)
    DEDIUMINT 有符号值:-8388608到8388607(-223到223-1) 3
    无符号值:0到4294967295(0到224-1)
    INT 有符号值:-2147683648到2147683647(-251到251-1) 4
    无符号值:0到4294967295(0到252-1)
    BIGINT 有符号值:-9223372036854775808到9223372036854775807(-263到263-1) 8
    无符号值:0到18446744073709551615(0到264-1)
    BOOL,BOOLEAN 等价于TINYINT{1},0为false,其余为true 1
    -- 测试整型
    CREATE TABLE test1
    (
        num1 TINYINT,
        num2 SMALLINT,
        num3 MEDIUMINT,
        num4 INT,
        num5 BIGINT
    );
    

2.浮点类型

  • 数据类型 存储范围 字节
    FLOAT[(M,D)] 负数取值范围为-3.40E+38到-1.17E-38、0和1.175E-38到3.40E+38; 4
    M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保存值。单精度浮点数精确到大约7位小数。
    DOUBLE[(M,D)] -1.79E+308到-2.22E-308、0和2.22E-308到1.79E+308 8
    DECIMAL[(M,D)] 和DOUBLE一样,内部以字符串形式存储数值 M+2

3.字符串类型

  • 列类型 存储需求
    CHAR(M) M个字节,0<= M <= 255
    VARCHAR(M) L+1个字节,其中L<=M且0<= M <= 65535
    TINYTEXT l+1个字节,其中L<28
    TEXT l+1个字节,其中L<216
    MEDIUMTEXT l+1个字节,其中L<224
    LONGTEXT l+1个字节,其中L<232
    ENUM(‘value1’,‘value2’,…) 1或2个字节,取决与枚举值的个数(最多65535个值)
    SET(‘value1’,‘value2’,…) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)
    • CHAR定长字符串,占用空间大,速度快;

    • VARCHAR变长字符串,占用空间小,速度慢;

    • TEXT类型是一种特殊的字符串类型,只能保存字符数据,而且不能有默认值

    • 上述三类的存储和检索数据的方式都不一样,数据检索的效率:CHAR > VARCHAR > TEXT

      CREATE TABLE IF NOT EXISTS test5
      (
          str1 CHAR(5),
          str2 VARCHAR(5)
      );
      
      INSERT test5
      VALUES ('1', '1');
      
      INSERT test5
      VALUES ('12345', '12345');
      
      -- CHAR不保留插入的空格,VARCHAR保留
      INSERT test5
      VALUES ('1    ', '1    ');
      
      -- 为了体现CHAR与VARCHAR对于空格保留的体现,通过CONCAT函数为str插入'-'
      SELECT CONCAT(str1, '-'), CONCAT(str2, '-')
      FROM test5;
      
      -- 字符串开始的空格CHAR不会去掉
      INSERT test5
      VALUES ('  a', '  a');
      
      SELECT CONCAT('-', str1), CONCAT('-', str2)
      FROM test5;
      
      -- 插入中文
      INSERT test5
      VALUES ('啊', '啊');
      
      -- 中文在UTF8下占用的长度是3个,但也只占有一个在字符
      SELECT LENGTH('啊');
      SELECT CHAR_LENGTH('啊');
      
      -- TEXT不能有默认值
      CREATE TABLE test6
      (
          str1 TEXT
      );
      
      INSERT test6
      VALUES ('在山的那边,海的那边,有一群蓝精灵');
      
      -- 测试枚举类型
      CREATE TABLE IF NOT EXISTS test7
      (
          sex ENUM ('男','女','保密')
      );
      
      INSERT test7
      VALUES ('男');
      INSERT test7
      VALUES ('女');
      INSERT test7
      VALUES ('保密');
      
      -- 如果插入在'男''女''保密'之外的值,则报错,'男''女''保密'可以用序号表示,即1,2,3(序号顺序从1开始)
      -- 可以插入NULL,但不能插入空值
      INSERT test7
      VALUES (NULL);
      
      -- 测试集合类型
      CREATE TABLE IF NOT EXISTS test8
      (
          fav SET ('A','B','C','D')
      );
      
      INSERT test8
      VALUES ('A,C,D');
      INSERT test8
      -- 显示的顺序还是按照检索中的顺寻,即如下显示的是ABD
      VALUES ('D,B,A');
      -- MySQL存储是通过二进制,可根据二进制之和显示,如3代表A与B之和
      INSERT test8
      VALUES (3);
      

4.日期时间类型

  • 列类型 存储范围 存储需求
    TIME -838:59:59~838:59:59 3
    DATE 1000-01-01~9999-12-31 3
    DATETIME 1000-01-01 00:00:00999912~31 23:59:59 8
    TIMESTAMP 19700101 00:00:01 UTC~2038-01-19 03:14:07 4
    YEAR 1901~2155 1
    • YEAR:

    • TIME:可以录入天数,但会换算成小时,所以范围数值为 -838:59:59~838:59:59

      -- 测试YEAR
      CREATE TABLE test9
      (
          birth YEAR
      );
      
      INSERT test9
      VALUES (1901);
      INSERT test9
      VALUES (2155);
      INSERT test9
      VALUES (12);
      INSERT test9
      VALUES ('79');
      INSERT test9
      VALUES ('0');
      
      -- 测试TIME
      CREATE TABLE IF NOT EXISTS test10
      (
          test TIME
      );
      INSERT test10
      VALUES ('1 12:12:12');
      INSERT test10
      VALUES ('11:11');
      INSERT test10
      VALUES ('1234');
      INSERT test10
      VALUES ('12');
      INSERT test10
      VALUES ('0');
      
      CREATE TABLE IF NOT EXISTS test11
      (
          test DATE
      );
      INSERT test11
      VALUES ('12-6-7');
      INSERT test11
      VALUES ('12/6/7');
      INSERT test11
      VALUES ('120607');
      

五、其他常用操作

  • 零填充ZEROFILL,当使用ZEROFILL时,自动默认为无符号,从0开始
  • 查询表中所有记录SELECT * FROM tbl_name;
CREATE TABLE test3
(
    num1 TINYINT ZEROFILL,
    num2 SMALLINT ZEROFILL,
    num3 MEDIUMINT ZEROFILL,
    num4 INT ZEROFILL,
    num5 BIGINT ZEROFILL
);

-- 未达到显示长度,则进行补充零
INSERT test3
VALUES (1, 1, 1, 1, 1);

MySQL1:数据库的介绍、基础操作语句及常见数据类型_第18张图片

  • 向表中插入记录INSERT tbl_name VALUE|VALUES(值,…)
INSERT test1
VALUES (-128, -3278, -8388608, -2147483648, -9223372036854775808);
  • 无符号UNSIGNED,如学员编号不可能出现负数,就用UNSIGNED修饰;
CREATE TABLE test2
(
    num1 TINYINT UNSIGNED,
    num2 TINYINT
);

INSERT test2
VALUES (0, -12);
  • 查看创建表的定义

    -- 查看创建表的定义
    SHOW CREATE TABLE user1;
    
    INSERT user1
    VALUES (1, 'king');
    INSERT user1
    VALUES (2, 'Queen');
    
    CREATE TABLE IF NOT EXISTS user2
    (
        id       INT,
        username VARCHAR(20),
        card     CHAR(18),
        PRIMARY KEY (id, card)
    );
    
    INSERT user2
    VALUES (1, 'king', '111');
    
    INSERT user2
    VALUES (1, 'queen', '112');
    

六、MySQL存储引擎

1.什么是存储引擎

存储引擎就是值表的类型。数据的存储类型决定了表在计算机中的村存储方式。用户可以根据不同的存储方式、是否进行事物处理等来选择合适的存储引擎。

2.如何查看MySQL的存储引擎

  • 查看MySQL支持的存储引擎:SHOW ENGINES

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2YqZHb2-1594305308375)(C:\Users\z&y\AppData\Roaming\Typora\typora-user-images\image-20200707071021376.png)]

    • Transactions:是否支持事物处理
    • XA:是否分布式交易处理
    • Savepoints:是否支持保存点
  • 查看显示支持的存储引擎信息:SHOW VARIABLES LIKE ‘have%’

  • 查看默认的存储引擎:SHOW VARIABLES LIKE ‘%storage_engine%’

3.MySQL常用存储引擎及特点

  • InnoDB存储引擎:提供事物、回滚、多版本并发控制的能力,读写效率较低,占用空间较大;

  • MyISAM存储引擎:支持静态型,动态性,压缩性,占用磁盘空间小,处理速度快,但不支持事物;

  • MEMORY存储引擎:有利于对数据的快速处理,提高表的处理速度,但占用内存空间;

4.如何选择合适的存储引擎

  • 要求较高的事物处理,选择InnoDB
  • 要求查询、写入速到快,选择MyISAM
  • 需要一个查询临时表,选择MEMORY

你可能感兴趣的:(MySQL1:数据库的介绍、基础操作语句及常见数据类型)