CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
ALTER TABLE Persons DROP CHECK chk_Person
对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制
DEFAULT 约束用于向列中插入默认值
City varchar(255) DEFAULT 'Sandnes'
OrderDate date DEFAULT GETDATE()
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
ALTER TABLE Persons ALTER City DROP DEFAULT
CREATE INDEX 语句用于在表中创建索引
CREATE INDEX 索引名称 ON 表名称 (列名称)
CREATE UNIQUE INDEX 索引名称 ON 表名称 (列名称)
CREATE INDEX Index_Pers ON Person (LastName, FirstName)
CREATE INDEX Index_Pers ON Person (LastName DESC)
DROP 语句删除索引、表和数据库
DROP TABLE 表名称
DROP DATABASE 数据库名称
truncate table 表名称(仅仅删除表内容)
ALTER TABLE 表名称 DROP INDEX 索引名称 (MySql)
ALTER TABLE 语句用于在已有的表中添加、修改或删除列
ALTER TABLE 表名 ADD 列名 数据类型
alter table 表名 drop column 列名称
alter table 表名 alter column 列名 数据类型(修改数据类型)
Auto-increment 会在新记录插入表中时生成一个唯一的数字
P_Id int NOT NULL AUTO_INCREMENT,
view 视图 基于SQL语句的结果集的可视化的表
create view 视图名称 as select 列名s from 表名 where 条件
create view [Category Sales For 1997] as select distinct CategoryName, Sum(ProductSales) as CategorySales from [Product Sales for 1997] group by CategoryName
replace view 视图名称 as select 列名s from 表名 where 条件
drop view 视图名称
(MYSQL) Date函数
now() 返回当前的日期和时间
curdate() 返回当前的日期
curtime() 返回当前的时间
date() 提取日期或日期/时间表达式的日期部分
extract() 返回日期/时间按的单独部分
date_add() 给日期添加指定的时间间隔
date_sub 从日期减去指定的时间间隔
datediff() 返回两个日期之间的天数
date_format() 用不同的格式显示日期/时间
(MYSQL) Date数据类型
date - 格式 YYYY-MM-DD
datetime - 格式 YYYY-MM-DD HH:MM:SS
timestamp - 格式 YYYY-MM-DDHH:MM:SS
year - 格式 YYYY 或 YY
NULL值
SELECT LastName,FirstName,Address FROM PersonsWHERE Address IS NULL
SELECT LastName,FirstName,Address FROM PersonsWHERE Address IS NOT NULL
MySQL数据类型
Text类型
char(size) 保存固定长度的字符串,最多255个字符
varchar(size) 保存可变长度的字符串,最多255个字符
tinytext 存放最大长度为255个字符的字符串
text 存放最大长度为65535个字符的字符串
blob 用于BLOBs(Binary Large OBjects), 存放最多65535字节的数据
mediumtext 存放最大长度为16777215个字符的字符串
mediumblob 存放最大长度为16777215个字符的字符串
longtext 存放最大长度为4294967295个字符的字符串
longblob 存放最大长度为4294967295个字符的字符串
enum(x,y,z,etc.) 允许你输入可能值的列表
set 与enum类似,set最多只能包含64个列表项,不过set可存储一个以上的值
Number类型
tinyint(size) -128到127常规。0到255无符号*
smallint(size) -32768到32767常规。0到65535无符号*
mediumint(size) -8388608到8388607常规。0到16777215无符号*
SQL函数
Aggregate函数(合计函数)操作面向一系列的值,并返回一个单一的值。
avg()
select avg(列名) from 表名
select avg(OrderPrice) as OrderAverage from Orders
select Customer from Orders where OrderPrice > (select avg(OrderPrice) from Orders)
count() 返回匹配指定条件的行数
select count(列名) from 表名
select count(Customer) as CustomerNilsen from Orders where Customer='Carter'
select count(*) from 表名
select count(*) as NumberOfOrders from Orders
select count(distinc 列名) from 表名
select count(distinct Customer) as NumberOfCustomers from Orders
first()返回指定的字段中第一个记录的值
select first(列名) from 表名
select first(OrderPrice) as FirstOrderPrice from Orders
last() 返回指定的字段中最后一个记录的值
select last(列名) from 表名
select last(OrderPrice) as LastOrderPrice from Orders
max() 返回一列中的最大值
select max(列名) from 表名
select max(OrderPrice) as LargestOrderPrice from Orders
注:也可用于文本列,以获得按字母顺序排列的最高或最低值
min() 返回一列中的最小值
select min(列名) from 表名
select min(OrderPrice) as SmallestOrderPrice from Orders
sum() 返回数值列的总数(总额)
select sum(列名) from 表名
select sum(OrderPrice) as OrderTotal from Orders
合计函数需要添加group by语句
select 列名, 合计函数(列名) from 表名 where 列的计算值 group by 列名
select Customer, sum(OrderPrice) from Orders group by Customer
having子句
where关键字无法与合计函数一起使用
select 列名,合计函数(列名) from 表名 where 列的计算值 group by 列名 having 合计函数(列名)的计算值
select Customer, sum(OrderPrice) from Orders group by Customer having sum(OrderPrice)<2000
select Customer, sum(OrderPrice) from Orders where Customer='Bush' or 'Adams' group by Customer having sum(OrderPrice)>1500
Scalar函数操作面向某个单一的值,并返回基于输入值的一个单一的值。
ucase()函数 把字段的值转换为大写
select ucase(列名) from 表名
select ucase(LastName) as LastName, FirstName from Persons