(完整)SQLite数据库基本语法介绍(SQL语言)

闲来无聊,写点东西。
SQL语言
一种关系型数据语言,介于关系代数与关系演算之间的结构化查询语言,也是一个通用的,功能及强的关系型数据库语言。接下来介绍其基本用法:

(1) CREATE TABLE : 用来创建一个关系表

语法:
		CREATE TABLE 表名
		(
				列名1	数据类型	“约束”(有可无)
				列名2	数据类型	“约束”(有可无)
				列名3	数据类型	“约束”(有可无)
				...
		);//注意,SQL语句要以分号结尾
数据类型:
	integer(size)	仅容纳整数,size规定数字的最大位数
	int(size)
	int 
	decimal(size,d);容纳带小数的数字size 规定带数字的最大位数,d规定小数点右侧的最大位数
	real 实型
	char(size) 固定长度的字符串,size规定字符串的长度
	varchar(size) 可变长度的字符串,size规定字符串的最大字符数
	text	文本
	null 空
	date	日期
		2020/09/02
		2020-09-02
	blob:二进制
	...
	约束:
		not null 不为空
		unique 唯一
		primary  key	主键		(主键渐必须是唯一且不为空)
		default 	默认
			eg: default "China"
		check	用于限制列中值的范围
			eg: check score >= 0 and score <= 100

(2)DROP TABLE: 删除一个表

语法:
		DROP TABLE 表名;

(3)ALTER TABLE : 修改表结构

重命名:
	ALTER TABLE 旧表名 rename to 新表名;
增加一列:
	ALTER TABLE 表名 add column 列名 数据类型

(4)INSERT INTO : 往表中插入数据

语法:
	INSERT INTO 表名 VALUES(值1,值2,值3...);//给所有的列插入数据,有多少列就要填多少值。
	INSERT INTO 表名 VALUE(列名1,列名2,....) VALUE (值1,值2,... );//给指定列插入数据

(5) 修改表内的数据

UPDATE 表名 set 列名 = 新值,...;
UPDATE 表名 set 列名 = 新值,...WHERE 条件;//条件用来定位要修改的某些行
条件:
	列名 运算符 值
	运算符: = 	!= 	>	 >=	 <=
	如果有多个条件,可以用and和or连接
eg:
	update stu set age = 21;
	update stu set age = 30 where num = 1001;
	update stu set age = 30 where num > 60 and num < 999;

(6)DELETE FROM 删除表中所有的数据

DELETE FROM  表名;//删除表中所有的数据
DELETE FROM 表名 WHERE 条件;//删除满足条件数据
	eg:
		delete from stu;
		delete from stu where num = 1003;

(7)SELECT 数据查询

语法:
	SELECT	列名1,...FROM 表名;
	SELECT *FROM 表名;//查询整个表的数据
	SELECT *FROM 表名 where 条件;//查询整个表的数据
	eg:
		insert into stu1(stu_num,stu_name,age,,addr) select stu_num,stu_name,age,addr from stu;//从stu表中插入数据,然后插入到stu1表中

(8)高级查询

模糊查询
	列名	like	通配符	(_%)
	_:	匹配单个字符
	&:匹配任意单个字符
	eg:
		select *from stu where name like 'wang_';
		select	*from stu where name like	'%wang%'
排序:
	按指定的列名进行排序
	order by 列名 asc/desc;//asc:升序	desc:降序
		eg:
			select *from stu order by age desc;//根据年龄降序排序
	限制记录条数
		limit 数字
				eg:
					select *from stu limit 2;//查看表中的前两条记录
	排序+限制
		eg:
			select *from stu order by age desc limit 1;//查看年龄最大的记录
	聚合函数
		cout(列*名)	//统计记录数量
		sum(列名)	//计算给定列的总和
		avg(列名)		//计算给定列的平均值
		min(列名)		//计算给定列的最小值
		max(列名)	//计算给定列*的最大值
	eg:
		select	cout(*)  from stu;
		select max(age)-min(age) from stu;
	别名
		eg:
			select num AS 学号,name AS	姓名 from stu;
	分组:
		group by
			eg:
				select age,cout(*) from stu group by age;//查询每个年龄的人数
	范围查询:
		between ... and ...
			eg:	
				select *from stu where age between 10 and 20;
	去重:
		distinct
			eg:
				select distinct age from stu;
	子查询:
		in(值,...)
		in(select ...)
			eg:
				select *from stu where age in (18,20,25);
				select *from stu where age in (select age from stu where age < 30);		
		★★★★★★多表联接
			select	列名,... 表1,表2,...where 条件
			select 列名,... form 表1	join	表2 on	联接条件  ... where	过滤条件;
					eg:
						学生表:	
						学号 	姓名 	年龄		班级		学校	
						...
						create table t_stu(num int primary key, name text,age int,class int school int);
						intsrt into t_stu values(1001,'wb1',18,100101,2001);
						insert into t_stu values(1002,'wb2',19,100101,2001);
						insert into t_stu values(1003.'wb3',20,100101,2002);
						学校表:
						编号		校名		电话		地址
						...
						create table t_school(num int primary key,name text, tel text,addr text);
						insert into t_school values(2001,'first',010-123456,'changsha');
						insert into t_school values(2002,'second',010-0101011,'shanghai');
				需求:
					查询学生的学号,姓名,学校名
						select  t_stu.num,t_stu.name,t_school,name from t_stu,t_school);
				===》学生表中的每一行都与学校表中的每一行进行联结,结果称之为 笛卡尔积
				此时,需要指明两个表联结条件,在上述表中,联结条件是 学校的编号相同
	两种联结写法:
		第一种: select t_stu,num, t_stu.name,t_school.name from t_stu,t_school where	t_stu.school = t_school.num;
		第二种:select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num;
		select t_stu.num,t_stu.name,t_school.name from t_stu join t_school on t_stu.school = t_school.num where t_stu.num = 1002;

好了,今天可以愉快的开黑了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奇晓迹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值