/*
约束
primary key
主键,拥有自定义的UNIQUE约束
not null
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
unique 不能重复
UIIQUE约束唯一标识数据库表中的每一条数据记录
当表已经创建以后添加UNIQUE约束的方法:
ALTER TABLE Person
ADD UNIQUE (id_p)
删除UNIQUE约束的方法:
ALTER TABLE Person
DROP INDEX id_p
foreing key 该字段做完另一个表的主键,联表查询
外键
下面的 SQL 在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY:
MySQL:
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
check 该字段数据必须满足一定条件
default 该字段数据可以给默认值
id_P int NOT NULL DEFAULT '10'
在表已经有的情况下
ALTER TABLE Persons
ALTER City SET DEFAULT 'ShangHai'
撤销约束
ALTER TABLE Persons
ALTER City DROP DEFAULT
autoincrement 如果该字段数据是整型就会自动加一
MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT=10
排序
order 默认是正序 加desc的倒序,asc是属正序
eq:SELECT Company, OrderNumber FROM orders ORDER By Company DESC, OrderNumber ASC;
插入
insert into
INSERT INTO 表名称 VALUES (值1, 值2,....)
//指定某些列中插入数据
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
更新
Update
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
删除
用于删除表中的行
DELETE FROM 表名称 WHERE 列名称 = 值
Top 选取前多少的数据
SELECT TOP 2 * FROM table_name;//选取表中前2个数据
SELECT TOP 50 PERCENT *FROM Persons//选取表中前50%的数据
LIKE
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
SELECT * FROM Persons WHERE City LIKE '%g'// 找出以“g”结尾的城市里的人
SELECT * FROM Persons WHERE City LIKE 'g%'// 找出以“g”开头的城市里的人
SELECT * FROM Persons WHERE City LIKE '%g%'// 找出城市名字中带有g的人
通配符
1、_
接下来,我们希望从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":
SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'
2、[]
现在,我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
IN操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
BETWEEN操作符
BETWEEN AND
如需以字母顺序显示介于 "Adams"(包括)和 "Carter"(不包括)之间的人,请使用下面的 SQL:
SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
NOT BETWEEN AND 在这个范围之外
SQL Alias(别名)
通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
SQL Alias
表的 SQL Alias 语法
SELECT column_name(s)
FROM table_name
AS alias_name
列的 SQL Alias 语法
SELECT column_name AS alias_name
FROM table_name
JOIN
SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
第一种方法
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P
不用join,直接判断Persond主键等于Orders的副键两个键名一样
第二种方法
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN
ON Persons.Id_P = Orders.Id_P
用 INNER JOIN(内连接)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
INTO 备份 制作附件
下面的例子会制作 "Persons" 表的备份复件:
SELECT *
INTO Persons_backup
FROM Persons
IN 子句可用于向另一个数据库中拷贝表:
SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons
如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:
SELECT LastName,FirstName
INTO Persons_backup
FROM Persons
SQL SELECT INTO 实例 - 被连接的表
从一个以上的表中选取数据也是可以做到的。
下面的例子会创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息:
SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
创建数据库
CREATER BATABASE my_dataDase
创建数据库表
CREATER TABLE
eq:
本例演示如何创建名为 "Person" 的表。
该表包含 5 个列,列名分别是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City":
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。
CREATE INDEX语句
DROP语句
DROP TABLE 表名称
DROP DATABASE 数据库名
如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?
请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):
TRUNCATE TABLE 表名称
VIEW 视图是可视化的表
视图是可视化的表
SQL CREATE VIEW 语法
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
Date
NULL
如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
注释:无法比较 NULL 和 0;它们是不等价的。
我们如何仅仅选取在 "Address" 列中带有 NULL 值的记录呢?
我们必须使用 IS NULL 操作符:
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
如果两个数相加如果其中一个是NULL 那么结果也是NULL,不过可以用函数解决
函数Group By
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。相当于WHERE关键字
UCASE() 函数
UCASE 函数把字段的值转换为大写。
LCASE() 函数
LCASE 函数把字段的值转换为小写。
MID() 函数
MID 函数用于从文本字段中提取字符。
SQL MID() 语法
SELECT MID(column_name,start[,length]) FROM table_name
参数 描述
column_name 必需。要提取字符的字段。
start 必需。规定开始位置(起始值是 1)。
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
LEN() 函数
LEN 函数返回文本字段中值的长度。
ROUND() 函数
ROUND 函数用于把数值字段舍入为指定的小数位数。
SQL ROUND() 语法
SELECT ROUND(column_name,decimals) FROM table_name
参数
*/