开发者学堂课程【数据处理:DML 之 INSERT】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/64/detail/1148
DML 之 INSERT
DML
DML 被称为数据操作语言,DQL:SELECT*FROM 表名是查询表记录的语法。登录 mysql 服务器。输入 mysql -uroot -p123
输入 show databases 查看所有的数据库
比如 exam 数据库,这是练习,输入 use exam 再输入 show tables进入数据库查看表,其中有个 emp 表非常著名,emp 是employ。select*from emp 用于查询该表内所有记录。
如上图这张表非常著名,来自于 article 的用户,用户提供了三张表,其中一个为 dept,dept 是部门,输入 select*from emp 查询,另一个表为 salgrade,输入 select*from salgrade 查询,
三张表中最为著名的为 emp,输入 select*from emp 查询,这张表练习查询最为方便。表内大多为英文名字,英文名字不容易记住,可改成自己容易记忆的名字。比如表内有四大文员,甘宁、周泰、程普、黄盖,四大文员被改为江东四老,都是孙权手下的人,四大销售员,黛绮丝、殷天正、谢逊、韦一笑是张无忌手下的人,三个经理,刘备、张飞、关羽,两个分析师卧龙诸葛亮、凤雏庞统,一个董事长曾阿牛,一个保洁员张三,工资八万,奖金五万。这张表是查询时需使用的。查询出来对还是错一眼就能看出。表内名字改成中文后也有缺陷,英文有个好处为查询名字中有 A 的,更方便,而汉语不方便,但记忆时特别方便。select*from 表名是查询表记录。表记录的中增、删、改三项操作,如何才知道是否添加了记录,可以通过查询来得知。修改、删除也如此。
输入 mydb1,切回去。输入 show tables,查询。
发现有个 tb_student,若想把它名字改短,则需输入
alter table tb_student
-〉rename to stu;
输入 show databases,重新查询,发现名字已改为 stu,输入 select*from stu,查询 stu,显示空集合,即无记录。
插入数据
INSERT INTO 这个语法用于插入记录,INSERT INTO 后面跟表名和
(),()里指定插入的列,VALUES 后给出对应的值,
输入 desc stu,查询,一共有四列
INSERT INTO stu (
aa,
bb
)
是不可以的,因为表内无 aa 列,bb 列,需输入存在的列。比如插入 number,name,age,gender。
接下来输入
VALUES(
)
括号内需该对应的值,第一个 number 的值为 char11,改成 'ITCAST L-0001',第二个值为 'zhangsan',第三个 int 类型为'28',性别为 'male'。在数据库中,所有字符类型,必须使用单引,不能使用双引,日期类型也要使用单引。
INSERT INTO stu (
number,name,age,gender
)
VALUES(
'ITCAST-0001' 'zhangsan' '28' 'male'
)
意思是插入的列给出要插入的值。
第二种形式为
//插入部分列,没有插入的列,为默认值 NULL
INSERT INTO stu(
number,name,
)VALUES(
'ITCAST-0002','lisi'
)
记录永远都是一行一行地插入,那两列没给值。
数据库中 int 类型也有 NULL,表示没给值。把代码输入并运行。
输入 select*from stu,查询是否插入。发现已插入,number,name,age,gender 为列名,'ITCAST-0001' 'zhangsan' '28' 'male' 为记录,
再输入
INSERT INTO stu(
-〉number,name,
-〉)VALUES(
-〉'ITCAST-0002','lisi'
-〉);
插入的列是 number,name,给的值是 'ITCAST-0002','lisi',值给了两列。输入 select*from stu,查询记录。如果把 name,number 这两列的位置换一下,那么 name 的值为 'ITCAST-0001',number 的值为 'zhangsan'。
第三种插入形式为
//不给出插入列,那么默认为插入所有咧,值的顺序要与创建表时列的顺序相同。
INSERT INTO stu VALUES(
'ITCAST-0003','wangwu' '82' 'female'
);
少了要插入的列。创建表时列的顺序为 number,name,age,gender,因此这个顺序与值的顺序对应。这种方式一般不建议这么打,因为它的可读性会降低很多。
输入代码运行,输入 INSERT INTO stu UALUES<'ITCAST-0003' 'wangwu' '82'
'female'>输入 select*from stu,查询,不能用中文,用中文会乱码,甚至报错,是因为控制台有问题,不是数据库有问题。Windows 弹的数据表。插入给了三种形式,第一种是指定所有的,第二种是指定部分的,第三种是未指定列的值是 NULL,不指定值的表示插入所有列,值的顺序要与创建表时列的顺序相同。