SQL DML和DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和数据定义语言(DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:是对数据表中的数据进行操作
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。是对数据库和数据表格结构的操作,层级要比DML高
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
1.创建数据库
Create DATABASEdatabase-name;
2.除数据库
Drop DATABASE atabase-name;
3.备份SQLServer
--- 创建 备份数据的 device
USEmaster
EXECsp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4.创建新表
Create tabletablename (col1 type[not null] [primarykey], col2 type [not null] [primary key],…..)
根据已有的表创建新表:
A. create table tab_new like tab_old;(创建和旧表一样的表)
B. createtable tab_new as select col1,col2….from tab_old definition only
5.删除新表
Droptable tabname;
6.增加一个列
Altertable tabname add colum_name col_type
注:列增加后将不能删除。
7.添加主键
Alter table tabname add primary key (col)
8.向表中添加数据
Insert into 表名称 values(值1,值2,…..)
向表中指定列添加数据
Insertinto 表名称(列1,列2,列3,…)values(值1,值2,值3,…)
9. Update 语句
更新某一行中的某一个列:
Update Person
set firstname=’fred’
where lastname=’wilson’
更新某一行中的若干列:
Update person
set Address=’zhongsan’, City=’Nanjing’
Where lastname=’wilson’
10. DELETE语句
Deletefrom person where lastname=‘wilson’
11.TOP子句
要返回的记录的数目
SQLServer中的语法:
SelectTop 50 * from Persons 从Persons表中选择50条数据,列出所有列
SelectTop 50 PERCENT * from Persons 从Persons表中选择50%的数据,列出所有列
12. IN 操作符
IN操作符允许在WHERE子句中规定多个值
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
13.BETWEEN 操作符
在WHERE子句中使用,值范围可以是数值,文本或者日期
SELECT * FROMPersons WHERE LastName BETWEEN 'Adams' AND 'Carter'
(不同数据库,对两头的取舍定义不同)not between:范围之外
14.JOIN,连接查询,组成新表
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P =Orders.Id_P
ORDER BY Persons.LastName
INNER JOIN:(等值连接) 只返回两个表中联结字段相等的行。在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
LEFT JOIN:(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,leftjoin是以左表为准的. 左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。B表记录不足的地方均为NULL)LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
RIGHT JOIN:(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
FULL JOIN: 只要其中一个表中存在匹配,就返回行
15. UNION 和 UNION ALL 操作符
UNION 操作符用于合并两个或多个SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SELECTcolumn_name(s) FROM table_name1
UNION
SELECTcolumn_name(s) FROM table_name2
(默认地,UNION 操作符选取不同的值。如果允许重复的值,使用 UNION ALL。)
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
(UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。)