1.1外键的作用
ALTER TABLE school_stu
ADD CONSTRAINT pk_stu_stuId
PRIMARY KEY school_stu(stuId);
#外键
#外键:在一张表中的某个字段引用的数据来自另一张表的某个字段的信息。
#主表:它的主键一般是需要被从表引用 从表:在其中拥有外键 可以引用主表的主键信息。
grade主表 studeht从表
实现物理外键 通过SQL语句将外键绑定好 可以保证证据数据一致性。
ALTER TABLE school_stu
ADD CONSTRAINT fk_ stu_grade
FOREIGN KEY
主键:能够唯一标识信息表中的一条数据的字段/字段组
为了能够方便我们进行数据操作表 在实际项目中一般不设置物理外键 而设置逻辑外键
DDL 数据定义语言 CREATE DROP…
DML 数据操作语言 增删改
DQL 数据查询语言
DCL 数据控制语言
#数据添加 INSERT
INSERT INTO表名(要添加值的字段列表)】VALUES(字段值列表《必须按照前面的顺序赋值》);
INSERT INTO school_stu(stuId,stuName,stu
#如果你省略了字段列表 则需要将所有字段进行赋值 且严格按照顺序
#如果有些字段有默认(主键有自动递增) 则可以使用null来表示 /你不需要去给此字段赋值
同时添加多条数据
#添加多条数据
#将schoo_stu的Id和名称 赋值到stu表中的对应列
#必须保证要添加数据的表提前存在!!!
INSERT INTO stu(stuId,stuName)
SELECT
#将school_stu的id和名称 赋值到一张新表newstu中
CREATE TABLE newstu(
SELECT stuId,stuName FROM school_stu
);
#数据修改 UPDATE
#修改语句
#UPDATE表名 SET字段名 = 字段值,。。【where条件语句】
#如果不添加条件 则默认为全表更新
#WHERE后可接一系列的判断条件 id = xxx and xxx = xx or xxx = xx and not xxx
#年级升级
#数据删除DELETE
#DELETE FROM 表名【where条件】
DELETE FROM school_stu WHERE
#TRUNCATE 可以进行数据删除。
TRUNCATE TABLE school_stu;
DELETE TRUNCATE的区别
相同点:都可以进行数据删除(全表删除)
不同点:DELATE可以进行条件删除 TRUNCATE 只能进行全表删除。
不同点:DELETEH除了表结构 其他数据全部清空 不会保留自增序列。
不同点(了解):TRUNCATE会结束事物 而DELETE不会影响到事物。- 创建学生表
CREATE TABLE student
(
stuId INT PRIMARY KEY AUTO_INCREMENT COMMENT ‘学生编号’,
stuName VARCHAR(25) COMMENT ‘学生姓名’,
stuPwd VARCHAR(50) COMMENT ‘学生密码’,
gender CHAR(2) DEFAULT ‘男’ COMMENT ‘性别’,
gradeId INT COMMENT ‘年级编号’,
phone VARCHAR(11) COMMENT ‘电话’,
email VARCHAR(25) COMMENT ‘邮箱’,
address VARCHAR(255) DEFAULT ‘地址不详’ COMMENT ‘地址’,
identityCard VARCHAR(18) UNIQUE COMMENT ‘身份证号’
) COMMENT ‘学生表’;
– 1.修改表(并不是特别常用 只需要了解记忆一些常见的即可<面试题>)
#更改identityCard字段名称为identityId
CHANGE:更改字段信息时 并且可以改名 / MODIFY 只能改字段信息
ALTER TABLE student CHANGE identityCard identityId VARCHAR(18);
添加字段信息 出生日期 birthday/bornDate datetime COMMENT ‘出生日期’
ALTER TABLE student ADD bornDate datetime COMMENT ‘出生日期’;
ALTER TABLE student DROP bornDate;
ALTER TABLE student RENAME school_stu;
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段名);
ALTER TABLE school_stu
ADD CONSTRAINT pk_stu_stuId
PRIMARY KEY school_stu(stuId);
#grade主表 student从表
ALTER TABLE school_stu
ADD CONSTRAINT fk_stu_grade
FOREIGN KEY (gradeId)
REFERENCES grade(gradeId);
– CUD SQL-
/*
DDL 数据定义语言 CREATE DROP …
[DML] 数据操作语言 增删改
DQL 数据查询语言
DCL 数据控制语言
*/
INSERT INTO school_stu (stuId,stuName,stuPwd) VALUES(2,‘石浩然’,‘root’);
INSERT INTO school_stu VALUES(3,‘呵呵’,‘hehe’,‘女’,2,‘12312’,‘x’,‘x’,‘xxx’,‘2019-05-23’);
INSERT INTO school_stu (stuId,stuName) VALUES(null,‘我是测试的’);
INSERT INTO school_stu(stuName) VALUES(‘陈旭’),(‘李天一’),(‘努力过’);
INSERT INTO school_stu(stuName)
SELECT ‘呵呵1’ UNION
SELECT ‘呵呵2’ UNION
SELECT ‘呵呵3’
INSERT INTO stu(stuId,stuName)
SELECT stuId,stuName FROM school_stu;
CREATE TABLE newstu(
SELECT stuId,stuName FROM school_stu
);
UPDATE school_stu SET stuName = ‘李天二’
UPDATE school_stu SET stuName = ‘李易峰’ WHERE stuId = 7;
UPDATE school_stu SET stuName = ‘李元霸’ WHERE gender = ‘男’
UPDATE school_stu SET gradeId = gradeId + 1,phone = ‘13838384383’ WHERE stuId = 1;
DELETE FROM school_stu WHERE stuName = ‘李元霸’ AND gender = ‘男’;
TRUNCATE TABLE school_stu;
相同点:都可以进行数据删除(全表删除)
不同点:DELETE可以进行条件删除 TRUNCATE只能进行全表删除
#不同点:DELETE会保留自增序列 TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列
#不同点(先了解):TRUNCATE会结束事务 而DELETE不会影响到事务