使用SQLiteSpy用sql語句操作數據庫

申明:

1.創建一個數據庫文件,File->New DataBase -> test.db

2.在數據庫文件中創建一張數據表(一個數據庫文件可以創建多張表),參考

在輸入框中輸入:CREATE TABLE test (Name varchar(128),Value int(10), age int(10));然後按下F9(執行)

注意:

http://www.w3school.com.cn/sql/sql_create_table.asp

2.1sql語句不區分大小寫,也可以寫成:create table test (Name varchar(128),Value int(10), age int(10));

2.2最後的分號可以不需要,但是最好加上。如果用sqlite3中的exec函數操作的話沒有分號會報錯。

2.3其中的Name爲第一列的列名,後面的varchar爲數據類型,表示邊長的字符串,128表示長度

2.4Value爲第二列的列名,int表示整數,10表示長度。age同理

3.插入數據 insert

INSERT INTO test VALUES (“測試”,2,3);        //()中的個數必須和表的列數相同,“”也可以是單引號(不對就自己試)

INSERT INTO test (Name,Value,age) VALUES (“測試”, 5,3);    //前面的()表示列名,後面的()表示值,兩者也必須相同。同時列名也必須是存在的

4.查找數據 select

select * from test      //*代表所有數據,test是表名。這句話相當於查找test中的所有數據

select * from test where value = '2';     //查找value=2的所有內容,' '可以省略

select name from test where value = '2';    //查找value=2的所有name值

5.刪除數據delete

delete from test where value = 4;       //將value值爲4的記錄刪除

delete from table_name;            //刪除所有記錄

delete * from table_name;            //刪除所有記錄

6.修改數據 update

update test set name = "測試" where value = 4;          //將value = 4的記錄中的name修改爲“測試”

update test set name = "賬單",age = 100 where value = 4;    //可以同時修改多個記錄

7.對搜索結果進行排序 order by

select lastname,firstname from persons order by firstname   //根據firstname進行排序
select lastname,firstname from persons order by firstname,lastname   //先根據firstname進行排序,再根據lastname進行排序
select lastname,firstname from persons order by firstname desc  //根據firstname進行倒序排序
select lastname,firstname from persons order by firstname desc,lastname asc  //根據firstname進行倒序排序,再根據lastname進行順序排序

8.規定要返回記錄的數目,並非所有的數據庫都支持TOP limit

//注意,sqliteSPY不支持top,可以使用limit
select * from persons limit 3  //查找persons中的前三條記錄

9.搜索列中的指定模式 like

select * from persons  where city like '%o%'   //搜索city中帶有'o'字母的記錄,%爲通配符
select * from persons  where city not like '%o%'   //not用於反向選取(不包含)

10.通配符

%:代替一個或多個字符
_:代替一個字符
[charlist]:字符列表中任何一個字符
[^charlist]:不在字符列表中的任何一個字符,或者[!charlist]

select * from persons  where city not like 'o%' //搜索以city爲o開頭的記錄
select * from persons  where city not like '[ojbk]%'    搜索city以'ojbk'開頭的記錄

11.in 允許我們在where中規定多個值

select * from persons  where city in ('0','saffw') //選擇city爲0和saffw的記錄
//和and和or差不多

12.between 選取介於兩個值之間的數據範圍

select * from persons  where city between 'new york' and 'saffw' //返回new york和saffw之間的數據,包含new york,不包含saffw
select * from persons not where city between 'new york' and 'saffw'    //不包含這個範圍
//注意,不同的數據庫的between有不同的作用,有的包含包含後面的搜索項,有的不包含後面的搜索項

13.爲列名稱指定別名 as

//不使用表別名稱
select persons.city,persons.firstname,table_1.id from persons,table_1 where persons.lastname = 'laji' and table_1.name = '999'
//使用表別名
select t1.city,t1.firstname,t2.id from persons as t1,table_1 as t2 where t1.lastname = 'laji' and t2.name = '999'

14.根據兩個或多個表中列之間的關係,從這些表中查詢數據  inner join,left join, right join,full join

//sqliteSPY不支持right join和full join
//兩個表中都含有link字段
//不使用join
select table_1.id,persons.firstname,persons.lastname from table_1,persons where table_1.link = persons.link
//使用inner join 會列出兩個表中都存在的
select table_1.id,persons.firstname,persons.lastname from table_1 inner join persons on table_1.link = persons.link order by id 
//使用left join 不僅會列出兩個表中都存在的,還會列出左邊的所有值
select table_1.id,persons.firstname,persons.lastname from table_1 left join persons on table_1.link = persons.link order by id 
//使用right join 不僅會列出兩個表中都存在的,還會列出右邊的所有值
//使用full join會列出右邊的所有值

15.合併過個select語句的結果集 union

select firstname from persons union select firstname from table_1; //會忽略重複值
select firstname from persons union all select firstname from table_1; //不會忽略重複值

16.拷貝結果集到另一張數據表 select into

//sqlitespy不支持select into 語句
create table table_3 as select * from table_1

17.創建表時加入約束

//約束
//not null 強制不接受null值
//unique 約束唯一標識數據庫的每條記錄 每個表可以有多個unique約束,但是每個表只能有一個primary key約束
//primary key 主鍵必須包含唯一的值,主鍵不能包含NULL值,每個表都應該有一個主鍵,並且只能有一個主鍵
//forgien key 一個表中的forgien key指向另一個表中的primary key
//check 用於限制列中的值的範圍
//default 用於向列中插入默認值

18.not null 約束

//如果不向字段添加值,就無法插入新記錄或者更新記錄
create table table_4(
id int not null, 
name varchar(255) not null, 
value varchar(255)
);

19.unique約束

//mysql 一個unique約束
create table table_4(
id int not null , 
name varchar(255) not null, 
value varchar(255),
unique(id)
);

//sql server/oracle/ms access 一個約束
create table table_4(
id int not null unique, 
name varchar(255) not null, 
value varchar(255)
);

//多個約束 相當於unique中的兩個值合起來在表中只能出現一次
create table table_4(
id int not null, 
name varchar(255) not null, 
value varchar(255),
constraint lll unique (id,name)
);

//SQLite支持ALTER TABLE的有限子集。在SQLite中,ALTER TABLE命令允許用戶重命名錶,
或向現有表添加一個新的列。重命名列,刪除一列,或從一個表中添加或刪除約束都是不可能的

20.primary key

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)

21.foreign key

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

22.check 約束

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)

23.default

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)

24.創建索引 create index

create index search on persons (link)
// search 爲索引名字
// persons 爲表名
// link 爲列名

25.刪除索引,表,數據庫

//刪除索引sqlite的做法,不同的數據庫有不同的方法
drop index search

//刪除表
drop table persons

//刪除數據庫
drop table my.db

26.添加,修改,刪除列 alter table

//添加一個列
alter table table_5 add laji1 int default 0
//sqlite無法刪除列
//sqlite無法修改列

27.INCREMENT 自動加1

//主鍵自動加1
create table table_6 (id integer primary key AUTOINCREMENT,name varchar(128));

28.視圖 view

29.日期

30.NULL

//無法比較NULL,可以用is null
select * from table_6 where value is null

31.平均值函數 avg()

select avg(value) from as averagevalue table_4    //求平均值,將結果顯示爲averagevalue
select value as objk from table_4 where value >(select avg(value) from table_4)    
//選取大於平均值的數據

32.匹配的行數 count()

select count(*) as jishu from table_4    //統計總共的行數
select count(distinct value) as jishu from table_4    //統計列中不同數的個數

33.返回第一個記錄的值 first()

//無此函數

34.返回最後一個記錄的值 last()

//無此函數

35.返回最大值 max

select max(value) from table_4

35.返回最小值 min

select min(value) from table_4

36.計算總和 sum

select sum(value) from table_4

37.對結果集進行分組 group by

SELECT name,sum(value) from table_5 group by name    //根據name對sum之後的值進行分組

38.增加條件 having

select name,sum(value) from table_3 where name = 'zhang' or name = 'wang' group by name
having sum(value) > 150 //選取結果集中大於150的數據

39.將數值字段舍入爲指定的小數

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

 

如需瞭解更多更細節的方面,可以參考網址

http://www.w3school.com.cn/sql/sql_create_table.asp

sqlitespy有好多語法、函數和sql server不一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章