名称的由来
SQL:结构化查询语言Structured Query Language
Lite:简化的
–>SQLite:自包含(只有一个文件),无服务器,零配置,事务性SQL引擎。
安装使用步骤
1.下载sqlite3.exe
2.将sqlit3.exe拷贝到windows/system32目录下
3.启动命令行窗口
4.输入命令sqlite3
使用SQLite
以 . 开头的是sqlite3软件特有的指令。
SQL语句不用.开头,但以;结束。
打开/创建 数据库的2种方式:
1.dos下运行命令:sqlite3 mytest.db 启动sqlite3 并且设定开发的数据库文件,如果不存在则会创建.
2.先运行sqlite3,进入后输入 .open mytest.db 该文件会放在命令行所在目录下, 没有该文件时会自动创建, 即使未创建任何表.
Sqlite3常用命令
在sqlit>提示符下输入:
.open mytest.db 打开数据库 mytest.db数据库名,一次只能打开一个库文件
.tables 显示所有表
.schema 表名 显示创建表的建表语句。与mysql有区别,并不是显示表结构。
.databases 列出连接的数据库(一个)
.echo ON|OFF 设置命令回显(ON表示回显输入的语句指令等)
.exit 退出本程序
.quit 退出本程序
.help 显示帮助
.read 文件名 执行文件中的全部sql语句,例如 .read abc.sql
.show 显示环境变量信息
SQLite常用的数据类型
INTEGER:32 位元带符号的整型,具体取决有存入数字的范围大小。
REAL:浮点数字,存储为8-byte IEEE浮点数。
TEXT:字符串文本。
BLOB:二进制对象。
smallint 16 位元的整数。
interger decimal(p,s) p是一共有几个数,s是小数的个数。如果没有特别指定,则系统会设为 p=5; s=0 。
float 32位元的实数。
double 64位元的实数。
char(n) n 长度的字串,n不能超过 254。
varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
date 包含了 年份、月份、日期。
time 包含了 小时、分钟、秒。
timestamp 包含了 年、月、日、时、分、秒、千分之一秒(毫秒)。
实际上:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有自动递增Integer Primary Key才有用). 对于SQLite来说对字段不指定类型是完全有效的. 如:
Create Table ex3(a, b, c);
即使SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎是非常有用的.
主键 Primary Key:通过它能唯一确定一条记录的字段(或字段组合)
SQL语句初步
注释:
单行:–
多行:/…../
创建表users:create table [if not exists] users(_id integer primary key, name varchar(30));
primary key:主键.非空的,并且可以唯一标识一条记录的这个字段(或字段组合)
删除表:drop table [if exists] users;
ALTER更改修改 TABLE 语句:
追加新的列
语法格式:
ALTER TABLE <表名>
ADD [COLUMN] <字段名> datatype [DEFAULT expr];
ALTER TABLE employees ADD job_id INTEGER;
Sqlite3不支持现有列的重命名,删除和修改。
例子:ALTER TABLE user ADD height varchar(20);
插入数据:
INSERT INTO users(name) VALUES(‘ruby’);
_id作为自增主键,会从当前表中记录的最大下标开始增加;
也可以自己指定_id,但不能与现有记录的主键值冲突.
INSERT INTO users(_id,name) VALUES(4,’lisi’);
INSERT INTO users VALUES(8,’zhangsan’);
–向users表中的所有字段(按照顺序)插入values后面的值.
–INSERT INTO user(name) VALUES(‘zhagnsan’);
–INSERT INTO user(name,age) VALUES(‘lisi’,5);
–INSERT INTO user VALUES(6,’wangwu’,8,2);
查询数据:
SELECT * FROM users;//查询users表中所有记录的所有字段
查询数据 所有
–SELECT * FROM user;
– 单独查询某一列
–SELECT name,age FROM user;
–查数据的条数
–SELECT count(*) FROM user;
–查询某一列数据的条数
–SELECT count(age) FROM user;
–指定条件查询
–SELECT * from user WHERE _id=6;
–更新数据
–UPDATE user SET name =’tianqi’ ,age = 8 ;
– 指定条件更新数据
–UPDATE user SET name = ‘zhangsan’ ,age = 56 WHERE height = 2;
– 删除数据
–DELETE FROM user WHERE name=’zhangsan’;
创建表employees
CREATE TABLE [if not exists] employees (last_name VARCHAR, salary INTEGER, department_id INTEGER);
插入记录
INSERT INTO employees VALUES(“lisi”,2000,1);
修改(更新)数据
语法格式:
UPDATE <表名>
SET <字段名> = value [, <字段名> = value, …]
[WHERE condition];
举例:
–UPDATE user SET name =’tianqi’ ,age = 8 ;
– 指定条件更新数据
–UPDATE user SET name = ‘zhangsan’ ,age = 56 WHERE height = 2;
– 删除数据
–DELETE FROM user WHERE name=’zhangsan’;
删除记录
语法格式:
DELETE FROM <表名>
[WHERE condition];
DELETE FROM employees WHERE salary=1000;
基本查询
SELECT * FROM employees WHERE salary>=2000;
使用DISTINCT关键字可从查询结果中清除重复行(只保留一行)
select DISTINCT department_id FROM employees;//在employees表中查询,有哪些不重复的department_id
DISTINCT的作用范围是后面所有字段的组合:
SELECT DISTINCT department_id ,last_name
FROM employees;
带有限制条件的查询
语法格式
SELECT [DISTINCT] {*, 列名[别名], …}
FROM <表名>
[WHERE condition(s)];
使用比较运算符
不等于: != <>
获取部门10的所有雇员的信息
SELECT *
FROM employees
WHERE department_id= 10;
使用BETWEEN AND运算符显示某一 值域范围的记录
select * from employees where department_id between 1 and 3;
使用IN运算符获得匹配列表(中任何一个)值的记录
select * from employees where department_id in(1,3,5);
使用LIKE运算符执行通配(模糊匹配)查询
查询条件可包含文字字符或数字
(%) 可表示零或多个字符
( _ ) 可表示一个字符
select * from employees where last_name like ‘%zhang_an’;
使用IS NULL运算符
查询department_id包含空值的记录
select * from employees where department_id IS NULL
IS NOT NULL
逻辑运算符
AND 如果组合的条件都是TRUE,返回TRUE
OR 如果组合的条件 之一是TRUE,返回TRUE
NOT 如果下面的条件是FALSE,返回TRUE
JAVA: AND: & &&
OR: | ||
NOT: !
优先级规则
次序 运算符
1 所有的比较运算
2 NOT
3 AND
4 OR
对查询数据的排序
使用ORDER BY 子句将记录排序 ol:ordered list有序列表
ASC: 升序,(缺省的排序方式)
DESC: 降序
ORDER BY 子句出现在SELECT语句的最后
select * from employees order by department_id ;
select * from employees order by department_id desc;
按多字段排序
select * from employees order by department_id desc,salary asc;
举个例子:
– 给where添加各种条件
– > < >= <= !=
–SELECT * from user WHERE age!=34;
– 添加多个条件
–AND OR
–SELECT * from user WHERE age!=34 AND name != ‘lisi’ AND height!=8;
–SELECT * FROM user WHERE age=90 OR name=’zhangsan’ ;
– BETWEEN AND IN
– 查询一个范围
–SELECT * FROM user WHERE age BETWEEN 1 AND 90;
– IN 指定条件 等于
SELECT * FROM user WHERE age IN(2,5,78);