sql create index
在表中创建索引,可以在不提取整个表的前提下通过索引可以查找数据
在表中创建索引,用户是看不到的,值得注意的是,带有索引的表更新的时间是长于不带索引的表的,因为索引也需要更新,因此在实际使用时,我们一般给需要经常查找的列创建索引
CREATE INDEX index_name
ON table_name (column_name)
columm_name指需要索引的列,上面的写法指相同的两列可以使用相同的索引,在括号内用逗号隔开即可,当某列需要唯一的索引值时
写法如下
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
DESC在此处的应用,若希望以降序索引某列的值,则将DESC关键字放在有索引的列后面
CREATE INDEX PersonIndex
ON Person (LastName DESC)
sql drop
drop语句用于撤销,可以撤销索引,表以及数据库
- 删除表中的索引
ALTER TABLE table_name DROP INDEX index_name
不同数据库语法不太相同,注意区分
- 删除表,此时表中的数据和表的结构都会被删除
DROP TABLE 表名称
- 仅仅删除表中的数据,但是不删除表的结构
TRUNCATE TABLE 表名称
- 删除数据库
DROP DATABASE 数据库名称
sql alter table
该语句用于在已有的表中,删除,更新,添加列,还蛮常用的
- 在表中添加列
ALTER TABLE table_name
ADD column_name datatype
- 删除表中的某列
ALTER TABLE table_name
DROP COLUMN column_name
某些数据库不支持在表中删除列的操作,要注意区分
- 改变表中列的数据类型
ALTER TABLE table_name
ALTER COLUMN column_name datatype
sql auto increment
auto increment会在有新数据插入表中时生成一个唯一的数字
如果我们希望在插入新值时,自动的创建主键字段的值,此时可以在表中创建一个auto-increment字段
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
把persons表中的p_Id列定义为auto-increment主键
mysql使用auto-increment关键字来执行auto-increment任务,默认情况下auto-increment的开始值为1,每条记录递增1,如果需要改变开始值,则要定义开始值
ALTER TABLE Persons AUTO_INCREMENT=100
sql view
view意味视图,指可视化的表,如何创建,删除和更新视图呢,视图是基于sql语句的结果集的可视化的表
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
如
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
查询该视图的方法
SELECT * FROM [Current Product List]
更新视图,向视图current product list中添加category列
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
撤销视图,依然使用drop语句
SQL DROP VIEW Syntax
DROP VIEW view_name
sql date
当表中设计日期时间时,格式就会变得比较复杂,易出错
数据库中包含内建的日期处理函数
以mysql为例
now() 返回当前的日期和时间
curdate() 返回当前的日期
curtime() 返回当前的时间
date() 提取日期或日期与时间表达式的日期部分
extract() 返回日期时间的单独部分
date_add() 给日期添加指定的时间间隔
date_sub() 给日期减去指定的时间间隔
datediff() 返回两个日期之间的天数
date_format() 用不同的格式显示日期
使用下列数据类型在数据库中存储日期或时间值
DATE - 格式 YYYY-MM-DD
DATETIME - 格式: YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
YEAR - 格式 YYYY 或 YY
其实,日期相对来说是比较简单的,如果不涉及时间,日期的比较是比较清晰的
sql nulls
null值是遗漏的未知数据
NULL 用作未知的或不适用的值的占位符
无法比较 NULL 和 0;它们是不等价的
比如一个表中有若干列,在插入新的值时,不向该列插入数据,则该列以null值保存
null值是无法使用比较操作符的,< , >号等
此时为了测试null值得操作符是is null 和is not null
选取某个表中某列中带有null值的记录,写法为
SELECT LastName,FirstName,Address FROM Persons
WHERE Address IS NULL
相同的,若选择不带有null 值的记录,将is null 写为is not null
sql的数据类型
以mysql为例,数据类型分为文本,数字,日期/时间类型
数据类型