SQL语句

选择表A中id等于B表中列名为 bid,并且满足bbid等于127306,127309和typeid等于1,和categoryid等于6

SELECT * FROM  A (Id IN  (SELECT bid 
FROM B  WHERE bbid in('127306','127309') 
AND TypeId = '1')) AND (CategoryId = '6')

删除(两种方法)

for (int i = 0; i < count; i++) {
                            /*int id = ListToDel.get(i).getID();
                            mDatabase.delete("MyFavorites", "ContentID=? and theme=?",
                                    new String[] { ListToDel.get(i).getID() + "" , String.valueOf(ThemeId)});*/
                            sb=new StringBuilder();
                            int id = ListToDel.get(i).getID();
                            sb.append("DELETE  FROM MyFavorites WHERE ContentID=");
                            sb.append("'").append(id).append("'").append("and theme=")
                            .append("'").append(ThemeId).append("'");
                            String string = sb.toString();
                            Log.i("TAG", "sb="+sb);
                            mDatabase.execSQL(string);

在已有的表中插入一列

mDatabase.execSQL("ALTER TABLE MyFavorites ADD COLUMN theme text");

查看某个表是否存在

String isTableExist = "SELECT COUNT(*) FROM sqlite_master where type='table' and name='MyFavoritesTheme'";
        Cursor cursor = mDatabase.rawQuery(isTableExist, null);
        cursor.moveToFirst();
        if (cursor.getString(0).equals("0")) {}

SQL全称是:结构化查询语句 (StructuredQuery)

   一:数据定义语言(DDL)   对表本身  

primary key 主键 auto_increment 自动增加
varchar 可变的字符 float(10,2) 总共10位,小数点后是两位
not null 是不能为空
Create table name(id int(11) primary key auto_increment,
name varchar(100) not null,gender char(1),hiredate date,salary float(10,2),
job varchar,comm float(7,2));
删除表: drop table name;

二:数据操作语言(DML) 是针对表内的数据

//插入数据 前面是列名,value后面对应相应的值,逗号与引号必须是英文状态下的,列的属性为text时需要加单引号,如果为integer时不需要加引号
intsert into name(name,gender,hiredate) value(‘小郭’,‘男’,‘2015-01-02’)

//在已有的表中插入一列
在name表中插入tel列 列最多是11个是数字
alter table name add column tel int(11)

//查询 (从name表中查询所有的值)
select * from name

//更改 update 表名 set 列值=’值’ where 条件
update name set gender=‘nv’ where id=1;

//删除 delect from 表名 条件
delect from name where id=1

三:数据库查询语句(DRL)



查询tel列为空的
select tel from Guo WHERE tel is NULL

取别名  as可以不写
SELECT name as 姓名, age as 年龄 FROM Guo
select g.name as 姓名, g.age as 年龄 FROM Guo g;

select age=40 FROM Guo WHERE tel=16 and name='小郭'

//age列大于30SELECT age>30 from  Guo 
select * from Guo where age > 10

已郭结尾,开头的  用like 和 %
SELECT * from Guo where name LIKE '%郭'
SELECT * from Guo where name LIKE '%郭%'
SELECT * from Guo where name LIKE '郭%'

排序
按tel降序
select * from Guo ORDER BY tel DESC
升序
select *from  Guo ORDER BY age ASC

多排序查询  当第一个相同时 按照第二个排
SELECT * FROM Guo ORDER BY tel DESC, age ASC 

//按列分组
SELECT * FROM Guo GROUP BY age

分组完查总和
SELECT count(age),  age FROM Guo GROUP BY age

SELECT count(age)  个数,  age FROM Guo GROUP BY age HAVING age=23

//查总数  
SELECT count(*) from Guo

//查指定的第几条
SELECT * from Guo LIMIT 3,4

//去除id列重复的值(重复的值只会得到一个)
SELECT DISTINCT id FROM Guo

数据库中的一些关键词用法(IN / ON / INNER JOIN / LEFT JOIN / RIGHT JOIN / DISTINCT)

IN常用在同一个表中的同一列 (filed是a,b,c的)
select * from tab where field in ('A', 'B', 'C')
等价于select * from tab where field = 'A' or field = 'B' or field = 'C'

ON常用在表连接
select * from  jun  LEFT JOIN ju ON jun.name =ju.name

INNER JOIN 是取出相同的字段(会以字段多的表为准,如ju表中出现name为张三的有2次,jun表中只有1次,查询出的结果jun表中会出现两次张三(虽然它只有一个,但是ju表中有两个))
select * from  jun INNER JOIN ju ON jun.name =ju.name

LEFT  JOIN 是左连接(已jun表为基准,显示出所有jun表中的数据,ju表中只会显示name列与jun表中相同的值,其余不显示)
select * from  jun  LEFT JOIN ju ON jun.name =ju.name

LEFT  JOIN 是右连接

DISTINCT 去除想、列里面相同的值(取出ju表中name相同的列值)
SELECT DISTINCT name from ju
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助开发者简化数据库操作的代码。MyBatis动态SQL语句是指在编写SQL语句时可以根据不同的条件动态生成不同的SQL语句。 MyBatis提供了以下几种方式来实现动态SQL语句: 1. if元素:通过if元素可以根据条件判断来生成不同的SQL语句片段。例如: ``` <select id="getUserList" parameterType="User" resultType="User"> SELECT * FROM user WHERE 1=1 <if test="name != null"> AND name = #{name} </if> <if test="age != null"> AND age = #{age} </if> </select> ``` 上述示例中,如果传入的User对象中name属性不为空,则会生成AND name = #{name}这段SQL语句。 2. choose、when、otherwise元素:通过choose、when、otherwise元素可以实现类似于switch语句的功能,根据不同的条件选择不同的SQL语句片段。例如: ``` <select id="getUserList" parameterType="User" resultType="User"> SELECT * FROM user WHERE 1=1 <choose> <when test="name != null"> AND name = #{name} </when> <when test="age != null"> AND age = #{age} </when> <otherwise> AND status = 'ACTIVE' </otherwise> </choose> </select> ``` 上述示例中,如果传入的User对象中name属性不为空,则会生成AND name = #{name}这段SQL语句;如果name为空而age不为空,则会生成AND age = #{age}这段SQL语句;如果name和age都为空,则会生成AND status = 'ACTIVE'这段SQL语句。 3. foreach元素:通过foreach元素可以实现对集合类型的参数进行遍历,并生成相应的SQL语句片段。例如: ``` <select id="getUserList" parameterType="List" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 上述示例中,如果传入的List参数中包含[1, 2, 3]三个元素,则会生成SELECT * FROM user WHERE id IN (1, 2, 3)这段SQL语句。 这些是MyBatis动态SQL语句的几种常用方式,通过它们可以根据不同的条件生成不同的SQL语句,提高了SQL语句的灵活性和可复用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值