牛客网 MYSQL进阶挑战 详细知识点总结(一)

目录

前言:

 一.插入记录

 1.1普通插入(全字段):

 1.2普通插入(限定字段):

1.3多条一次性插入:

1.4从另一个表导入:

1.5 replace 

二.更新记录

2.1设置为新值:

                                                     图 2-1 2.2根据已有值替换:

2.3 更新满足某些条件的行:

三.删除记录

3.1根据条件删除:

3.2全部删除(表清空,包含自增计数器重置):

3.3TIMESTAMPDIFF

四.创建一张新表 

4.1 直接创建表:

4.2 从另一张表复制表结构创建表:

4.3 从另一张表的查询结果创建表:

五.修改表

5.1 修改表:ALTER TABLE 表名 修改选项

5.2删除表:

致谢: 


前言:

牛客网是一个提供IT技术学习、实践和交流的平台,其中包括了各种编程语言和技术的学习和挑战。MYSQL是其中的一个重要部分,对于想要深入学习MYSQL的人来说,牛客网提供了一系列的挑战题目。希望大家也可以通过本博客学习到自己需要的知识。


 一.插入记录

 1.1普通插入(全字段):

INSERT INTO table_name VALUES (value1, value2, ...)

                                                  如图 1-1 所示

   

                                                        图1-1

注:此处 describe是查询该表中数据类型的命令 

                                                如图 1-2 所示

                                                        图 1-2 

 1.2普通插入(限定字段):

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)

                                                如图 1-3 所示

                                                        图 1-3 

1.3多条一次性插入:

INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...

                                                如图 1-4 所示

                                                      图 1-4

1.4从另一个表导入:

INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]

                                             如图 1-5 所示 

                                                 图 1-5 

1.5 replace 

replace into 跟 insert into功能类似,不同点在于:replace into 首先尝试插入数据到表中,

1.5.1如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据;
1.5.2否则,直接插入新数据。

注意:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

                                              如图 1-6 所示

                                                    图 1-6 

注意如果插入的字段是自增字段的话 则可以选择以下几种方法 

方法一: 可以指定插入的列名,避开自增的列 ,让自增的列自增 

方法二 :把自增的值设置为NULL或0,这样MySQL会自己处理这个自增的i列

方法三:直接填入id值,不过仅针对插入数据不多的时候使用 

二.更新记录

2.1设置为新值:

UPDATE table_name SET column_name=new_value [, column_name2=new_value2] [WHERE column_name3=value3]

                                                   如图 2-1 所示

                                                     图 2-1 
2.2根据已有值替换:

UPDATE table_name SET key1=replace(key1, '查找内容', '替换成内容') [WHERE column_name3=value3]

                                                    如图 2-2 所示

                                                     图 2-2 

2.3 更新满足某些条件的行:

如果想仅更新满足某些条件的行,可以在语句末尾使用 WHERE 子句来指定条件。例如,如果只想更新地址中包含 "Street" 的行,可以添加以下条件:

                                                    如图 2-3 所示 

                                                     图 2-3 

三.删除记录

3.1根据条件删除:

DELETE FROM tb_name [WHERE options] [ [ ORDER BY fields ] LIMIT n ]

                                                    如图 3-1 所示

                                                      图 3-1


3.2全部删除(表清空,包含自增计数器重置):

TRUNCATE tb_name

                                                    如图 3-2 所示 

                                                      图 3-2 

3.3TIMESTAMPDIFF

TIMESTAMPDIFF(interval, time_start, time_end)可计算time_start-time_end的时间差,单位以指定的interval为准,常用可选:
SECOND 秒
MINUTE 分钟(返回秒数差除以60的整数部分)
HOUR 小时(返回秒数差除以3600的整数部分)
DAY 天数(返回秒数差除以3600*24的整数部分)
MONTH 月数
YEAR 年数

                                                      如图· 3-3 所示 

                                                      图 3-3 

四.创建一张新表 

4.1 直接创建表:


CREATE TABLE
[IF NOT EXISTS] tb_name -- 不存在才创建,存在就跳过
(column_name1 data_type1 -- 列名和类型必选
  [ PRIMARY KEY -- 可选的约束,主键
   | FOREIGN KEY -- 外键,引用其他表的键值
   | AUTO_INCREMENT -- 自增ID
   | COMMENT comment -- 列注释(评论)
   | DEFAULT default_value -- 默认值
   | UNIQUE -- 唯一性约束,不允许两条记录该列值相同
   | NOT NULL -- 该列非空
  ], ...
) [CHARACTER SET charset] -- 字符集编码
[COLLATE collate_value] -- 列排序和比较时的规则(是否区分大小写等)

                                                      如图 4-1 所示 

                                                      图 4-1 

注:register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'

(这是一个 MySQL 中创建表时的列定义语句,它表示创建一个名为 register_time 的列,数据类型为 DATETIME)


4.2 从另一张表复制表结构创建表:

CREATE TABLE tb_name LIKE tb_name_old

                                                       如图 4-2 所示 

                                                       图 4-2 

4.3 从另一张表的查询结果创建表:

CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options

                                                      如图 4-3 所示 

                                                       图 4-3 

五.修改表

5.1 修改表:ALTER TABLE 表名 修改选项


{ ADD COLUMN <列名> <类型>  -- 增加列
 | CHANGE COLUMN <旧列名> <新列名> <新列类型> -- 修改列名或类型
 | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
 | MODIFY COLUMN <列名> <类型> -- 修改列类型
 | DROP COLUMN <列名> -- 删除列
 | RENAME TO <新表名> -- 修改表名
 | CHARACTER SET <字符集名> -- 修改字符集
 | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)

                                                      如图 5-1 所示 

                                                       图 5-1

5.2删除表:

DROP TABLE [IF EXISTS] 表名1 [ ,表名2]。

                                                      如图 5-2 所示

                                                        图 5-2 

致谢:


 

感谢您阅读本篇文章,希望我所提供的 SQL 知识总结能对您有所帮助。如果您对 SQL 面试还有其他疑问或需要进一步了解,欢迎随时与我联系。祝您在未来的 SQL 面试和学习中取得优异的成绩!

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值