目录
- CREATE TABLE student (
- id int NOT NULL AUTO_INCREMENT COMMENT '主键',
- code varchar(255) NOT NULL COMMENT '学号',
- name varchar(255) DEFAULT NULL COMMENT '姓名',
- sex enum('男','女') DEFAULT NULL COMMENT '性别',
- PRIMARY KEY (`id`)
- )
-
- INSERT into table-name
- (field-name-1, field-name2, field-name-n)
- VALUES
- (vaiue-1, value-2, value-n)
-
- --省略列明插入
- INSERT into table-name
-
- VALUES
- (vaiue-1, value-2, value-n)
- INSERT INTO student (id, code, name, sex) VALUES (1, '202201', '张三', '男');
- INSERT INTO student VALUES (2, '202202', '李四', '男');
如果指定列名形式插入,则列明先后顺序可以随意切换,只要列明跟数据一一对应即可如:
INSERT INTO student (id, code, name, sex) VALUES (1, '202201', '张三', '男');
跟INSERT INTO student (id, name, code,sex) VALUES (1, '张三','202201', '男');结果一样
如果对表中不允许NULL值且没有默认值的列不给出值,则MySQL将产生一条错误消息,并且相应的行插入不成功。
INSERT INTO student (id, code, name) VALUES (3, '202203', '王五');
- INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (1, '202201', '张三', '男');
- INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (2, '202202', '李四', '男');
- INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (3, '202203', '王五', NULL);
- INSERT INTO student (`id`, `code`, `name`, `sex`) VALUES (1, '202201', '张三', '男'),
- (2, '202202', '李四', '男'),
- (3, '202203', '王五', NULL);
- INSERT INTO TABLE1 (field-name-1, field-name2, field-name-n)
- SELECT (field-name-1, field-name2, field-name-n) FROM TABLE2
- -- 全列查询
- SELECT * FROM table-name where condition
-
- -- 部分列查询
-
- select field-name-1, field-name2,... field-name-n from table-name where condition
如查询所有学生信息和只查询姓名,性别结果分别如下
SELECT语句一般跟WHERE结合使用,用于查询筛选之后的结果,比如查询name为张三的学生信息
- update table-name
- set field-name-1=value-1,
- field-name2=value-2,...
- field-name-n=value-n
- where condition
如把学号为202201的学生学号修改为20220101
update student set code ='20220101' where code='202201';
DELETE table-name where condition;
如删除code为202203的学生,语句如下
DELETE student where code='202203';
语法 DELETE from table-name where
删除内容,不删除表结构,但不释放空间,delete删除数据后只会从删除前的最后一行续写,可以与WHERE结合使用
语法:TRUNCATE 表名
删除内容,不删除表结构,但不释放空间,truncate是直接从1开始,即全部清空开始,而delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快,可以理解为 TRUNCATE是删除原来的表并重新创建一个表,而不是逐行删除表中的数据
语法: drop 表名
drop语句将表所占用的空间全释放掉,删除表结构
执行效率:一般来说按执行速度可分为 DROP>TRUNCATE>DELETE
1、主键不唯一
ERROR 1062 (23000): Duplicate entry 'l' for key 'PRIMARY'
2、不存在的外键
ERROR 1452(23000) : Cannot add or update a child row :
3、列值不合法
ERROR 1265 (01000): Data truncated for column 'xxx' at row 1
4、无效的日期转换
ERROR 1292(22007) : Incorrect date value: 'xxx' for column'xxx' at row 1