Sql dml 和ddl
可以把SQL分为两部分:数据库语言(DML)和数据定义语言(DDL)
SQL(结构化查询语言)是用于执行查询的语法,但SQL语言也包含用于更新,插入和删除记录的语法
查询和更新指令构成了SQL的DML的部分
.SELECT -从数据库表中获取数据 UPDATE -更新数据库表中的数据 DELETE从数据库表中删除数据 INSERT INTO -向数据库表中插入数据
SQL的数据定义语言DDL部分能使我们有能力删除或者创建表格 ,我们也可以定义索引建,规定表之间的链接,以及增加表之间的约束
SQL中最重要的DDL语句:
CREATE DATEBASE 创建数据库 ALTER DATEBASE 修改数据库 CREATE TABLE创建新表
ALTER TABLE 变更数据库表 DROP TABLE 删除表 CREATE INDEX 创建索引(搜索键)
DROP INDEX 删除索引
Select * from 表明 (*代表是选取所有列的快捷方式)
Select distinct 属性 from 表名 distinct防止重复,让其唯一
Select * from persons where city=’xian’;
Select * from persons where year>1994;
Select * from persons where year>1994 and year<2001;
ORDER BY语句用于根据指定的列对结果进行排序,语句默认按照升序对记录进行排序;DESC是按照降序对记录进行排序
Select 属性1,属性2..... from 表明 order by 属性 (升序)
Select 属性1, 属性2 ....from 表名 order by 属性 desc (降序)
Insert into 语句用于向表格中插入新的行
Insert into 表名称 values (值1 ,值2 ,.........)
也可以指定所要的咧
Insert into table_name (列1,列2........) values (值1,值2,...)
Update 修改表中的数据
Update 表名称 set 列名称 = 新值 where 列名称 =某值
Delete 语句删除表中的行
Delete from 表名称 where 列名称 = 值
Delete * from table_name 不删除表,删除表中的所有的行
Top 子句用于规定返回的记录的数目(不是所有的数据库系统都支持top子句)
Select top number|percent colunm_name(s) from table_name
MySQL和oracle中的SQL select top是等价的
Select TOP 50 percent * from 表名(从表名中选取百分之五十的 记录 )
Like操作符用于在where子句中搜索中的指定模式
Select column_name(s) from table_name where column_name LIKE pattern;
Select * from persons where city LIKE ‘n%’ 从person表里选取居住在以N开始的城市的人
注意“%”可用于定义同通配符(模式中缺少的字母)
Select * from persons where city LIKE ‘%b’从person表里选取以b结尾的城市的人
Select * from persons where city LIKE ‘%CC%’ 从persons表里选取不包含CC城市里的人
SQL通配符:在搜索数据库中的数据时,SQL通配符可以替代一个或者多个字符,SQL通配符必须与LIKE 运算符一起使用。在SQL中可以使用以下通配符:
% 替代一个或者多个字符
- 仅仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 不在字符列中的任何单一字符或者用([!charlist])
Select * from persons where firstname like ‘_ u’ 从person表中选取名字的第一个字符之后是“u”的人
Select * from persons where lastname LIKE ‘c_r_h’ 从person表中选取这条记录的姓氏以“c”开头,然后是一个任意字符,然后是“r”,最后是“h”
Select * from persons where city LIKE ‘[KLM]%’ 从person表选取居住在“K”或“L”或“M”城市开头的人 ,如果查找的是不在的话,只需要在原来的加!如下 ‘[!KLM]%’
Sql IN操作符 IN操作符允许我们在where子句中规定多个值
Select * from persons where LASTNAME IN (‘A’,’B’)我们希望从上表中选取姓氏为A和B的
人
BETWEEN 操作符在where子句中使用,作用是选取介于两个值之间的数据范围,BETWEEN....AND 这个值可以是数值,文本或者日期
Select * from persons where lastname BETWEEN ‘A’ AND ‘B’ 显示介于A
(包括A)和B(不包括B )之间,反之在BETWEEN前加NOT
Alias 可以为列名称和表名称指定别名
表的SQL alias语法
Select column_name(s) from table_name AS alias_name
列的SQL alias 语法
Select column_name AS alias_name from table_name
Alias 实例: 使用表名称别名
假设我们有两个表分别是:"Persons" 和 "Product_Orders"。我们分别为它们指定别名 "p" 和 "po"。
现在,我们希望列出 "John Adams" 的所有定单。
我们可以使用下面的 SELECT 语句:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'
不使用别名的 SELECT 语句:
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Adams' AND Persons.FirstName='John'
从上面两条 SELECT 语句您可以看到,别名使查询程序更易阅读和书写。
Sql join 用于根据两个或多个表中的列之间的关系,从这些数据中查询数据.
在表中存在至少一个匹配时 ,INNER JOIN 关键字返回行
关键的语法:
Select column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name11 . colum
1 .column_name=table_name2 . column_name
SQL UNION 操作符 ,用于合并两个或多个select语句的结果集
注意:UNION操作符用于合并两个或多个SELECT语句的结果集,列也必须有相似的数据类型,同时每条select中的列的顺序必须相同
UNION语法,
Select column_name from table_name1
UNION
Select column_name from table_name2
注意:默认地,UNION操作符选取不同的值,如果允许重复的值,请使用UNION all
UNION结果集中的列名总是等于UNION中第一个select语句中的列名 ,UNION只会选取不
SQL select into语句可以用于创建表的备份原件
Select into 语句从一个表中选取数据,然后把数据插入另外一个表中,此语句还可以用于创建表的备份复件或者用于对记录进行存档
Select * INTO new_table_name [IN externaldatabase] from old_tablename把所有的列插入新表-select column_name(s) into new_table_name from old_tablename
SQL SELECT INTO 实例-制作备份复件
Select *
Into Persons_backup
From Persons
In几句可用于向另一你数据库中拷贝表:
Select *
Into persons in ‘Backup.mdb’
From persons
如果我们希望拷贝某些域,可以在select语句后列出这些域: