DDL(数据定义语言)语句:
### create database -- 创建新数据库
### alter database -- 修改数据库
### create table -- 创建新表
### alter table -- 变更数据库表
### create index -- 创建索引
### drop index -- 删除索引
DML(数据操作语言)部分
### select - update - delete - insert into
注意:SQL对大小写不敏感!
SQL特殊用法:
例1:从Persons表中选取居住的城市已‘A’或‘L’或'N'开头的人
select * from Persons Where city Like '[ALN]'
例2: Inner join,在表中存在至少一个匹配时,inner join关键字返回行。
注意:Inner join 与 join是相同的。
例3:left join,关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。同理right join.
例4:full join,结合的左,右外连接的结果。连接表将包含的所有记录来自两个表,并使用null作为两侧确实匹配结果
ELECT table1.column1,table2.column2...FROM table1 FULL JOIN table2 ON table1.common_field=table2.common_field;
如果你的数据不支持Full join,如mysql不支持 full join ,那么可以使用union all子句。
SQL>select id,name,amount,date from customers left join orders on customers.id = orders.customer_id
union all
select id,name,amount,date from customers left join orders on customers.id = orders.customer_id
例5、Union,操作符用于合并两个或多个select语句的结果集,请注意,union内部的select语句必须拥有相同数量的列,列
也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。
注释:默认地,union操作符选取不同的值,如果允许重复的值,请使用Union all,另外,Union结果集中的列名总是等于
union 中第一个select 语句中的列名。
例6、Select into语句从一个表中选取数据,然后把数据插入另一个表中
select * into new_table_name [ IN externaldatabase] from old_tablename
select column_name(s) into new_table_name [IN externaldatabase] from old_tablename
例7、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'
)
SQL Nulls
查询的时候,如数据表中列带有Null值的记录,必须使用 IS NULL操作符。
不带有Null值的记录,必须使用 IS NOT NULL操作符
SQL ISNULL()
Oracle使用NVL()函数将表中的Null值转化为0
SQL functions
函数的基本类型是:Aggregate函数:Aggregate函数的操作面向一系列的值,并返回一个单一的值
Scalar函数:Scalar函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
1、 SQL avg(),AVG函数返回数值类的平均值,Null值不包括在计算中
Select avg(column_name) from table_name
2、Count(column_name)函数返回指定指定列的值的数目(Null不计入)
1、Select Count(column_name) from table_name (f返回指定列的数目,null不计入)
2、Select Count(*) from table_name(返回表中的记录数)
3、Select Count(Distinct column_name) from table_name(函数返回指定列的不同值的数目)
3、first() 函数返回指定的字段中第一个记录的值,提示:可使用ORDER BY语句对记录进行排序
Select first(column_name) from table_name
4、last() 函数返回指定的字段中最后一个记录的值,可使用order by语句对记录进行排序
Select last(column_name) from table_name
5、max函数返回一列中的最大值。null值不包括在计算中
Select max(column_name) from table_name
6、min 函数返回一列中的最小值。null值不包括在计算中
Select min(column_name) from table_name
7、sum() 函数返回数值列的总数(总额)
Select SUM(column_name) from table_name
8、group by 合计函数(比如SUM)常常需要添加group by 语句
group by 语句用于结合合计函数,根据一个或多个列对结果绩进行分组
9、Having 在SQL中增加Having子句原因是,Where关键字无法与合计函数一起使用
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
Select customer,SUM(OrderPrice) From Orders group by Customer Having SUM(OrderPrice) < 2000
10、ucase () 函数把字段的值转换为大写
Select Ucase(colummn_name) from table_name
11、lcase()函数把字段的值转换为小写
Select LCASE(column_name) From table_name
12、mid() 函数用于从文本字段中提取字符(MySQL,Sql Server不可用)
Select MID(column_name,start[,length]) From table_name
column_name 必须。要提取字符的字段
start 必须。规定开始位置(起始值是1)
length可选。要返回的字符数。如果省略,则Mid()函数返回剩余文本。
Select MID(city,1,3) as SmallCity From Persons
13、len() 函数返回文本字段中值的长度(mysql→Length()、Sql Server →len())
Select LEN(column_name) From table_name
14、round() 函数用于把数值字段舍如为指定的小数位数
Select Round(column_name,decimals) From table_name 参数 描述
-column_name 必须。要舍入的字段
-decimals 必须。规定要返回的小数位数
15、now() 函数返回当前的日期和时间(mysql→now(),Sql server→getdate())
Select now() from table_name
Select getdate() from table_name
16、format() 函数用于对字段的显示进行格式化
Select Format(column_name,format) From table_name
column_name 必须,要格式化的字段
format,必须,规定格式。
SELECT FORMAT(getdate(),'yyyy-MM-dd HH:mm:ss') From table_name(→Sql Server)
SELECT DATE_FORMAT(Now(),'%Y-%m-%d %H:%i:%S') FROM table_name(→Mysql)
网友评论