1.sql常用操作语句
增删改查
select * from 表名 where 条件;
插入语句:
//按照字段插入
insert into 表名(列名1,列名2。。。) values(列值1,列值2。。。);
//插入一条
insert into 表名 values(id,name,age,address);
//同时插入多条语句
insert into 表名 values(id,name,age,address) , (id,name,age,address),(id,name,age,address);
update 表名 set 列名 = ‘列值’ (修改的列) where 列名 = ‘列值’(标识列);
update 表名 set 字段名=字段值 where 条件;
update st set name="李四" where id = 1;
//where 代表条件
//如果不写where 代表全表更新修改。
delete from 表名 where 列名 = ‘列值’;
delete from st where name='李四';
delete from 表名 where 条件;
第二节:数据完整性
约束。
1、数据完整性(Data Integrity)
数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存 在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性分为四类: 实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户自 定义完整性(User-definedIntegrity)。 //按照字段插入 insert into 表名(列名1,列名2。。。) values(列值1,列值2。。。); //插入一条 insert into 表名 values(id,name,age,address); //同时插入多条语句 insert into 表名 values(id,name,age,address) , (id,name,age,address),(id,name,age,address);
2、数据完整性分为4类:
实体完整性(Entity Integrity)
域完整性(Domain Integrity)
引用完整性(Referential Integrity)
用户自定义完整性(User-defined Intergrity)
3、实体完整性(Entity Integrity) 约束
实体完整性:确保行数据的唯一性;
主键约束:primary key
行数据的唯一标识,不能为null,不能重复,一个表中应该有主键,只能有一个主键,有主键(索引)的表,查询 效率高。
主键 数据库主键是指表中一个列,其值能唯一地标识表中的每一行。这样的一列称为表的主键,通过它可强制表 的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY约束确保唯一数据,所以经常用来定义 标识列
唯一且非空;
主键的主要作用如下:
(1)保证实体的完整性;
(2)加快数据库的操作速度;
(3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
(4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
主键的特点:
(1)唯一性:一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。联合主键!
(2)非空性:主键的值不可重复,也不可为空;
(3)一张表要有一个无意义的主键。 主键主要是用于其他表的外键关联,以及本记录的修改与删除;
面试题:primary key 的特点 类似于 unique 和 not null 的组合。那么能不能使用unique 和not null 来代替 primary key 呢?
索引:目录
不能:因为主键会自动根据主键生成一个索引文件。增加查询效率。
不是说有了索引才会速度块,是因为索引算法。数字可以用b+tree,如果是汉字索引呢,hash值
自增约束:auto_increment:
整型,通常会选择:自增列 作为 主键。一个表只能有一个自增列
唯一约束:unique:
确保行数据的唯一性;一个表可以有多个唯一约束,可以为null,但是只能有一个null值,
非空约束:not null
确保某一列的值不能为空。
create table 表名 (
id int(5) primary key auto_increment,
name varchar(50) not null,
age int(5) not null
)
4、引用完整性
foreign key (外键)约束:主要是为了维护两个表之间的数据的一致性关系,是建立在主键的基础之上的 。A表 中的某列(外键)会引用B表中的主键;数据类型一致; 体现表与表之间的关联关系;必须先有主键数据,才可以 录入外键数据;外键要主键数据一致。
如果一个实体的某个字段指向另一个实体的主键,就称为外键
如果一张表的某个列指向另一个表的主键列 ,就称之为 外键列
被指向的实体,称之为主实体(主表),也叫父实体(父表)。
负责指向的实体,称之为从实体(从表),也叫子实体(子表)
引用完整性:确保表与表之间的数据的一致性
MySQL禁止用户进行下列操作。 (1)当主表中没有关联的记录时,将记录添加到相关表中。 (2)更改表中的值 并导致相关表中的记录孤立。 (3)从主表中删除记录,但仍存在与该记录匹配的相关记录
5、域完整性(Domain Integrity)
是考虑如何限制向表中输入的数值的范围 比如性别{男、女},年龄>0并且<40等。
域完整性的约束: CHECK(检查)约束 MySql中没有实现check约束(了解)
DEFAULT(默认值)约束
非空约束:not null
确保某一列的值不能为空。
sql语句找错:找near
第三节:数据定义语言(DDL)
主要用来修改数据表结构用的,增加/减少/修改 字段 (属性) 添加各种约束
语法:
//添加新的字段 alter table 表名 add 列名 ;
//添加新的字段 位置在第一列 alter table 表名 add 列名 first;
//将列名1添加到列名2的后边 alter table 表名 add 列名1 after 列名2;
//修改字段名和类型 alter table 表名 change COLUMN ;
//修改列名的类型 alter table 表名 modify ;
//删除列 alter table 表名 drop ;
//给表重命名 alter table 表名 rename ;
//设置字符集 alter table 表名 CHARACTER SET ;
//移动列的位置 将列名a移动到列名b的后边 alter table 表名 modify (列类型) after ;
//给id添加自增约束 alter table 表名 modify id int(5) auto_increment;
//修改表中的字段不为空/或者为空 alter table 表名 modify 字段名 类型 not null/null;
//添加表的字段自增主键 如果要修改只需将add 改成 modify alter table 表名 add column 字段名 类型 auto_increment not null, add primary key(cid);
//添加唯一约束: alter table 表名 add constraint uk_(字段名) unique(字段名);
//删除表的字段 alter table 表名 drop column 字段;
//删除自增主键约束 alter table 表名 modify id int;
//删除表的主键约束,要先删除自增约束才可以删除主键约束 alter table 表名 drop primary key;
//添加外键约束 //外键名 fk_classid_id student classid class id
alter table 表名 add constraint 外键名
foreign key(引用id) references 被引用表名 (被引用id)
//添加主键约束 alter table 表名 add constraint pk_id primary key(id(修改的主键列名));
//删除外键约束 -- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
show create table 表名;
-- 获取名称之后就可以根据名称来删除外键约束
alter table 表名 drop foreign key 外键名