SQL语句汇总——数据修改、数据查询
⾸先创建⼀张表如下,创建表的⽅法在上篇介绍过了,这⾥就不再赘述。
添加新数据:
INSERT INTO <;表名> (<;列名列表>) VALUES (<;值列表>)
如:
INSERT INTO t_student (student_id,student_name,student_age,student_sex) VALUES (1,'⼤⽑',18,'男');
其中列名可以省略,省略之后要求插⼊的值必须与列⼀⼀对应:
INSERT INTO t_student VALUES (2,'王⼆',20,'男');
多⾏数据添加:
INSERT INTO t_student VALUES (3,'张三',22,'男'),
(4,'李四',17,'⼥'),
(5,'王五',23,'男');
更改数据:
UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 过滤条件
假如要修改李四的年龄为21岁
UPDATE t_student SET student_age=21 WHERE student_name='李四';
注:修改多个列的值时⽤逗号隔开。要想设置某⼀列的值为空,只需让<;列名>=NULL 即可。WHERE表⽰过滤条件。
删除数据(⾏):
DELETE FROM 表名 WHERE 过滤条件
现要删除20到22岁的学⽣信息:
DELETE FROM t_student WHERE student_age BETWEEN 20 AND 22;
WHERE的判断条件之后会更详细的介绍。
删除除了DELETE还有⼀种⽅法TRUNCATE,写法:
TRUNCATE TABLE 表名
⼆者区别在于:
DELETE会记录⽇志,意味着删除后的数据还可以恢复,但是效率低。TRUNCATE不会记录⽇志,删除后的数据不能恢复,但是效率⾼。需要注意的是,TRUNCATE不能⽤于有外键约束引⽤的表。
查询操作
分类:
–投影操作
  指定查询结果中能显⽰哪些列
–选择操作
  指定哪些⾏出现在结果中
–排序操作
  指定查询的结果以什么样的顺序显⽰
投影操作:
SELECT 列1,列2 FROM 表名
多个列中间⽤逗号隔开,如果选择所有列可以⽤*号简写。
还是此表:
现在只想要查看姓名和年龄列:
SELECT student_name,student_age FROM t_student;
注意这⾥不是把其他列删除了,⽽是只显⽰我们想看见的部分。
SELECT CONCAT(student_name,'——',student_age) '组合值' FROM t_student;
CONCAT,可以将列与列之间⽤想要的符号连接起来:
排除重复——DISTINCT
现给原表加⼊⼀班级列:
按照之前⽅法查询班级列得到:
但是我们只想查看具体有哪些班级,这⾥就需要⽤到去重,也就是DISTINCT。SELECT DISTINCT student_class FROM t_student;
truncate的数据如何恢复返回限定⾏数的查询——LIMIT
LIMIT后⾯参数为1或2个:
LIMIT N 表⽰从第⼀⾏开始返回N⾏结果,LIMIT i,N 表⽰从第i+1⾏开始返回N⾏结果。例:
SELECT * FROM t_student LIMIT 3;
SELECT * FROM t_student LIMIT 2,3;
*注:LIMIT很重要,它是之后做数据表格分页的关键。
选择操作——WHERE:
分为单条件选择与多条件选择
单条件选择标准结构:
SELECT 列1, 列2 FROM 表名 WHERE 列3 = 值
关系运算符包括:>  >=  <  <=  =  !=
多条件选择标准结构:
SELECT 列A, 列B FROM 表 WHERE 条件1 (AND或者OR) 条件2
其中AND表⽰并且,OR表⽰或者。
选择范围——BETWEEN
如:
SELECT * FROM t_student WHERE student_age BETWEEN 20 AND 23;
BETWEEN后的值为从下限到上限。
定义集合——IN或NOT IN
现在想查看年龄为17、20、23的学⽣信息:
SELECT * FROM t_student WHERE student_age IN (17,20,23);
反之NOT IN就是选择不包括在集合⾥的学⽣信息。
模糊查询——LIKE
为了更好的解释模糊查询,这⾥重新建张表:
这⾥姓王的兄弟们躺...别介意。
⾸先先说下占位符与通配符:
占位符 "_",表⽰任何单个字符。
通配符 "%",表⽰包含零或多个字符。
下⾯就来⽤模糊查询逐⼀选中我们想要的⾏。
名字只有两个字的:
SELECT * FROM t_student WHERE student_name LIKE '__';
这⾥可能看不清,引号⾥实际是两个占位符。
所有姓王的:
SELECT * FROM t_student WHERE student_name LIKE '王%';
最后⼀个字是“王”的:
SELECT * FROM t_student WHERE student_name LIKE '%王';
只要是名字中有“王”字的:
SELECT * FROM t_student WHERE student_name LIKE '%王%';
这下模糊查询就很明⽩了吧,当然还有其他组合,⼤家可以⾃⼰尝试。
处理空值数据:
判断条件不能⽤列名=NULL,⽽是要⽤IS NULL或IS NOT NULL。
标准写法:
SELECT * FROM t_student WHERE 性别 IS NULL
排序操作——ORDER BY:
使⽤ORDER BY时,列名上指定ASC或DESC。ASC表⽰正序,DESC表⽰倒序。如果不指定则默认为正序。按年龄排:
SELECT * FROM t_student ORDER BY student_age ASC;
SELECT * FROM t_student ORDER BY student_age DESC;
最后⼀定要注意!
基本查询SQL的执⾏顺序:
1.执⾏FROM
2.WHERE条件过滤
3.SELECT投影
4.ORDER BY排序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。