3.1外键
alter table 表 add constraint 约束名 foreige key(gradeid
) references grade
(gradeid
);
数据库就是单纯的表,只能用来存储数据,只有行数据和列字段
我们想使用多张表的数据,想使用外键(程序去实现)
外键
强制不得使用外键与极联,一切外键概念必须在应用才能解决。
每次做delete 或者update都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。
3.2 DML语言
数据库的意义:数据存储,数据管理
DML 语言:数据库操作语言
insert
update
delete
3.3添加
语法:insert into 表名 ([字段1,字段2,…])values (‘值1’,‘值2’,‘值3’,…)
注意事项
1.字段与字段之间 英文逗号 隔开
2. 可以一一对应插入不能少 可以同时插入多条数据。
3. values后面得知,需要使用英文逗号隔开 values(),(),.,.,.,.
3.4修改
update修改谁 (条件) set 原来的值=新值
update 表名 set colnum_name = value where(条件)
条件:where 字句 运算符 id 等于某个值 ,大于某个值,在某个区间内修改。。。。。
update 表名 set colnum_name = value where(条件) between…and…
通过多个条件定位数据
UPDATE student
SET name
=‘长江7号’ WHERE name
=‘狂神44’ AND xingbie=‘女’
3.5删除
语法:delete from 表名 [where 条件]
– 删除数据(避免这样写,会全部删除)
delete from student
– 删除指定数据
delete from student
where id = 1;
truncate命令
作用:完全清空一个数据库表,表的结构和索引约束不会变。
– delete 的 truncate 区别
相同点:都能删除数据,都不会删除表结构
不同:
truncate 重新设置 自增列 计数器会归零
truncate 不会影响事务
CREATE TABLE test
(
id
INT(4) NOT NULL AUTO_INCREMENT,
coll
VARCHAR(20) NOT NULL,
PRIMARY KEY (id
)
)ENGINE=INNODB DEFAULT CHARSET=utf8
INSERT INTO test
(coll
) VALUES(‘1’),(‘2’),(‘3’)
DELETE FROM test
–不会影响自增
TRUNCATE test
– 自增回归零
了解即可: delete删除的问题,重启数据库,现象
innoDB 自增列会重1开始(存在内存当中的,断电及失)
mylsam 继续从上一个自增量开始(存在文件中的,不会丢失的)
4,DQL查询数据(最重点)
4.1,DQL(数据查询语言)
所有的查询操作都用它 select
简单的查询,复杂的查询它都能做
数据库中最核心的语言,最重要的语句
4.2指定查询字段
select STUDENTnO
AS 学号,studentname
as 学生姓名 from student as student
– 函数 concat (a,b)
select concat(‘姓名:’,studentname) as 新名字 from student
语法:select 字段。。。。 from 表
有的时候,列名字不是那么的见名之意。我们起别名 as 字段名 as 别名 表名 as 别名
去重 distinct
作用:select from result --查询全部的考试成绩
select student
from result – 查询有哪些同学参加了考试
select distinct stundet
from result --发现重复数据,去重。
数据库的列 (表达式)
select version() --查询系统版本
select 1003-1 as 计算结果 --用来计算 (表达式)
select @@auto_increment_increment --查询自增的步长(变量)
–学员考试成绩 —+1分查看
select student
,studentresult
+1 as ‘提分后’ from result
数据库中的表达式: 文本值,列,null,函数,计算表达式,系统变量…==
select 表达式 from 表
符号
like使用 %
查询姓刘的 名字后面只有一个字用_
两个字__
名字中间的%家%
多个查询 in