Mysql crud 简单操作
Insert
基本语法:
insert into 表名 (列名1,列名2,列名3...)
values(列名1值,列名2值,列名3值...);
insert 语句的细节:
- 插入的数据应与字段的数据类型相同。
比如 把 ‘abc’ 添加到 int 类型会错误
- 数据的长度应在列的规定范围内,
例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。
- 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。
- 字符和日期型数据应包含在单引号中。
- 列可以插入空值[前提是该字段允许为空],insert into table value(null)
- . insert into tab_name (列名…) values (),(),() 形式添加多条记录
- 如果是给表中的所有字段添加数据,可以不写前面的字段名称
- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错
- 如果某个列 没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null
- 如果我们希望指定某个列的默认值,可以在创建表时指定
Update
修改表中数据
基本语法:
UPDATE 表名 SET 列名 = 修改后的值 -- 没带where条件,会修改这个表这个列的所有数据,小心使用
UPDATE 表名
SET 列名 = 修改后的值
WHERE 列明 = 对应值 ; -- 带where条件,只会修改这一条记录
UPDATE 表名
SET 列名 = 列名 + 值 -- 例如:SET salary = salary + 1000
WHERE 列明 = 对应值 ; -- 带where条件,只会修改这一条记录
使用细节:
- UPDATE语法可以用新值更新原有表行中的各列。
- SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行(记录),因此老师提醒一定小心。 - 如果需要修改多个字段,可以通过set字段1=值1,字段2=值2…
Delete
基本语法:
- 删除某一条语句
DELETE FROM 表名
WHERE user_name = 值 ;
- 删除表中所有记录
DELETE FROM 表名 ;
使用细节:
- 如果不使用where子句,将删除表中所有数据。
- Delete语句不能删除某一列的值(可使用update设为null或者’’)
- 使用delete语句仅删除记录,不删除表本身。如要删除表,使用droptable语句。drop table表名;
Select
基本语法:
查询表中所有信息:
SELECT * FROM 表名;
查询表中其中几列信息:
SELECT 列名1,列名2,列名3... FROM 表名;
过滤表中重复数据:
SELECT DISTINCT FROM 表名;
如果去除某列重复数据:
SELECT DISTINCT 列名 FROM 表名;
要查询的记录,每个字段都相同,才会去重,如:
SELECT DISTINCT name, english FROM student; name和english字段(类型)要相同
使用表达式对查询的列进行运算:
有如下表:
SELECT `name`, (chinese+english+math) FROM student;
执行后:
使用别名表示学生分数:
SELECT `name` AS '姓名', (chinese+english+math) AS total_score
FROM student
执行后:
在 where 子句中经常使用的运算符
使用where进行过滤查询
查询姓名为赵云的学生成绩
SELECT * FROM student
WHERE `name` = '赵云
查询英语成绩大于 90 分的同学
SELECT * FROM student
WHERE english > 90
查询总分大于 200 分的所有同学
SELECT * FROM student
WHERE (chinese + english + math) > 200
查询 math 大于 60 并且(and) id 大于 4 的学生成绩
SELECT * FROM student
WHERE math >60 AND id > 4
查询英语成绩大于语文成绩的同学
SELECT * FROM student
WHERE english > chinese
查询总分大于 200 分 并且 数学成绩小于语文成绩,的姓赵的学生. – 赵% 表示以赵开头即可
SELECT * FROM student
WHERE (chinese + english + math) > 200 AND
math < chinese AND `name` LIKE '赵%'
查询英语分数在 80-90 之间的同学
SELECT * FROM student
WHERE english >= 80 AND english <= 90;
SELECT * FROM student
WHERE english BETWEEN 80 AND 90;-- between .. and .. 是 闭区间
两种写法结果一样
查询数学分数为 89,90,91 的同学
SELECT * FROM student
WHERE math = 89 OR math = 90 OR math = 91;
SELECT * FROM student
WHERE math IN (89, 90, 91);
使用 order by 子句排序查询结果
对数学成绩排序后输出【升序】
SELECT * FROM student
ORDER BY math
对总分按从高到低的顺序输出 [降序] – 使用别名排序
SELECT `name` , (chinese + english + math) AS total_score FROM student
ORDER BY total_score DESC;
对姓韩的学生成绩[总分]排序输出(升序) where + order by
SELECT `name`, (chinese + english + math) AS total_score FROM student
WHERE `name` LIKE '韩%'
ORDER BY total_score;