您的位置:

SQLite语法详解

一、SQLite语法和SQL一样吗

SQLite是关系型数据库管理系统,其语法和SQL有些相似。SQLite支持SQL92和SQL99的语法。SQLite也支持一些常用的SQL语句,例如CREATE、SELECT、INSERT、UPDATE和DELETE。在SQLite中,可以进行表格的创建、修改、删除、数据的添加、查询、修改、删除等操作,并支持多表联合查询和事务处理。

二、SQLite语法注意事项

在使用SQLite语法时,需要注意以下几点:

1、SQLite中区分大小写。

-- 查询student表
SELECT * FROM student;

-- 错误用法,SQLite中区分大小写
select * from student;

2、SQLite中不支持LIMIT语句的写法为OFFSET m LIMIT n,而是直接使用LIMIT n OFFSET m。

-- 查询从第3行开始的10条数据
SELECT * FROM student LIMIT 10 OFFSET 2;

3、SQLite中不支持FOR UPDATE语法。

三、SQLFORUPDATE语法

在SQLite中,可以使用SQL的SELECT语句进行数据的查询。但是,SQLite中不支持FOR UPDATE语法。这意味着,在SQLite中,如果要对查询结果进行修改,只能使用UPDATE语句。

-- 查询student表中ID为1的学生信息,并将其年龄改为20岁
-- 错误用法
SELECT * FROM student WHERE id = 1 FOR UPDATE;
-- 正确用法
UPDATE student SET age = 20 WHERE id = 1;

四、SQL Server语法错误

在SQLite中,如果使用了SQL Server的语法,会导致语法错误。例如,SQL Server中的TOP语法,在SQLite中是不支持的。

-- 查询student表中年龄最大的前10个学生
-- 错误用法
SELECT TOP 10 * FROM student ORDER BY age DESC;
-- 正确用法
SELECT * FROM student ORDER BY age DESC LIMIT 10;

五、SQLite语法

SQLite语法不仅支持基本的SELECT、INSERT、UPDATE和DELETE语句,还支持其他一些比较便捷的语法和操作。

1、将一个表格的结构完整地复制到另一个表格。

-- 将student表格复制到student_new表格
CREATE TABLE student_new AS SELECT * FROM student;

2、批量插入数据。

-- 向student表格中批量插入数据
INSERT INTO student (name, age, gender) 
VALUES ('张三', 18, 'male'),
       ('李四', 20, 'female'),
       ('王五', 22, 'male');

3、在一条SQL语句中插入多个子查询的结果。

-- 查询student表格中年龄最大的学生的信息和这个学生的所在学院的名称
SELECT s.*, c.name FROM student s, college c 
WHERE s.college_id = c.id AND s.age = (SELECT MAX(age) FROM student);

六、SQL语法rename

在SQLite中,可以使用ALTER TABLE语句来重命名表格。

-- 将student表格重命名为student_new
ALTER TABLE student RENAME TO student_new;

七、SQL Server语法

SQLite语法和SQL Server语法有很多相似之处,但也有一些不同。

1、在修改一个表格的结构时,SQLite中不支持使用ALTER TABLE对多个列进行同时修改。

-- 在student表格中,将name列和age列的数据类型同时修改为TEXT
-- 错误用法
ALTER TABLE student 
ALTER COLUMN name TEXT, 
ALTER COLUMN age TEXT;
-- 正确用法
ALTER TABLE student 
ALTER COLUMN name TEXT;
ALTER TABLE student 
ALTER COLUMN age TEXT;

2、在SQLite中,可以使用DROP TABLE语句删除表格。

-- 删除student表格
DROP TABLE student;

八、SQLite语句大全

SQLite支持的语句不仅包括基本的SELECT、INSERT、UPDATE和DELETE等语句,还包括一些其他的比较便捷的语句。

1、创建表格。

CREATE TABLE student (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER,
    gender TEXT,
    college_id INTEGER
);

2、向表格中插入数据。

INSERT INTO student (name, age, gender) VALUES ('张三', 18, 'male');

3、修改表格中数据。

UPDATE student SET age = 20 WHERE name='张三';

4、删除表格中数据。

DELETE FROM student WHERE name='张三';

5、同时查询多个表格的数据。

SELECT s.*, c.name FROM student s, college c WHERE s.college_id = c.id;

6、根据特定的条件查询数据。

SELECT * FROM student WHERE age > 18 AND gender = 'male';

7、将表格中的数据按照特定的字段进行排序。

SELECT * FROM student ORDER BY age DESC;

8、对表格中所有列进行求和计算。

SELECT SUM(*) FROM student;

九、SQLite数据库查询语句

在SQLite中,可以使用SELECT语句进行数据的查询。SELECT语句的基本语法如下:

SELECT column1, column2, ... FROM table1, table2, ... WHERE condition ORDER BY column1, column2, ...;

其中,SELECT后面的是需要查询的字段名称,可以是多个,用逗号分隔。FROM后面是需要查询的表格名称,可以是多个,用逗号分隔。WHERE后面可以指定查询条件,ORDER BY后面可以指定排序的字段名称。

例如:

-- 查询student表格中名字是张三的学生的信息
SELECT * FROM student WHERE name = '张三';

十、SQL与Oracle语法

SQLite语法和SQL、Oracle语法有很多相同之处,比如SELECT、INSERT、UPDATE和DELETE等基本语法。但也有一些不同之处。

1、在SQLite中,可以使用单引号或双引号来表示字符串类型的值,而在Oracle中只能使用单引号。

-- 在SQLite中可以使用单引号或双引号
SELECT * FROM student WHERE name = '张三' OR name = "李四";
-- 在Oracle中只能使用单引号
SELECT * FROM student WHERE name = '张三' OR name = '李四';

2、Oracle中的SUBSTR函数在SQLite中应该被替换成substr函数。

-- 截取name列中字符串的前三个字符
-- 在SQLite中
SELECT substr(name,1,3) FROM student;
-- 在Oracle中
SELECT SUBSTR(name,1,3) FROM student;

代码示例

-- 创建student表格
CREATE TABLE student (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER,
    gender TEXT,
    college_id INTEGER
);

-- 向student表格插入数据
INSERT INTO student (name, age, gender) VALUES ('张三', 18, 'male');
INSERT INTO student (name, age, gender) VALUES ('李四', 20, 'female');
INSERT INTO student (name, age, gender) VALUES ('王五', 22, 'male');

-- 查询student表格
SELECT * FROM student;

-- 修改student表格中年龄为20岁的学生的年龄
UPDATE student SET age = 20 WHERE age = 18;

-- 查询student表格中年龄最大的前10个学生
SELECT * FROM student ORDER BY age DESC LIMIT 10;

-- 批量插入数据
INSERT INTO student (name, age, gender) 
VALUES ('张三', 18, 'male'),
       ('李四', 20, 'female'),
       ('王五', 22, 'male');

-- 将一个表格的结构完整地复制到另一个表格。
CREATE TABLE student_new AS SELECT * FROM student;

-- 在一条SQL语句中插入多个子查询的结果。
SELECT s.*, c.name FROM student s, college c 
WHERE s.college_id = c.id AND s.age = (SELECT MAX(age) FROM student);

-- 将student表格重命名为student_new
ALTER TABLE student RENAME TO student_new;

-- 删除student表格
DROP TABLE student;