使用DML操作数据库

    xiaoxiao2023-10-20  153

    主键和外键<面试题>

    主键:能够唯一标识信息表中的一条数据的字段/字段组 #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不会影响到事务

    最新回复(0)