Skip to content
On this page

数据操作和查询

数据操作


插入

SQL
INSERT [INTO] 表名 [(列名)] VALUES (值列表);

WARNING

  • 每次插入一行数据,不能只插入一部分数据,插入的数据是否有效将按照整行的完整性要求来检验

  • 每个数据值的数据类型精度位数必须与要与对应的列名精确匹配

  • 不能为标识符指定值

  • 如果某字段设置为不能为空,则必须插入数据

  • 插入数据时还要符合检查性约束的要求

  • 缺省值的列,可以使用DEFAULT关键字来代替插入实际的值

例子

SQL
INSERT lyb.student (name, age, gender) VALUES ('张三', 22, 0);
INSERT INTO lyb.student (name, age, gender) VALUES ('李四', 28, 0);

更新

SQL
UPDATE 表名 SET 列名 = 更新值 [WHERE 更新条件]

WARNING

  • 多列时用逗号隔开,一定要加更新条件以免错误更新

  • 多个联合条件使用ANDa=7 and b='410787'

  • 判断某字段是否为空xxx is null or xxx = ''

例子

SQL
UPDATE student SET name = '李四改', age = 30 WHERE id = '3';

删除

SQL
DELETE FROM 表名 [WHERE <删除条件>]

TIP

  • Delete语句是对整行进行操作,因此不需要提供列名

  • 如果要删除主表数据,则要先删除子表记录

例子

SQL
DELETE FROM student WHERE id = '3';

# 清空表中的所有数据
DELETE FROM student1;

截断表(清空表数据)

SQL
TRUNCATE table_name;

# 例如
TRUNCATE student1;

TIP

  • 表中数据会全部清空,但表结构约束不被改动

  • 不能用于有外键约束引用的表

  • 标识列重新开始编号

  • 因为要删除的数据不会写入日志,数据也不能恢复,所以工作中请尽量不要使用此命令

查询

SQL
SELECT    <列名> 
FROM      <表名> 
[WHERE    <查询条件表达式>] 
[ORDER BY <排序的列名>[ASC或DESC]]
  • 查询年龄为18的并且按照id倒序排列
SQL
SELECT * from lyb.student WHERE age = '18' ORDER BY id DESC;

查询空行

SQL
SELECT *
FROM student
WHERE city is null or city =''

限制查询的行数

SQL
# 查询到第一条符合的就返回
SELECT * FROM student WHERE province = '广东省' LIMIT 1;

去重

  • DISTINCT:从查询结果中返回唯一的值,它可以应用于一个多个列,以消除重复的行

    • 对于单列使用DISTINCT
    SQL
    SELECT DISTINCT 列名 FROM 表名;
    
    • 对于多列使用DISTINCT
    SQL
    SELECT DISTINCT 列1, 列2, ... FROM 表名;
    

例子

表结构如下:

SQL
id,name,age,gender,provience
1,张三,22,0,河南省
2,李四,28,0,江苏省
3,王婉,20,1,上海市
4,李丽,18,1,北京市
5,张环,20,0,广东省
6,如燕,18,1,新疆维吾尔自治区
7,李朗,18,0,陕西省
8,沈涛,18,0,江苏省
9,肖豹,18,0,广东省
10,杨方,22,0,河南省
11,杨方,22,0,河南省

SQL如下:

SQL
SELECT DISTINCT province FROM student;

# 结果如下:
/**
河南省
江苏省
上海市
北京市
广东省
新疆维吾尔自治区
陕西省
*/

模糊查询

  • 查询的条件是模糊的,不是特别明确

通配符

代替一个或多个真正的字符,与LIKE关键字一起使用

  • _:表示一个任意字符
  • %:表示任意长度的字符串
SQL
SELECT * FROM student WHERE name LIKE '_三';
SELECT * FROM student WHERE name LIKE '张%';

BETWEEN AND

  • 查询某一列在指定的规范内的记录,包括两个边界
SQL
SELECT * FROM student WHERE age BETWEEN '20' AND '22';

IN

  • 查询某一列中的值在列出的内容列表中
SQL
SELECT * FROM student WHERE province IN ('上海市', '广东省');