MYSQL创建数据库SALE_在sql中使用命令行创建数据库

SQL语句:

一、DML—数据操纵语言SQL命令,分为:select查询、insert into插入、delete from删除、update set修改.

l

Select 查询命令

最复杂、存在非常多的使用方法

1、查询表中所有的数据

Select * from table_name;

2、普通条件(where、and、or)查询

Select

*或者字段1,字段2,…

fromtable_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 order by 字段1

asc;

SELECT

* FROM table_name order by 字段2

desc;

SELECT

* FROM table_name order by 字段1, 字段2,…

desc或asc;

SELECT

* FROM table_name where 字段1=数值1 order

by 字段1

desc, 字段2

asc,…;

8、Count 统计记录数查询

SELECT Count(字段1,或字段2,…)[别名a…]

FROM table_name; 【一般不与其它字段一起组合,否则会报错,可在后面加别名】

【加条件“is not

null”,可过滤掉为空值数据】

SELECT (字段1,或字段2,…)[别名a…]

FROM table_name where(字段1,或字段2,…) is not null;

SELECT Count(字段1,或字段2,…),字段A FROM

table_name group by 字段A;

SELECT Count(字段1,或字段2,…),字段A FROM

table_name where 字段B=数值 group

by 字段A;

【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group

by匹配的"字段A"相同,与字段Bgroup

by配置的字段名相同】

9、sum 求和

SELECT sum(字段1,或字段2,…)FROM table_name;

sum匹配的字段,一定为数值类型。

SELECT sum(字段1,或字段2,…),字段A FROM

table_name group by 字段A;

SELECT sum(字段1,或字段2,…),字段A FROM

table_name where 字段B=数值 group

by 字段A;

【与其它字段一起查询显示,要与group

by组合使用,且要显示的"字段A",一定要与group

by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group

by配置的字段名相同】

10、Max 求和

SELECT Max(字段1,或字段2,…)FROM table_name;

sum匹配的字段,一定为数值类型。

SELECT Max(字段1,或字段2,…),字段A FROM

table_name group by 字段A;

SELECT Max(字段1,或字段2,…),字段A FROM

table_name where 字段B=数值 group

by 字段A;

【与其它字段一起查询显示,要与group

by组合使用,且要显示的"字段A",一定要与group

by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group

by配置的字段名相同】

11、Min 求和

SELECT Min(字段1,或字段2,…)FROM table_name;

sum匹配的字段,一定为数值类型。

SELECT Min(字段1,或字段2,…),字段A FROM

table_name group by 字段A;

SELECT Min(字段1,或字段2,…),字段A FROM

table_name where 字段B=数值 group

by 字段A;

【与其它字段一起查询显示,要与group

by组合使用,且要显示的"字段A",一定要与group

by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group

by配置的字段名相同】

12、AVG 求平均值

SELECT avg(字段1,或字段2,…)FROM table_name;

sum匹配的字段,一定为数值类型。

SELECT avg(字段1,或字段2,…),字段A FROM

table_name group by 字段A;

SELECT avg1,或字段2,…),字段A FROM

table_name where 字段B=数值 group

by 字段A;

【与其它字段一起查询显示,要与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

<字段1,或字段2,…> having <分组条件>;

例如:查询出本次考试男女生的总成绩大于等于250分的信息

select

sex,sum(score) as

'总成绩' from

student group by sex having

sum(score)>=250;

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

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 SALES

East $700

West $2050

外部连接

Select a2. region_name, sum(a1.Sales )

from Store_Information a1 , Geography a2

Where a1. store_name=a2.

store_name+--"+"表示列表中的所有资料,都查取出来

Group

by a2.region_name;

13字段列表内容间的串连

MySQL:

CONCAT()

Oracle:

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使用+,如:加个空格+'

'+

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

insert

into…插入

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

delete

from…删除

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

…set修改

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

UNION 或 UNION ALL

作用是将两个 语句的结果合并起来(相当于取两个SQL 语句的并集)

UNION 的语法如下:

[SQL 语句 1]

UNION [SQL 语句 2]

限制是两个

SQL 语句查询的字段值(可以为多个字段)内容,必须是同类型的数据。

SELECT store_name

FROM [XXXXX].[dbo].[Geography]

SELECT

Store_Information

FROM [XXXXX].[dbo].[Store_Information];

结果:

Boston

Los Angeles

New York

San Diego

如果SQL语句中为union

all ,则全部将两张表的字段值内容,查询出且包括重复的。

l

distinct

查询重复出现的字段值,只显示一次。

字段名1,字段名2

from 表格 order

by 字段名1

例如:

Store_Information 表格

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

INTERSECT

作用是将字段值都存在两个 SQL

语句中时,才查询出结果。(相当于取两个SQL 语句的交集)

语法:

[SQL 语句 1] INTERSECT [SQL

语句 2]

限制是两个 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

MINUS

只运用在两个 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

Internet_Sales 表格

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”,红色部分表示内查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值