SQL语言分类有哪几种?分别都对应着哪些关键字?都整理在这里了

你这文章写得挺全乎啊,不过我跟你讲讲我当年踩的坑,可能比你写的更实在。

那年我在北京,接了个活儿,做一个超市管理系统。
客户要求特别多,啥都要用上。
结果呢?一上线就崩。
为啥?索引没加对!那会儿我年轻啊,觉得索引就是加个东西,随便加几个不就行了?结果呢?一个表加了七八个索引,查询的时候卡得跟死了一样。
客户急得直骂,我脸都绿了。
最后还是请教了老同事,把多余的索引都删了,只留最关键的几个,系统立马就快了。

所以说啊,索引这玩意儿,不是说越多越好。
你得看你的数据量,你的查询习惯。
你表里有几万条数据,你随便加个索引,查询的时候肯定慢。
你得分析,哪些列是经常用来查询的,哪些列是经常用来排序的,再根据这些情况加索引。
我后来总结,加索引是个技术活儿,得有耐心,不能瞎来。

还有啊,你写的那啥触发器,我当年也用过。
在杭州做一个订单系统,客户要求特别严格,订单修改了,要自动更新几个表的数据。
我弄了个触发器,结果呢?触发器写得太复杂,一个订单修改,触发器跟着触发,又触发另一个触发器,最后系统卡死。
客户说不行,要改。
我熬夜改了好几天,最后发现,就是触发器写得太耦合了,改成一堆独立的存储过程,系统就正常了。

所以说啊,触发器这玩意儿,用好了是神器,用不好就是负担。
你得控制好它的复杂度,不能让它无限制地触发。
有时候,用存储过程代替触发器,可能是个更好的选择。

你说的那些DDL操作,我基本都干过。
创建数据库、创建表、创建视图、创建索引,这些我都会。
不过啊,我给你个建议,创建表的时候,别光顾着加列,你得考虑好列的类型,列的约束。
比如,你那个主键,最好是自增的整数类型,这样插入数据的时候方便。
你那个索引,最好是根据你的查询习惯来加。
你经常根据哪个列来查询,你就加索引在那个列上。

还有啊,你那个修改表名,我当年也干过。
在南京做一个旧系统升级,客户要把表名全改成英文。
我辛辛苦苦改了上百个表名,结果呢?改完之后,系统就崩了。
为啥?我忘了检查所有的SQL语句,那些老代码里全都是中文字符的表名,我改完之后,语句就错了。
最后又得熬夜改回来,真是欲哭无泪。

所以说啊,做这种DDL操作,一定要小心。
你得先备份好数据,再慢慢来。
改一个表名,你得检查所有引用了这个表名的SQL语句,确保改完之后语句还是对的。
改多了,容易出错,得有耐心,一步一步来。

你说的那些条件语句,我都用过。
逻辑运算符、值、字段操作符,这些我都熟。
不过啊,我给你个建议,写条件语句的时候,尽量简化。
别写一堆复杂的条件,那样容易出错,也难读。
你那个like查询,我常用。
不过啊,用like查询的时候,尽量少用%,特别是前缀加%,那样查询会很慢。
你那个分组,我常用。
不过啊,用分组的时候,记得用having筛选,别用where。

还有啊,你那个事务,我常用。
commit和rollback,我都用过。
不过啊,用事务的时候,一定要小心。
你得确保事务里的所有操作都能成功,否则就用rollback回滚。
你那个autocommit,我建议你关掉。
特别是做数据修改的时候,关掉autocommit,手动控制commit和rollback,这样能更好地保证数据的一致性。

所以说啊,做数据库操作,一定要小心。
你得了解你的数据,了解你的业务,再写SQL语句。
不能瞎写,得有思路,有计划。
你那样写文章,写得再全乎,不如你多踩点坑,多总结经验。
那样才能更好地掌握数据库操作。

我说的这些,都是我亲身踩过的坑,希望对你有帮助。
你要是有啥问题,随时问我,我教你。

SQL语句的分类

哎哟,咱们聊聊SQL语句吧,这玩意儿就像咱平时用的工具,分门别类,各有各的用处。
我记得当年我刚接触这个的时候,那叫一个头大啊,不过慢慢就摸出点门道来了。

首先得说说DDL(数据定义语言),这就像是在盖房子,先得打好地基。
我记得有一次,我们公司要开发一个新系统,得创建好几个数据库和表,那时候我就用到了CREATE和DROP。
创建数据库和表的时候,得规定表的结构,比如列名和数据类型,这就像给表定义好各个房间和墙壁。
后来表用不上了,还得删掉,免得浪费空间,那就用DROP。

然后是DML(数据操纵语言),这就像是装修房子,搬家具,添置生活用品。
比如SELECT,就是去查询表里的信息,就像你查字典一样,想知道哪个房间有什么东西。
INSERT就是往表里加新东西,比如搬进新的家具。
UPDATE是更新信息,家具换了个地方,或者换了个新的款式。
DELETE是删除信息,比如家具坏了或者搬走了,就得从表里删除。

最后是DCL(数据控制语言),这就像是制定房子的使用规则,谁可以进房间,谁可以做什么。
比如COMMIT,就是确认一下,装修好了,家具摆好了,房子可以正式入住。
ROLLBACK就是撤销操作,比如装修过程中出了点问题,得重来,那就得撤销之前的操作。
GRANT是给用户授权,比如规定谁可以进入房间,谁可以操作家具。
REVOKE就是撤销授权,比如不希望某个亲戚随便动家具,那就得收回去。

总之,这三类SQL语句,各有各的使命,让数据库的管理变得井井有条。

SQL语言里面int(10)和int有什么区别?

说实话,SQL里整数类型就是int。
直接用int就完事了。
但有时候看到int(1 0),当时我也没想明白这括号是干啥的。

其实这int(1 0)啊,是MySQL搞的鬼。
它不代表整数能存多少位数字。
在MySQL里,int(1 0)和int没区别,都是3 2 位整数。
这括号只是告诉数据库,显示的时候占1 0个字符宽度。
比如两个int字段放一起,一个int(1 0),一个int(5 ),显示的时候int(1 0)会靠右多空几个格。

其他数据库比如Oracle,int(1 0)就真的只让整数最多1 0位。
所以用int(1 0)要注意,它可能跟别人的数据库不兼容。

一般用int就行,别瞎加括号。
除非你真的想让数字显示的时候对齐好看。
但说实话,这点对齐效果,值不值得增加代码复杂度和潜在性能问题,得你自己掂量。