SQL 常用语法

一、什么是SQL?

 SQL 是用于访问和处理数据库的标准的计算机语言。

二、SQL 能做什么?

       SQL 面向数据库执行查询

       SQL 可从数据库取回数据

       SQL 可在数据库中插入新的记录

       SQL 可更新数据库中的数据

       SQL 可从数据库删除记录

       SQL 可创建新数据库

       SQL 可在数据库中创建新表

       SQL 可在数据库中创建视图

       SQL 可以设置表、存储过程和视图的权限

三、在学语法之前,需要注意的是:

1. SQL 对大小写不敏感

四、SQL DML 和 DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

查询和更新指令构成了 SQL 的 DML 部分:

SELECT- 从数据库表中获取数据

UPDATE- 更新数据库表中的数据

DELETE- 从数据库表中删除数据

INSERT INTO- 向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

CREATE DATABASE- 创建新数据库

ALTER DATABASE- 修改数据库

CREATE TABLE- 创建新表

ALTER TABLE- 变更(改变)数据库表

DROP TABLE- 删除表

CREATE INDEX- 创建索引(搜索键)

DROP INDEX- 删除索引

五、具体的一些基本语法

1. select 语法

SELECT 列名称 FROM 表名称

SELECT * FROM 表名称

SELECT 列名称1,列名称2 FROM 表名称

2. select distinct

用来剔除掉一些重复的值,用法同select

select distinct 列名称 from 表名称

3. where

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

其中运算符可以是常见的等号,大于号等,也可以是 between(在某个范围内), like(搜索某种模式)

4. and   , or

顾名思义,就是或 和且 的关系

5. order by

对结果进行升序的排序

如果想要按照降序排序,可以语句末尾使用desc关键字

6. insert info 语句

可以向表格里面插入新的行

INSERT INTO 表名称 VALUES (值1, 值2,....)

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

7. update 

去修改表中的数据

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

8. delete

DELETE FROM 表名称 WHERE 列名称 = 值

多说两句:千万别乱删东西啊,这些东西删了,就找不回来了

所以我们DPW 这边有弄个cronjob,每天定时去备份数据库,放在IT那边

9. TOP ,limit,rownum

规定要返回的记录数目

注意:不是每个数据库习题都支持top语句,但是有类似的

比如: SQL server的语法:

SELECT TOP number|percent column_name(s) FROM table_name

MySQL的语法

SELECT column_name(s) FROM table_name LIMIT number

Oracle的语法

SELECT column_name(s)  FROM table_name  WHERE ROWNUM <= number

三者举例:

10. Like

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

举例:

1. 表示查找B开头的parameter_id 集合

2. 表示查找e为结尾的parameter_id 集合

提示:"%" 可用于定义通配符(模式中缺少的字母)。

也可以结合NOT 关键字,表示反选 

eg :SELECT *from app_parameterwhere parameter_idNOT LIKE'B%';

11. 通配符

像上面说的 %,就是一个通配符,常用通配符如下

注意:通配符必须和LIKE 一起使用

12 IN

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

和where一起使用

13 between  and

这个写法一般是取两者之间的范围,可以是数值,文本或者日期

也可以结合NOT ,取反

搜索结果

14 join 

为了得到完整的结果,我们需要从两个或者多个表中获取结果,这时候就要用到join

Person:

这个表里面,id_P就是这个表的主键

然后看下Order 这个表

注意了,这边的id_O是这个表的主键,同时,order表中的id_P引用了person里面的人,而无需使用它们的确切名字

所以,这两个表,利用了id_P ,串联了起来

可以这样使用:

SELECT * FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

在放我项目里,我举个例子:

第一张表: app_profile

第二张表:

现在,我想搜这两张表的所有organation_id = = 9Nno1vGQUKpp3wf7_nGqg的数据

也可以用join 的关键字来表达,比如这两句是等同的

不同的SQL JOIN

INTER JOIN 是属于内连接,和JOIN 一样

LEFT JOIN: 不管右表中没有匹配,都会从左表返回所有的行

RIGHT JOIN: 不管左表中没有匹配,都会从右表返回所有的行

FULL JOIN: 全部输出左右表所有的行

15 UNION

用于合并两个或者多个select语句的结果集

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

举个例子:

SELECT E_Name FROM Employees_China

UNION

SELECT E_Name FROM Employees_USA

那这样的结果就是:

16 select into

从一个表中选取数据,然后把数据插入另一个表中

常用于创建表的备份附件或用户对记录进行存档

语法:

1. 把所有的列插入新表

SELECT * INTO new_table_name  FROM old_tablename

2. 只把希望的列插入新表

SELECT column_name(s) INTO new_table_name  FROM old_tablename

3. 也可以和where相结合

SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'

后面的(17-28)比较Corner,大家了解一下即可

17 create database

用户创建数据库,语法为: CREATE DATABASE database_name

18 create table

用于创建表,语法为: create table tableName ( 列名称1 数据类型, 列名称2 数据类型)

19 constraints

这个是约束,比如创建表后的一些约束

这个在下面会具体说到

20  not null 

强制约束不接受NULL 值

 create table tableName ( 列名称1 数据类型 NOT NULL, 列名称2 数据类型)

21 unique

强制约束唯一性

 create table tableName (列名称1 数据类型 NOT NULL, 列名称2 数据类型 UNIQUE)

22 PRIMARY KEY 

约束唯一表示数据库的每条记录 

 create table tableName ( 列名称1 数据类型 PRIMARY KEY , 列名称2 数据类型 UNIQUE)

23 FOREIGN KEY

24 check 

只能放入特定的值(true,false)

25 default 

默认值

26 create index 

创建索引

在不读取整个表的情况下,索引使数据库应用程序可以更快的查找数据

介绍下什么是索引

您可以在表中创建索引,以便更加快速高效地查询数据

用户无法看到索引,他们只能被用来加速搜索/查询

语法:

27 drop (一定要慎用)

使用drop语句,可以撤销索引、表以及数据库

删除索引: 

删除表:

删除数据库:

仅仅删除表内的数据,不删除表本身

28 ALTER  TABLE 

ALTER TABLE 语句用于在已有的表中添加、修改或者删除列

添加列 : 

删除列:

29 AUTO INCREMENT 

auto increment 会在新纪录插入表中时,生成一个唯一的数据

我们通常希望在每次插入新纪录时,自动创建主键字段的值

语法:

默认 auto increment 是从1开始,要是从其他值开始,要执行这句:

ALTER TABLE Persons AUTO_INCREMENT=100

29 VIEW

视图是可视化的表

SQL中,视图是基于SQL语句的结果集的可视化的表

视图包含行和列,就像一个真实的表。视图的字段就是来自一个或者多个数据库中真实的表中的字段。

我们可以像视图添加SQL函数,where以及join语句等

create view 语法:

视图总是显示最近的数据,每当用户查询视图时,数据库引起通过SQL语句来重建数据

举个例子:

创建view:

查看它:

更新视图语法

例子:

查看结果就是:

撤销视图

DROP VIEW viewName

30 null

null值是遗漏的未知数据

默认,表的列可以存放null值

我们可以用 is null 或者 is not null 来判断是否为空值,null 和 0 是不等价的

你可能感兴趣的:(SQL 常用语法)