快速自学java编程高级语言干货笔记 -MySQL-DML操作

创建学生表
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 '学生表';

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从表

实现物理外键 通过SQL语句将外键绑定好 可以保证数据一致性

ALTER TABLE school_stu 
	ADD CONSTRAINT fk_stu_grade 
	FOREIGN KEY (gradeId)
	REFERENCES grade(gradeId);
为了能够方便我们进行数据表操作  在实际项目中一般不设置物理外键 而设置逻辑外键
-- CUD  SQL-
/*
	DDL 数据定义语言  CREATE DROP ... 
	[DML] 数据操作语言  增删改
	DQL 数据查询语言
	DCL 数据控制语言
*/
数据添加 INSERT
 INSERT INTO 表名[(要添加值的字段列表)] VALUES(字段值列表<必须按照前面的顺序赋值>);
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');

如果有些字段有默认(主键有自动递增) 则可以使用null来表示 / 你不需要去给此字段赋值

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'

将school_stu的id和名称 赋值到stu表中的对应列
必须保证要添加数据的表提前存在!!!!

INSERT INTO stu(stuId,stuName)
	SELECT stuId,stuName FROM school_stu;

将school_stu的id和名称 赋值到一张新表newstu中

CREATE TABLE newstu(
	SELECT stuId,stuName FROM school_stu
);

数据修改 UPDATE

修改语句

 UPDATE 表名 SET 字段名 = 字段值,...... [where条件语句]
 如果不添加条件  则默认为全表更新
UPDATE school_stu SET stuName = '李天二'

WHERE 在哪/哪里?

WHERE 后可接一系列的判断条件  id = xxx and xxx = xx or xxx = xx and  not xxx
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
 DELETE FROM 表名 [where 条件]
DELETE FROM school_stu WHERE stuName = '李元霸' AND gender = '男';

TRUNCATE 可以进行数据删除

TRUNCATE TABLE school_stu;

<面试题>DELETE TRUNCATE的区别

相同点: 都可以进行数据删除(全表删除)
不同点: DELETE可以进行条件删除 TRUNCATE只能进行全表删除
不同点:DELETE会保留自增序列 TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列
不同点(先了解): TRUNCATE会结束事务 而DELETE不会影响到事务

猜你喜欢

转载自blog.csdn.net/weixin_44793608/article/details/90721744
今日推荐