正文
DDL(Data Definition Language):数据定义语言,定义数据库、数据表、列、索引等。包括create, drop, alter等。
DCL(Data Control Language):数据控制语句,用于控制不同数据的访问权限,配置密码等。暴扣grant, revoke。
本文下来分别介绍DML中的
INSERT
,
SELECT
,
UPDATE
,
DELETE
。
INSERT语句
最简单的形式如下:
insert into table_name(id, cardno, `name`, `desc`) values('1', 100001, "good", "good boy");
第一个括号里是列名,第二个括号里是对应顺序的值。
一次插入多条数据:
insert into table_name(id, cardno, `name`, `desc`) values('1', 100001, "good", "good boy"),('2', 100002, "bad", "bad girl");
几个常见Tip
顺带说几个常见的小问题,在上面的写法里出现的:
-
表名和列名可以使用```做转移符,用途是当列名和表名为
desc
,
select
这种SQL的关键字和保留字时候必须使用,否则是会报语法错误的。
-
关于保留字和关键字不同,比如
select
是关键字,
desc
是保留字
具体可看手册
。实际上人脑也不会记忆这些关键字,所以在使用时候就全都使用转义就好了。学海无涯,每种技术的缩写、特例等等层出不穷,笔者的习惯是记忆一种比较通用和安全的用法,始终去使用即可。因为很多技术点的多种方法也是一项技术发展的历史原因造成的,并不是说都记着多种办法会有切实的场景。如果表自己创建时候,推荐的做法就还是要过一遍上述链接中的保留字,直接不要使用这些词为好,毕竟这个选名字的时间在建表做设计阶段总的时间比起来并不会占用多少比例。笔者遇到的一些ORM库之类对这些关键字可能并不是处理的十全十美,所以不用是最佳。
-
不止字符型,其实所有插入内容其实都可以用
'
引起来。用
'
不用
"
还有一个好用的地方是当输入字符串里面有双引号
"
时候,可以免于写一级转义。
-
表常常会有自增ID,其实被设置为自增的id也是可以在insert和update时候指定的,只是当不指定值时候才会自增。
INSERT INTO ... SELECT 用法:
这是很常用的技巧,当进行数据导入时候会碰到插入的数据需要从另一个表中获取,可以使用
insert into ... select
的写法。