【SQL】牛客网学习笔记

1、视图中可以进行基本的增删改查,也可以定义新的视图,却无法创建表,因为视图是个虚表,

  • 视图所引用的表称为视图的基表   
    • 注意:视图一般用于查询的,而不是更新的,所以具备以下特点的视图都不允许更新
    • ①包含分组函数、group by、distinct、having、union、
    • ②join
    • ③常量视图
    • ④where后的子查询用到了from中的表
    • ⑤用到了不可更新的视图

2、UPDATE更新语法为:

  • UPDATE table_name SET field1 = new-value1, field2 = new-value2 [WHERE Clause]

    更新多列数据的间隔符号是逗号,不是AND语句

3、修改表:ALTER TABLE 表名 修改选项 。选项集合:

  • { ADD COLUMN <列名> <类型> -- 增加列

  •  | CHANGE [COLUMN] <旧列名> <新列名> <新列类型> -- 修改列名或类型

  •  | ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值

  • | MODIFY [COLUMN] <列名> <类型> -- 修改列类型

  • | DROP [COLUMN] <列名> -- 删除列

  • | RENAME TO <新表名> -- 修改表名

  • | CHARACTER SET <字符集名> -- 修改字符集

  • | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)

4、REPLACE函数虽然可以批量修改数据,但是REPLACE的正确语法应该是:

REPLACE INTO tab_name(field1, field2...) VALUES (value1, value2)...;

5、insert into 表名(表名.字段名)select 列名 from 数据表名 

6、STUFF(原字符, 开始位置, 删除长度, 插入字符)

  • 从指定的起点处开始删除指定长度的字符,并在此处插入另一组字符

7、SQL中如何删除触发器

  • DROP TRIGGER 触发器名称

8、连接

  • 内连接、外连接(左、右、全)、交叉连接 。

  • 内连接(inner join/join):只有两个元素表相匹配的才能在结果集中显示。inner join时只会对非NULL的记录做join,并且两边都有的才会匹配上

  • 外连接outer join:可进一步分为左外连接left outer join和右外连接right outer join,(简称左连接left join,右连接 right join)。

  • 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。

  • 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。

  • 全外连接(full join/full outer join):连接的表中不匹配的数据全部会显示出来。mysql不支持

  • 交叉连接(cross join): 笛卡尔效应,即不加任何条件,达到 M*N 的结果集。

9、as可以做重命名,不过也可以省略as,空格隔开新名称即可 【mysql,oracle】

  • as = 新名  【sql server】

10、null值不会和任何值相等,也就不能用' <> '来比较是否相等,要想选择是否为null的列,可以用is null 或 is not null

11、区块链本质上是种数据库技术。区块链大致可以分为公有链(Public Blockchain)、私有链(Private Blockchain)以及联盟链(Consortium Blockchain)三大类。

where筛选、group by分组、having与group by连用,用于筛选。

12、count()函数有两种使用方式:

  • 使用count(*)对表中的行数进行计数,此种用法不忽略null值;
  • 使用count(column)对特定列中具有值的行进行计数,此种用法忽略null值。

13、存储过程在存储的过程中可以同时执行多个sql语句,所以可以提高执行速度。同时执行多个sql语句构成的复杂操作也是基础成立的,存储过程本身就是一种封装手段,减少了代码行的同时就意味着减少了网络流量(Network traffic)

14、 SQL合法标识符 第一个字必须是 字母 、下划线 、@和#开头,不能是数字开头

  • SQL 标识符和关键字必须以一个字母(a-z 以及带变音符的字母和非拉丁字母)或下划线(_)开头, 随后的字符可以是字母、下划线、数字(0-9)、 美元符号($)。需要注意的是,根据 SQL 标准,美元符号不允许出现在标识符中, 因此使用美元符号将不易移植。SQL 标准不会定义包含数字或者以下划线开头或结尾的关键字, 因此按照这种格式定义的标识符是安全的,不会和将来标准的扩展特性冲突。

15、SQL Server中每一条select、insert、update、delete语句都是隐形事务的一部分,显性事务用BEGIN TRANSACTION明确指定事务。

16、SQL里的正则表达式查询

选项说明例子匹配值示例
^匹配文本的开始字符'^b' 匹配以字母 b 开头 的字符串book、big、banana、 bike
[^]匹配不在括号中的任何字符'[^abc]’ 匹配任何不包 含 a、b 或 c 的字符串desk、fox、f8ke
  •  MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

    [^charlist] 通配符表示 不在字符列中的任一单一字符。

    MySQL中选取不以charlist中任一字符开头的语法为:

    SELECT * FROM tab_name WHERE col_name REGEXP '^[charlist]';

    同理,不以某、或另一某字符开头的语法为:

    SELECT * FROM tab_name WHERE col_name REGEXP '^[^charlist]';

    SELECT * FROM tab_name WHERE col_name NOT REGEXP '^[charlist]';

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无人知我春风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值