sql数据库的一写创建语句,SQLiteDatabase类的常用语句

来源:互联网 发布:红包破解软件 编辑:程序博客网 时间:2024/06/07 23:28

如果不懂sql的基本使用的话,先看一下本人的这篇文章,再看本文,或许会好一些。链接地址:http://blog.csdn.net/qq_35681180/article/details/53612764数据库的增删查改有两种方式,一种是直接通过db对象调用相应的增删查改方法,另一种就是使用语句进行增删查改,下边我简单的将一些常用的语句核心发给大家:其中查询语句是最多的,也是最重要的:在写之前先补充一下一些语句中基本类型的使用:在IOS应用客户端程序中存储数据一般用的SQLite来实现,下面简单介绍SQLite支持的数类型。内容1、  SQLite具有的数据类型:一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型:1.NULL:空值。2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。3.REAL:浮点数字,存储为8-byte IEEE浮点数。4.TEXT:字符串文本。5.BLOB:二进制对象。  2、  SQLite实际上也支持的数据类型:smallint 16 位元的整数。 interger 32 位元的整数。 decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。 float  32位元的实数。 double  64位元的实数。 char(n)  n 长度的字串,n不能超过 254。 varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。 graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。 vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000 date  包含了 年份、月份、日期。 time  包含了 小时、分钟、秒。 timestamp 包含了 年、月、日、时、分、秒、千分之一秒。 datetime 包含日期时间格式,必须写成'2010-08-05'不能写为'2010-8-5',否则在读取时会产生错误! 3、  Sqlite常用数据类型:这句话本身就有问题,因为:SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有自动递增Integer Primary Key才有用). 对于SQLite来说对字段不指定类型是完全有效的. 如: CREATE TABLE ex3(a, b, c); 即使SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎是非常有用的. SQLite支持常见的数据类型, 如: SQL代码CREATE TABLE ex2(    a VARCHAR(10),    b NVARCHAR(15),   c TEXT,    d INTEGER,   e FLOAT,   f BOOLEAN,    g CLOB,    h BLOB,    i TIMESTAMP,   j NUMERIC(10,5),    k VARYING CHARACTER (24),    l NATIONAL VARYING CHARACTER(16)    ); 4、  char、varchar、text和nchar、nvarchar、ntext的区别1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。 2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。 3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。   所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。开始一些重要的语句:;;;;;;;;;;;;;;;;;;;;;;;创建一张表格,表格名为stu,内部id是自增长的,有一个姓名字段--create table stu (id integer primary key autoincrement, name varchar(20))向stu表中插入数据,name为张三,id自增,空着即可--insert into stu values(null,'张三')向stu中插入数据的第二种写法,这种方法将id省略掉了,只添加你写的列名--insert into stu (name,age ,class, address)values('猪头',17,'1221','回龙观')将id为1的数据name值改为王宝强--update stu set name='王宝强'   where id=1修改stu表,添加班级字段--alter table stu add class varchar(20)修改stu表,将表明改为stu1--alter table stu rename to stu1删除表stu--drop table stu向stu表插入数据,id,自增null即可,姓名,班级--insert into stu values(null,'马蓉',1609);--insert into stu values(null,'宋哲',1609);--insert into stu values(null,'文章',1609);删除stu表中id为3的数据--delete  from stu where id=3修改表,添加成绩字段--alter table stu add score integer查找stu表中的所有数据--select * from stu查询stu表中成绩大于60的数据--select * from stu where score>60查新stu中成绩在34--65之间的数据--select * from stu where score between 34 and 65查询stu表中,成绩是34或者65或者78有任意一个成绩的数据--select * from stu where score in (34,65,78)查询stu中名字中后边带牛的名字(尽量是牛前边有一个字)--select * from stu where name like '_牛'查询stu中姓名叫牛***的,后边数字个数不确定--select * from stu where name like '牛%'查询名字中间有牛的姓名,前后字数不确定--select * from stu where name like '%牛%'同理--select *from stu where name like '%牛%'--select *from stu where name like '牛%'--select *from stu where name like '%牛'--select *from stu where name like '牛_'--select *from stu where name like '__牛'用 DESC 表示按倒序排序(即:从大到小排序)用 ACS   表示按正序排序(即:从小到大排序)查询学生列表中的全部数据,通过成绩排序,此处默认是acs,如需更改需在后边写上--select * from stu order by score--select * from stu order by score desc查询stu表中的条目数目--select count(*) from stu查询表中的所有成绩的和--select sum(score) from stu查询表中所有的成绩的平均数--select avg(score) from stu查询stu中成绩的最小值--select  min(score) from stu符合使用:查询stu中成绩最小的成绩。(按语法顺序这么翻译,其实就是查最小值)--select  * from stu where score=(select  min(score) from stu) 查询1608班的姓名,年龄,地址--select name,age,address from stu where class ='1608'查询表中年龄大于17班级是1608的数据--select *from stu where age>17 and class='1608'查询成绩大于66或者班级是1609的--select *from stu where age>66 or class='1609'  大小数目总和的查询--select count(*) from stu--select max(age) from stu--select min(age) from stu--select max(age),min(age)from stu--select sum(age),avg(age)from stu符合使用--select *from stu where age =(select min(age)from stu)查询stu表的数据,按照班级分组--select class,count(*)from stu group by classlimit是mysql的语法select * from table limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。select * from tablename limit 2,4即取出第3条至第6条,4条记录--select * from stu limit 3,6从stu中查询班级--select *from stu where name like '%牛%'--select *from stu where name like '牛%'--select *from stu where name like '%牛'--select *from stu where name like '牛_'--select *from stu where name like '__牛'从stu中一班级分组查询姓名,数量,最小成绩--select name,class,count(*),min(score) from stu group by class --select * from stu where score >60 or class='1608' --select *from stu where name like '%牛%'--select *from stu where name like '牛%'--select *from stu where name like '%牛'--select *from stu where name like '牛_'--select *from stu where name like '__牛'


2 0
原创粉丝点击