Mysql简单整理(一)

这篇博客介绍了MySQL的基础知识,包括LIMIT的使用,LIKE操作符,IN和BETWEEN操作符,以及JOIN的不同类型。重点讨论了MySQL如何通过LEFT JOIN和RIGHT JOIN模拟FULL JOIN。此外,还提到了UNION和UNION ALL的区别,以及SQL约束如NOT NULL、UNIQUE和FOREIGN KEY的作用。最后,文章提及了ALTER TABLE语句和 AUTO_INCREMENT功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      Mysql简单整理(一)见 https://blog.youkuaiyun.com/Shang_p_c/article/details/118858093

LIMIT 2 选取头两条记录

SELECT  * FROM	t_user	LIMIT 2;

        %    替代一个或多个字符
        _    仅替代一个字符
        [charlist]    字符列中的任何单一字符
        [^charlist]或者[!charlist]  不在字符列中的任何单一字符

SELECT * FROM t_customer WHERE username LIKE "j%";
SELECT * FROM t_customer WHERE jobs LIKE "%r";
SELECT * FROM t_customer WHERE username LIKE "%o%";
SELECT * FROM t_customer WHERE username NOT LIKE "%o%";

        IN 操作符允许我们在 WHERE 子句中规定多个值。

SELECT *    FROM t_customer WHERE phone IN("13700000001","13700000002");

        BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。 不同数据库对 BETWEEN ... AND  取得范围不同!

SELECT * FROM t_customer WHERE username BETWEEN 'jack' AND 'rose';
SELECT * FROM t_customer WHERE username NOT BETWEEN 'jack' AND 'rose';

        通过使用 AS,可以为列名称和表名称指定别名(Alias)。

# 可以使用AS,也可以直接跟在后边 效果一样的
SELECT c.jobs FROM t_customer c WHERE username BETWEEN 'jack' AND 'rose';
SELECT c.jobs FROM t_customer AS c WHERE username BETWEEN 'jack' AND 'rose';

JOIN


        INNER JOIN 与 JOIN 是相同的。
        JOIN: 如果表中有至少一个匹配,则返回行
        INNER JOIN(内连接) 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

        LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
        RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
        FULL JOIN: 只要其中一个表中存在匹配,就返回行                                (全连接)
        FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。

SELECT u.*,o.number,o.user_id FROM t_user u,t_orders o WHERE u.id=o.user_id;
SELECT u.*,o.number,o.user_id FROM t_user u INNER JOIN t_orders o ON u.id=o.user_id;

        Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现。

  SELECT * FROM t_1
  LEFT JOIN t_2 ON t_1.username = t_2.username
  UNION ALL
  SELECT * FROM t_1
  RIGHT JOIN t_2 ON t_1.username = t_2.username
  WHERE t_1.username IS NULL

        UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

        UNION 命令只会选取不同的值。
        UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
        UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。

        SELECT INTO 语句可用于创建表的备份复件。
        SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
        IN 子句可用于向另一个数据库中拷贝表:
        SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。后边可以接where on join 等条件。

SELECT t_customer INTO customer; #mysql不支持  可以用下边的代替 
CREATE TABLE customer (SELECT * FROM t_customer);

        SQL 约束用于限制加入表的数据的类型。
        可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)
        NOT NULL约束强制列不接受 NULL 值。

      for example:Id_P int NOT NULL

UNIQUE约束唯一标识数据库表中的每条记录。

            唯一约束确保表中的一列数据没有相同的值。
            UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
            PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
            请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 

  for example:UNIQUE (Id_P)

   
PRIMARY KEY约束唯一标识数据库表中的每条记录。   
        主键必须包含唯一的值。主键列不能包含 NULL 值。
        每个表都应该有一个主键,并且每个表只能有一个主键。

 for example:PRIMARY KEY (Id_P)


FOREIGN KEY 外键  
     一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
     FOREIGN KEY 约束用于预防破坏表之间连接的动作。
     FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

  for example:FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)


CHECK约束用于限制列中的值的范围。   
         如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
         如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

  for example:CHECK (Id_P>0)

   
DEFAULT约束用于向列中插入默认值。
      如果没有规定其他的值,那么会将默认值添加到所有的新记录。

  for example:City varchar(255) DEFAULT 'Sandnes'

索引
        您可以在表中创建索引,以便更加快速高效地查询数据。
        用户无法看到索引,它们只能被用来加速搜索/查询。
        注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。
        因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

for example:  CREATE INDEX index_name
              ON table_name (column_name)


        如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:

for example:  CREATE INDEX PersonIndex
              ON Person (LastName DESC) 


        删除索引:

ALTER TABLE table_name DROP INDEX index_name


        删除数据库:

DROP DATABASE 数据库名称


        删除表:

DROP TABLE 表名称       


        删除数据而不删除结构:

TRUNCATE TABLE 表名称

            一般来说,DELETE删除的是数据,DROP删除的是结构。

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。
        alter:包括“ADD ”、“DROP ”、“CHANGE (改变名称)”、“MODIFY(改变属性) ”四个功能模块。    修改某一列,列名要改变,用change; 修改某一列,列名不改变,用modify;
        CHANGE重命名时,需给定旧的和新的列名称和列当前的类型。

for example:要把一个INTEGER列的名称从a变更到b,您需要如下操作:
    ALTER TABLE t1 CHANGE a b INTEGER;


        如果您想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。

for example :
    ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;


        需在表中添加列,请使用下列语法:

ALTER TABLE t_user ADD love varchar(32);

        查看Mysql表结构:

DESC t_user;


        要改变表中列的数据类型,请使用下列语法:

ALTER TABLE t_user MODIFY COLUMN love YEAR;


        要删除表中的列,请使用下列语法:

ALTER TABLE t_user DROP COLUMN love;

        我们通常希望在每次插入新记录时,自动地创建主键字段的值。
        默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

从某个数开始自增时:
        for example:ALTER TABLE Persons AUTO_INCREMENT=100
        
        auto_increment_offset表示起始数字
        auto_increment_increment表示调动幅度(即每次增加n个数字,2就代表每次+2)

        仅是自己学习心得,错误之处请指正!勿喷,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值