最近碰到了一个项目,需要使用上SQL数据库区存取数据,发现只会用一些基本的指令根本无法在项目中自由操作我想要的结果,然后,重新上网整理了一遍数据库的指令集合语法。
1.最基本的增删改查指令
指令 | 作用 |
---|---|
insert | 插入数据 |
delete | 删除数据 |
select | 查找数据 |
update | 修改/更新数据 |
基本上绝大多数的数据库操作都是按照上述的四条指令构成的。
2.Select 查找指令
select指令我个人认为是最重要的,所以先把这个点先解析一下。
操作动作 | 指令 |
---|---|
遍历出来所有值 | select *(所有列) from tablename(表名称) |
指定遍历某列或多列 | select colunm_name(列名) from tablename |
通过条件(where)去筛选满足条件的数据 | select *(所有列) from tablename where colunm_name = ‘xxxx’(文本)或者select *(所有列) from tablename where colunm_name = xxxx(整数) |
多个条件(and 或者 or)去筛选数据 | select *(所有列) from tablename where (colunm_name = ‘xxx’ or colunm1_name = ’ xxx’)and colunm_name=‘xxxx’ |
通过通配符(Like)去适配(%,_,[]) | select *(所有列) from tablename where colunm_name=’%xx’ |
对数据表进行排列order by(升序)或者order by xxx desc(降序) | select * from tablename order by 列名/ order by 列名 desc |
获取列中的不同选项 | select distinct colunm_name from tablename |
规定某列满足多个值(in) | select *(所有列) from tablename where colunm_name in(value1,value2,value3,…) |
把一个表中的数据插入另一个表中 | select *(所有列) into newtablename from oldtable (where xxx) |
同时检索两个表(通常主键primary key和外键) | select *tableonename.xxx(列名),tabletwoname.xxx from tableonename(表名),tabletwoname where tableoneonename.number = tabletwoname.number |
上面的表格只是指令的模板,但是很多时候需要通过一些实例才能使一些范例吃透,才能举一反三,所以接下来我通过一些简单的实例去演示上述模板。
首先创建一个表
create table if not exists studenttable( ID integer primary key,Name vchar(20) not null,Class vchar(10) not null,Score int)"
//primary key 主键
//autoincrement 自动递增
//not null 不能为空
1.打印出表中的所有内容
select * from studenttable
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164001 | 小明 | 3班 | 80 |
164002 | 小山 | 2班 | 60 |
164003 | 小妮 | 2班 | 73 |
164004 | 小赟 | 4班 | 40 |
2.只把学号和姓名打印出来
select ID,Name from studenttable
学号 | 姓名 |
---|---|
164001 | 小明 |
164002 | 小山 |
164003 | 小妮 |
164004 | 小赟 |
3.满足班级是2班的
select * from studenttable where Class = '2班'
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164002 | 小山 | 2班 | 60 |
164003 | 小妮 | 2班 | 73 |
4.满足班级是2班的同时成绩大于60
select * from studenttable where Class = '2班' and Score > 60
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164003 | 小妮 | 2班 | 73 |
5.筛选姓名中带‘妮’字的学生
select * from studenttable where Name=’%妮’
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164003 | 小妮 | 2班 | 73 |
6.满足班级是3班或者4班的同学
select * from studenttable where Class in('3班','4班')
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164003 | 小妮 | 2班 | 73 |
164004 | 小赟 | 4班 | 40 |
7.通过在一个表中指定学号去检索另外一个表中(重要)
先创建另一个表
create table if not exists awardstable( ID integer,Awards vchar(10) not null)"
学号 | 奖项 |
---|---|
164003 | 一等奖 |
164006 | 二等奖 |
164008 | 三等奖 |
164002 | 三等奖 |
select studenttable.Name,awardstable.Awards from studenttable,awardstable where studenttable.ID = awardstable.ID
学号 | 奖项 |
---|---|
小妮 | 一等奖 |
小山 | 三等奖 |
8、通过班级获取有多少个班级
select distinct Class from studenttable
班级 |
---|
2班 |
3班 |
4班 |
delete 删除指令
操作动作 | 指令 |
---|---|
删除所有数据 | delete from tablename(表名) /delete * from tablename |
删除表中某列的等于特定的值 | delete from tablename(表名) where colunms_name = ‘xxxx’ |
接上述的学生表的例子
1.清空学生表(只是清空数据,数据和结构依然存在)
delete from studenttable
2.删除表中2班的同学
delete from studenttable where Class = '2班'
学号 | 姓名 | 班级 | 成绩 |
---|---|---|---|
164003 | 小妮 | 2班 | 73 |
164004 | 小赟 | 4班 | 40 |
未完待续。。。。。。