1.distinct 用來查詢不重復記錄的條數,可以是單個字段去重、也可以是多個字段去重,但是不能與all同時使用並且不能在insert、delete、update中使用
select distinct column1 from table_name;
2.where 子句用於提取那些滿足指定條件的記錄
select column1,column2,... from table_name where column_name .....
有一些常用運算符
=等於、<>不等於、>大於、 <小於、 >=大於等於、 <=小於等於、 between在某個范圍內、 like搜索某種模式、 in指定針對某個列的多個可能值
3.and & or
select * from table_name where column1=value1 and column2=value2;
select * from table_name where column1=value1 or column2=value2;
4.order by 用於對結果集進行排序,默認為ASC升序,DESC降序
5.insert into語句用於向表中插入新紀錄
insert into table_name(column1,column2,...) values(value1,value2,...);
6.update語句用於更新表中的記錄
update table_name set column1=value1,... where some_column=some_value;
7.delete語句用於刪除表中的記錄
delete from table_name where some_column=some_value;
8.top、limit、rownum
select top number|percent column_name from table_name where [condition];
例如:==SQL server/Acess中== select top 2 * from student; ==等價於mysql中== select * from student limit 2; ==等價於oracle中== select * from student where rownum<=2;
9.like操作符用於在where子句中搜索列中的指定模式
select column_name(s) from table_name where column_name like pattern; 注意需要用到%
10.in操作符用於在where子句中規定多個值
select column_name(s) from table_name where column_name in (value1,value2,...);
11.between用於選取介於兩個值之間的數據范圍內的值
select column_name(s) from table_name where column_name between value1 and value2;
12.inner join在表中存在至少一個匹配時返回行=========等同於join
select column_name(s) from table1 inner join table2 on table1.column_name=table2.column_name;
13.left join關鍵字從左表返回所有的行,即使右表中沒有匹配,結果以nul顯示=========也可以稱為left outer join
select column_name(s) from table1 left join table2 on table1.column_name=table2.column_name;
14.right join關鍵字從右表返回所有的行,即使左表沒有匹配,結果以null顯示=========也可以稱為right outer join
select column_name(s) from table1 right join table2 on table1.column_name=table2.column_name;
15.full outer join關鍵字只要左表和右表其中一個表中存在匹配,則返回行
select column_name(s) from table1 full outer join table2 on table1.column_name=table2.column_name;
16.union操作符合並兩個或多個select語句的結果**********union只會選取不同的值,union all會選取所有的值,包括重復的值
select column_name(s) from table1
union/union all
select column_name(s) from table2;//******兩個select語句必須有相同數量的列,列也必須有相似的數據類型,而且列的順序也必須相同****//
17.select into語句從一個表復制數據,然后插入到另一個表中******但是兩個表的結構和數據類型完全一致
select column_name(s) into new_table from old_table;
18.insert into select語句從一個表復制數據,把數據插入到一個已存在的表中,目標表中任何已存在的行都不會受影響
insert into table2(column_name(s)) select column_name(s) from table1;
19.create database語句用於創建數據庫
create database dbname;
20.create table語句用於創建數據庫中的表
create table table_name
{
column_name1 data_type(size),
column_name2 data_type(size),
...
};
21.constraints約束用於規定表中的數據規則
約束類型not null(指示某列不能存儲null值)、unique(保證某列的每行必須有唯一的值)、primary key(not null和unique的結合)、foreign key(保證一個表中的數據匹配另一個表中的值的參照完整性)
check(保證列中的值符合指定的條件)、default(規定沒有給列賦值時的默認值)
create table table_name
{
column_name1 data_type(size) constraints_name,
column_name2 data_type(size) constraints_name,
...
};
22.index索引:以便於更加快速高效的查詢數據
create index index_name on table_name(column_name);
23.drop用於刪除索引、表和數據庫
drop index index_name on table_name;
drop table table_name;
drop database database_name;
刪除表內的數據,不刪除表本身,使用truncate table table_name;
24.alter table 用於在已有的表中添加、刪除、修改列
alter table table_name add column_name datatype;//添加
alter table table_name drop column column_name;//刪除
alter table table_name modify column_name datatype;//更新
25.auto increment會在新紀錄插入表中時生成一個唯一的數字
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
PRIMARY KEY (ID)
)
在Oracle中必須通過sequence對象創建
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
insert into Persons(ID,FirstName,LastName) values(seq_person.nextval,'Lars','Monsen');
26.view視圖:是可視化的表,包含行和列,視圖中的字段來自一個或多個數據庫中的真實的表中的字段
create view view_name AS select column_name(s) from table_name where condition ;
create or replace view view_name as select column_name(s) from table_name where condition;
drop view view_name;//刪除視圖
27.date函數
now() 返回當前的日期和時間、curdate()當前的日期、curtime()當前的時間、date()提取日期或時間表達式的日期部分、extract()返回日期/時間的單獨部分、datediff()返回兩個日期之間的天數、date_format()用不同的格式顯示日期/時間
28.avg()函數:返回數值列的平均值
select avg(column_name) from table_name;
29.count()函數:返回匹配指定條件的行數
select count(column_name) from table_name;
select count(distinct column_name) from table_name;
30.first()函數:返回指定的列中第一個記錄的值
select first(column_name) from table_name;//只有MS Access支持first()函數
select top 1 column_name from table_name order by column_name asc;//sql server用法
select column_name from table_name order by column_name asc limit 1;//mysql用法
select column_name from table_name order by column_name asc where rownum <=1;//oracle用法
31.last()函數:返回指定列中最后一個記錄的值
select last(column_name) from table_name;//只有MS Access支持last()函數
select top 1 column_name from table_name order by column_name desc;//sql server用法
select column_name from table_name order by column_name desclimit 1;//mysql用法
select column_name from table_name order by column_name desc where rownum <=1;//oracle用法
32.max()函數:返回指定列中最大值
select max(column_name) from table_name;
33.min()函數:返回指定列中最小值
select min(column_name) from table_name;
34.sum()函數:返回數值列的總數
select sum(column_name) from table_name;//理解為求和
35.having子句可以篩選分組后的各組數據
select column_name,aggregate_function(column_name) from table_name where column_name operator value group by column_name having aggregate_function(column_name) operator value;
35.exists運算符用於判斷查詢子句是否有記錄,如果有一條或多條返回true,否則false
select column_name(s) from table_name where exists (select column_name from table_name where condition);
36.ucase()函數:把字段的值轉換為大寫////upper()函數
select ucase(column_name) from table_name;
37.lcase()函數:把字段的值轉換為小寫/////lower()函數
select lcase(column_name) from table_name;
38.mid()函數:用於從文本字段中提取字符
select mid(column_name,start[,length]) from table_name;
39.len()函數:返回文本字段中值的長度
select len(column_name) from table_name;
select length(column_name) from table_name;//MySQL中的函數名稱及用法
40.round()函數:用於把數值字段舍入為指定的小數位數
select round(column_name,decimals) from table_name;
***********round(x):返回參數x的四舍五入的一個整數
***********round(x,d):返回參數x的四舍五入的有d位小數的一個數字。
41.now()函數:返回當前系統的日期和時間
select now() from table_name;
42.format()函數:用於對字段的顯示進行格式化
select format(column_name,format) from table_name;//column_name要格式化的字段,format規定格式