• mysql语法总结


    本博客主要总结了mysql数据库的增删查改功能。

    查询版本号和当前日期

    SELECT VERSION(), CURRENT_DATE;
    
    • 1

    在这里插入图片描述

    查询已有数据库:

    show databases
    
    • 1

    创建数据库(mysqlstudy为你要创建数据库的名字)

    create database mysqlstudy
    
    • 1

    在这里插入图片描述

    选定数据库

    创建数据库并不表示选定并使用它,你必须明确地操作。数据库只需要创建一次,但是必须在每次启动mysql会话时在使用前先选择它。

    use mysqlstudy
    
    • 1

    查看数据表:

    show tables
    
    • 1

    创建数据表:

    create table student(name varchar(32),age varchar(12))
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    数据类型:

    主要包括以下五大类:
    整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
    浮点数类型:FLOAT、DOUBLE、DECIMAL
    字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
    日期类型:Date、DateTime、TimeStamp、Time、Year
    其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。

    MySQL 支持所有标准 SQL 数值数据类型。

    这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

    关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

    BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

    作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

    类型大小范围(有符号)范围(无符号)用途
    TINYINT1 Bytes(-128,127)(0,255)小整数值
    SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
    MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
    INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
    BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
    FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
    DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
    DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

    日期和时间类型

    表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    TIMESTAMP类型有专有的自动更新特性,将在后面描述。

    类型大小 ( bytes)范围格式用途
    DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
    TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
    YEAR11901/2155YYYY年份值
    DATETIME8‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’YYYY-MM-DD hh:mm:ss混合日期和时间值
    TIMESTAMP4‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

    字符串类型

    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

    类型大小用途
    CHAR0-255 bytes定长字符串
    VARCHAR0-65535 bytes变长字符串
    TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
    TINYTEXT0-255 bytes短文本字符串
    BLOB0-65 535 bytes二进制形式的长文本数据
    TEXT0-65 535 bytes长文本数据
    MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
    MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
    LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
    LONGTEXT0-4 294 967 295 bytes极大文本数据

    1、在指定数据类型的时候一般是采用从小原则,比如能用TINY INT的最好就不用INT,能用FLOAT类型的就不用DOUBLE类型,这样会对MYSQL在运行效率上提高很大,尤其是大数据量测试条件下。
    2、不需要把数据表设计的太过复杂,功能模块上区分或许对于后期的维护更为方便,慎重出现大杂烩数据表
    3、数据表和字段的起名字也是一门学问
    4、设计数据表结构之前请先想象一下是你的房间,或许结果会更加合理、高效
    5、数据库的最后设计结果一定是效率和可扩展性的折中,偏向任何一方都是欠妥的

    插入数据

    以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

    INSERT INTO table_name ( field1, field2,...fieldN )
                           VALUES
                           ( value1, value2,...valueN );
    
    • 1
    • 2
    • 3

    插入单条数据和多条数据如下:

    insert into student (name, age) VALUE ("jenny",13);
    insert into student (name, age) VALUES ("Li Ming",32),("Danny",17);
    
    • 1
    • 2

    在这里插入图片描述

    查询数据语法

    以下为在MySQL数据库中查询数据通用的 SELECT 语法:

    SELECT column_name,column_name
    FROM table_name
    [WHERE Clause]
    [LIMIT N][ OFFSET M]
    
    • 1
    • 2
    • 3
    • 4
    • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
    • SELECT 命令可以读取一条或者多条记录。
    • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
    • 你可以使用 WHERE 语句来包含任何条件。
    • 你可以使用 LIMIT 属性来设定返回的记录数。
    • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

    查询所有数据

    select * FROM student;
    
    • 1

    查询特殊行

    select * FROM student where name="Li Ming";
    
    • 1

    在这里插入图片描述

    select * FROM student where name="Li Ming" or name="Danny";
    
    • 1

    选择特殊列

    如果你不想看到表中的所有行,就命名你感兴趣的列,用逗号分开。

    select name FROM student;
    
    • 1

    在这里插入图片描述

    分类行

    你可能已经注意到前面的例子中结果行没有以特定的顺序显示。然而,当行按某种方式排序时,检查查询输出通常更容易。为了排序结果,使用ORDER BY子句。

    select * FROM student order by name;
    
    • 1

    在这里插入图片描述

    更新数据

    以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:

    UPDATE table_name SET field1=new-value1, field2=new-value2
    [WHERE Clause]
    
    • 1
    • 2
    • 你可以同时更新一个或多个字段。
    • 你可以在 WHERE 子句中指定任何条件。
    • 你可以在一个单独表中同时更新数据。
    update student set age=88 where name="Danny";
    
    • 1

    在这里插入图片描述

    删除数据

    以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法:

    DELETE FROM table_name [WHERE Clause]
    
    • 1
    • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
    • 你可以在 WHERE 子句中指定任何条件
    • 您可以在单个表中一次性删除记录。

    当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。

    delete from student where age=88;
    
    • 1

    在这里插入图片描述

    like子句

    以下是 SQL SELECT 语句使用 LIKE 子句从数据表中读取数据的通用语法:

    SELECT field1, field2,...fieldN 
    FROM table_name
    WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
    
    • 1
    • 2
    • 3
    • 你可以在 WHERE 子句中指定任何条件。
    • 你可以在 WHERE 子句中使用LIKE子句。
    • 你可以使用LIKE子句代替等号 =
    • LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
    • 你可以使用 AND 或者 OR 指定一个或多个条件。
    • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件。
      举个栗子
      获取 name 字段中以 nny 为结尾的的所有记录:
    SELECT * from student  WHERE name LIKE '%nny'
    
    • 1

    在这里插入图片描述

    UNION 操作符

    MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
    MySQL UNION 操作符语法格式:

    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数

    • expression1, expression2, … expression_n: 要检索的列。
    • tables: 要检索的数据表。
    • WHERE conditions: 可选, 检索条件。
    • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
    • ALL: 可选,返回所有结果集,包含重复数据。

    举个栗子
    先在新建一个表teacher

    create table teacher(name varchar(32),age varchar(12));
    insert into teacher (name, age) VALUES ("Li si",52),("Kim",61);
    select * from teacher;
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    显示两个表的name信息:

    SELECT name FROM student
    UNION
    SELECT name FROM teacher
    ORDER BY name;
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    删除数据库,数据表

    删除数据库

    DROP DATABASE database_name;
    
    • 1

    删除数据表

    DROP TABLE table_name ;
    
    • 1

    https://www.mysqlzh.com/doc/24.html

  • 相关阅读:
    pytorch笔记:自动混合精度(AMP)
    人人讲视频如何下载
    数据库之元数据
    前端现场笔试题
    iOS中 Tagged Pointer 技术
    自定义类型:结构体、枚举、联合
    漏洞复现--中远麒麟堡垒机SQL注入
    机器学习是什么?
    高防CDN:护航网络安全的卓越之选
    什么是GEMM?该怎么去学习GEMM?
  • 原文地址:https://blog.csdn.net/weixin_43788986/article/details/126855224