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 表名
二者区别在于:
查询操作
分类:
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;
返回限定行数的查询——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排序
SQL的第二篇就到这里了,博主写的快吐了!感觉学的时候没这么多啊,希望各位认同的朋友顶一下,也好让我有动力写完。