我们学的mysql,其实是学的sql语言,sql语言全称:结构化查询语言
一、sql语言分类
sql语言分类:
DQL:数据查询语言 (select)
DML:数据操作语言(delete、update、insert)
DDL:数据定义语言(drop、create等)
TPL:事物处理语言(保证被DML影响的行能够及时得到更新)
详细介绍:
使用的数据库模型:
添加的数据:
1、DQL:数据查询语言
select * from student; //查询全部
select * from student where id=2; //根据条件查询,where后写查询条件
2、DML:数据操作语言
①添加 insert
格式:insert into 表名 [(字段1,字段2.....)] values (值1,值2.....),(值1,值2.....);
第一种:insert into student(name,address) values ("陈平安","浩然天下"),("阿良","浩然天下");
第二种:insert into student values(null,"陈平安","浩然天下"),(null,"阿良","浩然天下");
不同之处:第一种声明了表中的字段,这样添加行数据时,不用每个字段都写,只写前边声明的就行。第二种没有声明字 段,所以每个字段都要写对应的值,id在创建表时设定为主键自增,就设为null就好,后边在介绍。
②更新 update
格式:update 表名 set 字段1=值1,字段2=值2 where 字段=值;
uddate student set name="猛" where name="阿良";
③删除 delete
格式:delete from student where 字段=值;
delete from student where id=4;
二、数据完整性
数据完整性包括:实体完整性、域完整性、引用完整性、自定义完整性(mysql中没有定义这个)
1、实体完整性
作用:保证数据表中行数据的唯一性
实现:给数据库表添加一个主键。
要求:主键要求不能为null,不能重复
主键是什么?
主键是表中的一列,其值能保证行数据的唯一性。在创建表或更改表时,可以通过primary key来创建主键。一个表中只能使 用primary key一次,并且使用primary key修饰的列不接受空值。
主键的作用:
①确保实体的数据完整性
②加快了数据的的操作速度
③当向表中添加新数据时,数据库会对比添加的主键值和表中存在的主键值是否重复
④表中数据按照主键值来确定显示顺序,如果没有主键值,则按添加的先后顺序来确定显示顺序。
主键的特点:
①不为null
②不重复
③无意义
自增控制 :auto_increment 不为空:not null 不重复:unique
问:既然primary key 和unique not null组合都是不为空,不重复,那是否可以相互替换。
答:不能。使用primary key后,会生成索引文件,提高数据库表的操作速度。而unique not null不行。
注:不是因为有索引文件,操作数据库表的速度变快,而是因为索引算法。数字使用b+tree,汉字使用hash值
创建表中声明主键:
create table student(id int(20) primary key auto_increment);
2、域完整性
作用:保证输入的值在设定的范围内,比如性别为男女,年龄设置为不超过40岁。
设置默认值: default
非空约束:not null
创建表中给列值设置默认值,并不为空:
create table student(id int(20) primary key auto_increment,sex varchar(20) not null default "男");
3、引用完整性 外键
foreign key(外键)用来保证表与表之间数据的完整性,是建立在主键基础之上的。体现了表与表之间的关联性。要现有主键数据, 才能添加外键数据。外键要和主键数据类型保持一致。
如果一个实体中的某个字段指向另一个实体的主键,那个字段就叫外键。
如果一个表中的某个列指向另一个表中的主键,这个字段就叫外键列。
被指向的实体的叫做父实体(父表),或主实体(主表)。
负责指向的实体叫做子实体(子表),或从实体(从表)。
mysql系统禁止用户做以下操作:
①在主表中没有关联的记录时,往从表中添加数据。
②将主表中的值导致从表中的值孤立
③将主表中的记录删除,但是从表中仍有与该记录相关联的数据。
实例表: