在sql中使用命令行创建数据库
(2015-08-14 22:29:09)
标签:
it |
SQL语句:
一、DML—数据操纵语言SQL命令,分为:select查询、insert into插入、delete from删除、update set修改.
l
最复杂、存在非常多的使用方法
1、查询表中所有的数据
Select
2、普通条件(where、and、or)查询
Select *或者字段1,字段2,… from table_name where 字段1=值1或字段2=值2…;
如查询一个范围的薪资
SELECT store_name FROM Store_Information WHERE salary > 1000 OR (salary < 500 AND salary > 275);
3、模糊条件(like)查询
Select *或者字段1,字段2,… from table_name where字段1 like %A%;包含A的字符
Select *或者字段1,字段2,… from table_name where字段1 like A%;以A起头的字符
Select *或者字段1,字段2,… from table_name where字段1 like %A;以A结尾的字符
Select *或者字段1,字段2,… from table_name where字段1 like '_汉字_';一个下划线,表示一个字符,共计四个字符
Select *或者字段1,字段2,… from table_name where字段1 like '%汉字%'; %表示无限个字符
4、空值条件(null)查询
Select *或者字段1,字段2,… from table_name where 字段1 is not null;
5、范围查询一 (in)
Select *或者字段1,字段2,… from table_name where 字段1 in (1,2,3,…)或者('质量','数量',…)…;-- 字段值可为数值、或字符类型
6、范围查询二 (between …and…)
Select *或者字段1,字段2,… from table_name where 字段1 between 10 and 100;
Select *或者字段1,字段2,… from table_name where 字段1 between '1990-01-01' and '2012-12-31';
7、排序查询(order by…asc/desc 一般都是组合使用)
SELECT
* FROM table_name
SELECT
* FROM table_name
SELECT
* FROM table_name
SELECT * FROM table_name where 字段1=数值1 order by 字段1 desc, 字段2 asc,…;
8、Count 统计记录数查询
SELECT
【加条件“is not null”,可过滤掉为空值数据】
SELECT
SELECT
SELECT
【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
9、sum 求和
SELECT
sum匹配的字段,一定为数值类型。
SELECT
SELECT
【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
10、Max 求和
SELECT
sum匹配的字段,一定为数值类型。
SELECT
SELECT
【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
11、Min 求和
SELECT
sum匹配的字段,一定为数值类型。
SELECT
SELECT
【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
12、AVG 求平均值
SELECT
sum匹配的字段,一定为数值类型。
SELECT
SELECT
【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】
13、having筛选组查询
那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。
HAVING 子句通常是在一个 SQL 句子的最后。
一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。
HAVING 的语法如下:
SELECT "栏位1", SUM("栏位2")
FROM "表格名"
GROUP BY "栏位1"
HAVING (函数条件) ;
select (字段1,或字段2,…)from table_name group by <</span>字段1,或字段2,…> having <</span>分组条件>;
例如:查询出本次考试男女生的总成绩大于等于250分的信息
select
sex,sum(score) as
'总成绩' from
student group by sex
12、表格连接
|
store_name |
Sales |
Date |
|
Los Angeles |
$1500 |
Jan-05-1999 |
|
San Diego |
$250 |
Jan-07-1999 |
|
Los Angeles |
$300 |
Jan-08-1999 |
|
Boston |
$700 |
Jan-08-1999 |
Geography 表格
|
store_name |
|
|
East |
Boston |
|
East |
New York |
|
West |
Los Angeles |
|
West |
San Diego |
SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2 --A1,A2使用到别名,更助于理解
WHERE
A1.store_name = A2.store_name
GROUP BY A1.region_name --按区域名称,进行分类
结果:
REGION
East
West
外部连接
Select
Where
Group by a2.region_name;
13、CONCATENATE字段列表内容间的串连
MySQL: CONCAT()
Oracle: CONCAT(), ||
CONCAT() 的语法如下:
CONCAT(字符串1, 字符串2, 字符串3,...): 将字符串1、字符串2、字符串3,等字符串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字符串
SELECT CONCAT(region_name,store_name) FROM Geography
WHERE store_name = 'Boston';
SQL Server使用+,如:加个空格+' '+
SELECT region_name + ' ' + store_name FROM Geography
WHERE store_name = 'Boston';
14、SUBSTRING
SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的数据库中不完全一样:
MySQL: SUBSTR(), SUBSTRING()
Oracle: SUBSTR()
SQL
Server: SUBSTRING() 此函数不可用
最常用到的方式如下 (在这里我们用SUBSTR()为例):
SUBSTR(str,pos): 由中,选出所有从第位置开始的字符。请注意,这个语法不适用于SQL Server上。
SUBSTR(str,pos,len): 由中的第位置开始,选出接下去的个字符
假设我们有以下的表格:
Geography 表格
|
region_name |
store_name |
|
East |
Boston |
|
East |
New York |
|
West |
Los Angeles |
|
West |
San Diego |
例1:
FROM Geography
WHERE store_name = 'Los Angeles';
结果:
's Angeles'
例2:
SELECT SUBSTR(store_name,2,4)
FROM Geography
WHERE store_name = 'San Diego';
结果:
'an D'
15、top查询
随机取出10条数据
select top 10 * from tablename order by newid();
l
1、普通常用插入
Insert into table_name (字段1, 字段2, 字段3,…)values (数值1, 数值2, 数值3,…);
2、插入子查询结果
Insert into table_name [(字段1, 字段2, 字段3,…)] SELECT 语句;
--后面的select语句中,还可加相应的限制条件(如:where)
例如:
insert into [XXXXX].[dbo].[Geography_001] (regionID,region_name,store_name)
select [regionID],[region_name],[store_name] from [XXXXX].[dbo].[Geography]
where regionID>9002;
l
1、删除表中的符合某个条件的所有数据信息:
Delete from table_name where 字段1=数值1,或字段2=数值2,…;
2、删除表中所有内容,表结构不删除,以下两种效果一样:
Delete table_name;
truncate table table_name;
3、完全删除表:
Drop table table_name;
l
update table_name set 字段1=数值1 where 字段1=数值1, 字段2=数值2,…;
例如:
UPDATE Store_Information SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "Jan-08-1999";
SQL查询的拓展
l
作用是将两个 SQL 语句的结果合并起来(相当于取两个SQL 语句的并集)
UNION 的语法如下:
[SQL 语句 1] UNION [SQL 语句 2]
限制是两个 SQL 语句查询的字段值(可以为多个字段)内容,必须是同类型的数据。
SELECT store_name
FROM [XXXXX].[dbo].[Geography]
SELECT
Store_Information
FROM [XXXXX].[dbo].[Store_Information];
结果:
|
store_name(字段) |
|
Boston |
|
Los Angeles |
|
New York |
|
San Diego |
如果SQL语句中为union all ,则全部将两张表的字段值内容,查询出且包括重复的。
l
查询重复出现的字段值,只显示一次。
select distinct 字段名1,字段名2 from 表格 order by 字段名1
例如:
Store_Information 表格
|
Sales |
Date |
|
|
Los Angeles |
$1500 |
Jan-05-1999 |
|
San Diego |
$250 |
Jan-07-1999 |
|
Los Angeles |
$300 |
Jan-08-1999 |
|
Boston |
$700 |
Jan-08-1999 |
执行语句:
select distinct [store_name] from [XXXXX].[dbo].[Store_Information];
|
store_name |
|
Boston |
|
Los Angeles |
|
New York |
|
San Diego |
l
作用是将字段值都存在两个 SQL 语句中时,才查询出结果。(相当于取两个SQL 语句的交集)
语法:
[SQL
语句 1]
限制是两个 SQL 语句查询的字段值(可以为多个字段)内容,必须是同类型的数据。
SELECT store_name
FROM [XXXXX].[dbo].[Geography]
intersect
SELECT
Store_Information
FROM [XXXXX].[dbo].[Store_Information];
结果:
|
store_name |
|
Boston |
|
Los Angeles |
|
San Diego |
l
只运用在两个 SQL 语句上。执行第一个 SQL 语句所产生的结果,如果存在第二个 SQL 语句的结果中,则会被去除,不显示最后结果中。执行第二个 SQL 语句所产生的结果,如果不存在第一个 SQL 语句所产生的结果内,则会被去除,不显示最后结果中
Store_Information 表格
|
store_name |
Sales |
Date |
|
Los Angeles |
$1500 |
Jan-05-1999 |
|
San Diego |
$250 |
Jan-07-1999 |
|
Los Angeles |
$300 |
Jan-08-1999 |
|
Boston |
$700 |
Jan-08-1999 |
|
Date |
Sales |
|
Jan-07-1999 |
$250 |
|
Jan-10-1999 |
$535 |
|
Jan-11-1999 |
$320 |
|
Jan-12-1999 |
$750 |
而我们要知道有哪几天是有店面营业额而没有网络营业额的。要达到这个目的,我们用以下的 SQL 语句:
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-08-1999
l
在一个 SQL 语句中放入另一个 SQL 语句。在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,就有一个子查询 (subquery) 的架构。
子查询的作用是:1、用来连接表格。2、唯一能够连接两个表格的方式。
子查询的语法如下:
SELECT "栏位1"
FROM "表格"
WHERE "栏位2" [比较运算素]
(SELECT "栏位1"
FROM "表格"
WHERE [条件]);
其中,[比较运算素]可以为“=, >, <, >=, <=.”,也可以为“like”,及“and”、“or”,红色部分表示内查询。

加载中…