sql 常用语法

一、创建数据库表

 

 

 

 

 

 

在序列表中,选择是标识,选择是,标识增量改为1,每次增加1

  • 每次增加一列,序列加1

SQL 和T-SQL的区别

 2.1SQL(结构化查询语言)

  1. 关系数据库的标准语言

SQL server、Oracle、DB2

  1. 非过程化语言

   不许要指定对数据的存放方法

  1. 统一的语言

创建、修改以及删除数据对象(数据库、表等)

  2.2T-SQL

SQL的加强版,提供了类似程序语言的基本功能

变量说明、流程控制 、功能函数

 

  • 条件表达式:

   3.1 常量:表示单个指定数据值的符号(如字母、数字或符号)

   3.2 列名(表中列的名称)

   3.3 一元运算符:仅有一个操作数的运算符(+ 表示正数,- 表示负数)

   3.4 二元运算符:将两个操作数组合执行操作的运算符(如算数运算符、位运算符、逻辑运算符、比较运算符)

   

 

二元运算符:

 

逻辑运算符

 

 

  • SQL--语法的介绍

4.1.SQL 语句后面的分号

某些数据库系统要求在每条 SQL 语句的末端使用分号。

分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

 

4.2 一些重要的SQL命令

  1. SELECT - 从数据库中提取数据
  2. UPDATE - 更新数据库中的数据
  3. DELETE - 从数据库中删除数据
  4. INSERT INTO - 向数据库中插入新数据
  5. CREATE DATABASE - 创建新数据库
  6. ALTER DATABASE - 修改数据库
  7. CREATE TABLE - 创建新表
  8. ALTER TABLE - 变更(改变)数据库表
  9. DROP TABLE - 删除表
  10. CREATE INDEX - 创建索引(搜索键)
  11. DROP INDEX - 删除索引

 

4.3. 查看Websites表的所有列

 SELECT * FROM Websites

 

4.4从Websites 中选取“name”和age 两个列

SELECT name age  FROM Websites

 

4.5 SELECT DISTINCT返回唯一不同的值

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值

SELECT DISTINCT country(列名) FROM Websites(表名)

 

 

 

 

4.6 SQL WHERE 子句(添加条件,过滤指定条件的记录)SELECT column_name,column_name(列名)
FROM table_name(表名)
WHERE column_name operator value(添加列名的条件);

例如:下面的 SQL 语句从 "Websites" 表中选取国家为 "CN" 的所有网站:

SELECT * FROM Websites WHERE country = CN ;

注意:如果是数值字段,请不要使用引号。

WHERE 字句中的运算符:

 

 

!= 或者<>表示不等于

 

4.7 SQL AND & OR & NOT 运算符

AND:如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

OR: 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

 

 

 

 

4.8 WHERE 条件的运算实例

Where +条件(筛选行)例如:

条件:列,比较运算符,值

比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)

Select * from emp where ename='SMITH';

例子中的 SMITH 用单引号引起来,表示是字符串,字符串要区分大小写。

逻辑运算

And:与 同时满足两个条件的值。

Select * from emp where sal > 2000 and sal < 3000;

查询 EMP 表中 SAL 列中大于 2000 小于 3000 的值。

Or:或 满足其中一个条件的值

Select * from emp where sal > 2000 or comm > 500;

查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。

Not:非 满足不包含该条件的值。

select * from emp where not sal > 1500;

查询EMP表中 sal 小于等于 1500 的值。

逻辑运算的优先级:

()    not        and         or

特殊条件

1.空值判断: is null

Select * from emp where comm is null;

查询 emp 表中 comm 列中的空值。

2.between and (在 之间的值)

Select * from emp where sal between 1500 and 3000;

查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。

注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前,上限在后,查询的范围包涵有上下限的值。

3.In

Select * from emp where sal in (5000,3000,1500);

查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。

4.like

Like模糊查询

Select * from emp where ename like 'M%';

查询 EMP 表中 Ename 列中有 M 的值,M 为要查询内容中的模糊信息。

注意:

 % 表示多个字值,_ 下划线表示一个字符;

 M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。

 %M% : 表示查询包含M的所有内容。

 %M_ : 表示查询以M在倒数第二位的所有内容。

 

 

4.9 SQL ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字

SELECT column_name,column_name(列名)
FROM table_name(表名)
ORDER BY column_name,column_name ASC(升序)|DESC(降序);

 

例如:下面的 SQL 语句从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序

SELECT * FROM Websites ORDER BY alexa DESC

 

ORDER BY 多列:

SELECT * FROM Websites ORDER BY country,alexa;

 

ORDER BY多列的时候,

 1)、先将country值这一列排序,同为CN的排前面,同属USA的排后面;

 2、然后在同属CN的这些多行数据中,再根据alexa值的大小排列。

 3、ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC

 

 

4.10 SQL INSERT INTO 语句

1INSERT INTO 语句用于向表中插入新记录。

(2)NSERT INTO 语句可以有两种编写形式

(一) 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name VALUES (value1,value2,value3,...);这种不常用

(二)第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)

VALUES (value1,value2,value3,...);

 

假设我们要向 "Websites" 表中插入一个新行。

 

 

4.11 SQL UPDATE 语句

1UPDATE 语句用于更新表中已存在的记录。

 (2)SQL UPDATE 语法

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

注意:WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!

 

 

 

 

 

 

例如:UPDATE Websites SET alexa='5000', country='USA' WHERE name='菜鸟教程';(更新名字等于菜鸟教程的 alexa和country数据

 

4.12 SQL DELETE 语句

1DELETE 语句用于删除表中的

 (2 )SQL DELETE 语法

DELETE FROM table_name
WHERE some_column=some_value;

注意:WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

 

 

例如:假设我们要从 "Websites" 表中删除网站名为 "百度" 且国家为 CN 的网站 。

DELETE FROM Websites WHERE name='百度' AND country='CN';

 

  1. 删除表所有数据(注意这步操作后不可恢复)
  •     DELETE FROM table_name;或DELETE * FROM table_name;

4.13 SQL SELECT TOP 字句

(1)SELECT TOP 子句用于规定要返回的记录的数目。

 (2)SQL Server 语法:

SELECT TOP number|percent(百分数) column_name(s)
FROM table_name;

例如:(1从 websites 表中选取前面百分之 50 的记录:

SELECT TOP 50 PERCENT * FROM Websites;

(2)返回 1 行记录的数目

select top 1 * from 学生信息

 

 

4.14 SQL LIKE 操作符

1LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

 (2)SQL LIKE 语法

  SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;

例如:下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:

SELECT * FROM Websites
WHERE name LIKE 'G%';

 

 

 

4.15 SQL 通配符

(1)通配符可用于替代字符串中的任何其他字符。在 SQL 中,通配符与 SQL LIKE 操作符一起使用。

uploading.gif转存失败重新上传取消

 

 

4.16 SQL IN 操作符

1IN 操作符允许您在 WHERE 子句中规定多个值。

(2)SQL IN 语法

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

 

例如:查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。

Select * from emp where sal in (5000,3000,1500)

 

4.17 SQL BETWEEN 操作符

1BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

2)SQL BETWEEN 语法

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

 

例子:查询 emp 表中 SAL 列中大于 1500 的小于 3000 的值。

Select * from emp where sal between 1500 and 3000;

 

4.18 SQL 别名

1通过使用 SQL,可以为表名称或列名称指定别名。基本上,创建别名是为了让列名称的可读性更强。

(2)列的 SQL 别名语法

SELECT column_name AS alias_name
FROM table_name;

  1. 表的 SQL 别名语法

SELECT column_name(s)
FROM table_name AS alias_name;

提示:如果列名称包含空格,要求使用双引号或方括号:

 

4.19 创建数据库

CREATE DATABASE dbname(数据库名);

 

4.20创建数据库表

语法:CREATE TABLE table_name(表名)
(
column_name1(列名) data_type(size)(列的类型),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

 

create TABLE new

(ID int IDENTITY(1,1),创建标识符,类型int,(起始为1,自增长1)

name nvarchar(50) not null,name,类型nvarchar,不为空

age int not null check(age>=0 and age <=120),check约束

)

 

 

4.21 SQL GROUP BY 语句

1GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

2SQL GROUP BY 语法

SELECT column_name(s)

FROM table_name

WHERE condition

GROUP BY column_name(s)

ORDER BY column_name(s);

例如:SELECT

SUM (分数) 总分,AVG(分数)平均分,MAX(分数)最高分,MIN(分数)最低分,

课程编号

FROM

 成绩信息

GROUP BY

 课程编号

HAVING

 AVG(分数)<80

ORDER BY

 课程编号 DESC

 

 以下SQL语句列出了每个国家/地区的客户数量:

SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY Country;

 

 

4.22触发器:

insert触发器:向表中插入数据时被触发;

delete触发器:从表中删除数据时被触发;

update触发器:修改表中数据时被触发。

 

语法:

CREATE TRIGGER trigger_name

 ON table_name

 [WITH ENCRYPTION]

  FOR | AFTER | INSTEAD OF [DELETE, INSERT, UPDATE]

 AS

  T-SQL语句

GO

 

1、 After触发器

After触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上。

2、Instead of 触发器

Instead of 触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义

 

 

创建删除表的触发器

CREATE TRIGGER NO_DELETE

 ON new

  FOR DELETE[insert,update]

 AS

  PRINT('滚,不允许删表')

  ROLLBACK

 GO

 

4.23 SQL SUM() 函数

(1) SUM() 函数返回数值列的总数。

 

2下面的 SQL 语句查找 "access_log" 表的 "count" 字段的总数:

实例

SELECT SUM(count) AS nums(把count的和输入到nums) FROM access_log;

 

4.24 SQL AVG() 函数

1AVG() 函数返回数值列的平均值。

下面的 SQL 语句从 "access_log" 表的 "count" 列获取平均值:

实例

SELECT AVG(count) AS CountAverage FROM access_log;

 

 

4.25 SQL COUNT() 函数

1SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name;

注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

2下面的 SQL 语句计算 "access_log" 表中总记录数:

实例

SELECT COUNT(*) AS nums FROM access_log;

 

 

4.26 SQL HAVING 子句

1在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

  1. SQL 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;

 

(3)查找课程标号中总分,平均分,最高分,最低分,其中平均分小于80,降序排列的

SELECT

SUM (分数) 总分,AVG(分数)平均分,MAX(分数)最高分,MIN(分数)最低分,

课程编号

FROM

成绩信息

GROUP BY

课程编号

HAVING

AVG(分数)<80

ORDER BY

课程编号 DESC

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值