加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2015-08-14 22:29:09)
标签:

it

在sql中使用命令行创建数据库
1.建立数据库
create database ttt
on
(
NAME=yyy_DAT,
FILENAME='F:\mmm\ttt.mdf',
SIZE=3MB,
MAXSIZE=30MB,
FILEGROWTH=10%
)
LOG on
(
NAME=ttt_LOG,
FILENAME='F:\mmm\ttt.LOG',
SIZE=3MB,
MAXSIZE=30MB,
FILEGROWTH=10%
)

2. 建立数据表
use ttt
go
create table tyy
(
id int primary key identity(1,1),  ---关键字,自动编号
tname char(10) not null,--不能空
tage char(5),
tsex char(2) check(tsex in('男','女'))default('女'),--有条件填空
tbirth date check(tbirth between '1990-01-01' and '2010-12-31' )
)

3.插入数据
use ttt
go
insert into tyy(tname,tage,tsex,tbirth) values ('易小小','10','男','2010-10-23')
4.添加字段
ALTER table tyy add tnum char(10)
alter table tyy add tmem char(100)
5.删除字段
alter table tyy drop column tnum


sql一些常用命令

SQL语句:

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

l  Select 查询命令

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

1、查询表中所有的数据

Select  from  table_name

 

2普通条件(whereandor)查询

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

SELECT * FROM table_name  order by 字段2 desc;

SELECT * FROM table_name  order by 字段1, 字段2,…  descasc;

SELECT * FROM table_name where 字段1=数值1 order by 字段1 desc, 字段2 asc,…;

 

8Count 统计记录数查询

SELECT  Count(字段1,或字段2[别名a…] FROM table_name; 【一般不与其它字段一起组合,否则会报错,可在后面加别名】

【加条件“is not null,可过滤掉为空值数据】

SELECT  Count(字段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"相同,与字段B不能相同所以只能是一个集合函数,或者与group by配置的字段名相同

 

 

9sum 求和

SELECT  sum(字段1,或字段2FROM 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配置的字段名相同】

 

10Max 求和

SELECT  Max(字段1,或字段2FROM 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配置的字段名相同】

 

11Min 求和

SELECT  Min(字段1,或字段2FROM 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配置的字段名相同】

 

12AVG 求平均值

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

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

SELECT  avg(字段1,或字段2,字段A FROM table_name group by 字段A;

SELECT  avg字段1,或字段2,字段A FROM table_name where 字段B=数值 group by 字段A;

【与其它字段一起查询显示,要与group by组合使用,且要显示的"字段A",一定要与group by匹配的"字段A"相同,与字段B不能相同,所以只能是一个集合函数,或者与group by配置的字段名相同】

 

13having筛选组查询

那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。

HAVING 子句通常是在一个 SQL 句子的最后。

一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。

HAVING 的语法如下:

SELECT "栏位1", SUM("栏位2")

FROM "表格名"

GROUP BY "栏位1"

HAVING (函数条件) ;

 

select (字段1,或字段2from table_name group by <</span>字段1,或字段2…> having <</span>分组条件>;

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

select sex,sum(score) as '总成绩' from student group by sex  having sum(score)>=250;

 

12、表格连接

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

Geography 表格

region_name

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  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;

 

13CONCATENATE字段列表内容间的串连

MySQL: CONCAT()

Oracle: CONCAT(), ||

SQL Server: +

CONCAT() 的语法如下

CONCAT(字符串1, 字符串2, 字符串3,...): 将字符串1、字符串2、字符串3等字符串连在一起。请注意,OracleCONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在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';

 

14SUBSTRING

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:

SELECT SUBSTR(store_name, 3)

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'

 

15top查询

随机取出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 语句的结果合并起来(相当于取两个SQL 语句的并集

UNION 的语法如下:

[SQL 语句 1] UNION [SQL 语句 2]

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

SELECT store_name

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

union

SELECT

Store_Information

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

结果:

store_name(字段)

Boston

Los Angeles

New York

San Diego

 

 

 

 

 

 

如果SQL语句中为union all ,则全部将两张表的字段值内容,查询出且包括重复的。

 

l  distinct

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

select distinct 字段名1,字段名2 from 表格 order by 字段名1

例如:

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

执行语句:

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 语句所产生的结果,如果不存在第一个 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

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有