近期看完了SQL菜鸟学习教程,SQL 总结 | 菜鸟教程 对其中遇到的一些疑惑和学习笔记打算做做整理,分几篇发出来,供大家交流和自己以后方便查看 :D
问题一:关于约束命名
问题二:关于主键和外键
问题三:关于索引
问题四:关于SQLsever修改列的数据类型报错 不兼容冲突 不支持转换的问题
问题五:如果在查询中作多个内容会怎样
问题六:数字类型的数据后的(n)
问题七:子语句的顺序
问题八:where和having
问题一:关于约束命名
1、当时看的时候第一反应就是,我添加一个unique的约束,为啥还要给他命名?
- 应该是因为,为了方便删除
如这个unique约束 是一个索引,而且在有索引情况下,是无法修改其他约束的
然后要删除这个约束的话,就要知道约束名,不然没法删。。
要删除的话,就要先查询索引表中已经存在索引,sql server用exec sp_helpindex 表名,mysql用show create table 表名,的语句,来查看索引,然后找到它给你自动命的名,然后用这个名字删除……
2、发现一个神奇的事情,似乎SQL里对约束命名,有些名字是不能用的
我想命名为current_date,但是就一直报错
换成别的就可以了 神奇
3、关于撤销drop default的问题
用教程里的:
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT
会一直报错 语法错误default
百度了一会儿,不知道是不是mySQL和SQLserver的区别,还是直接换语法比较对:
alter table access_log drop constraint ab_C;
这个ab_C是我对default约束的命名。
4、关于列名 索引名等各种命名的问题
语法中规定是不可以以数字开头的,只能以字母或漢字下划线等一些符合命名规则的字母開頭,后面可以跟数字。<