mysql数据库的基本知识点

来源:互联网 发布:oracle 数据库备份 编辑:程序博客网 时间:2024/06/05 07:14

一、数据库表

1.删除表中的列

支持删除多个列,只需要在DROP COLUMN 关键字后面依次列出删除的列的名字,中间用逗号分割
语法:
ALTER TABLE table_name(表名)
DROP COLUMN column_name1(列名),column_name2(列名2)

2.修改列

主要包括字符长度限制的修改和非空约束的限制或取消
语法:
ALTER TABLE table_name(表名)
MODIFY column_name(列名) data_type(数据条件)
注意:
  1)SQL Sserver数据库,不支持MODIFY关键字。要修改数据库的列,可通过ALTER COLUMN,即将MODIFY替换为ALTER COLUMN即可
  2)修改表中的某列,为其增加非空约束时,要确保该列已经存在的所有记录中没有NULL值。
例如:将学生表(student)中Email列的最大字符数有15增加到25,并取消非空约束
ALTER TABLE student 
MODIFY Email CHAR(25) NULL(或者是 NOT NULL)

3.删除表

即删除表中的数据,也删除表的结构
语法:
DROP TABLE table_name(表名)
注意:
  当表与其他的表存在关联关系时,一些DBMS会不予许用户通过DROP TABLE语句来删除该表,只有这种关联关系被删除以后,才能删除该表

4.删除数据库

语法:
DROP DATABASE datebase_name1,datebase_name2...(多个以逗号分割)
注意:
  如果该数据库正在使用,使用DROP DATABASE语句删除数据库操作就会失败。

二、索引

1.索引的概念

一个表的存储有两部分组成,一部分用来存放表的数据页面,另一部分存放索引页面,索引就存放在索引页面上。通常,索引页面相对数据页面来说小得多。当进行数据检索

时,系统先搜索索引页面,从中找到所需要数据的指针,在通过指针从数据页面中读取数据。

2.索引的分类

按照存储结构的不同,可以分为簇索引和非簇索引

(1)簇索引
簇索引对表的数量数据页中数据按列进行排序,然后在重新存储到磁盘上,即簇索引与数据是混为一体的,它的叶节点中存储的是实际的数据。

优缺点:簇索引对表的数据一一进行了排序,因此用簇索引查找数据很快,但由于簇索引将表的所有数据完全重新排列了,所需要的空间也就特别大,大概相当于表中数据所占
空间的120%。
注意:表的数据行只能以一种排序方式存储在磁盘上,所有一个表只能有一个簇索引

(2)非簇索引
非簇索引具有与表的数据完全分离的结构,使用非簇索引不必将物理数据页中的数据按列排序。非簇索引的叶节点中存储了关键字的值和行定位器,非簇索引将行定位器按关键
子进行排序,这个顺序与表的行在数据页中的排序是不匹配的。

优缺点:由于非簇索引使用索引页存储,比簇索引需要更多的存储空间,且检索效率较低。但是一个表只能建一个簇索引,当用户需要建立多个索引时,就需要使用非簇索引了。

总结:行定位器的结构和存储内容取决于数据的存储方式,如果数据是以簇索引方式存储的,则行定位器中存储的是簇索引的索引建;如果数据不是以簇索引方式存储的,则行定为器存储的是指向数据行的指针,这种方式又称为堆存储方式。

3.索引的创建

创建索引的基本关键字为CREATE INDEX,在其后要指明创建索引的名称,并需要指明表的名字和创建索引的列。
语法为:
CREATE INDEX index_name(索引名字)
ON table_name(columm_name1,[column_name2],...)
每个索引必须有唯一的名字。ON关键字后面为创建索引的表的名字,可以有包含多个列。

4.非簇索引的使用

可以不让SQL Server的查询优化器自动决定索引,而是强制使用某种索引,语法如下:
SELCT column1,column2,......
FROM table_name
WITH (INDEX) (index_name))
WHERE condition

比如:
先创建一个索引
CREATES INDEX Name_Index
ON StudentInfo (sname)
查询学生信息表(StudentInfo)
SELECT *
FORM StudentInfo
WITH (INDEX (Name_Index))
可以发现数据按照sname字段升序的方向重新排列,因为这里强制使用了Name_Index索引,sname字段是按照记录升序的方向排序的。

5.索引的销毁

无论是簇集索引还是非簇集索引都可以通过DROP INDEX关键字销毁。
语法:
DROP INDEX index_name(索引的名字)

总结:1)索引提高了数据检索的速度,但也降低了数据更新的速度。如果要对表中的数据进行大量更新,我们最好先销毁索引,等数据更新完毕在创建索引,这样会提高效率

三、视图

1.视图的概念

视图是从一个或多个表中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图可是包括几个被数据列和多个数据行,视图不是真实存在的基础表,而是一张

虚表。

优点:简化操作、定制数据、合并分割数据、安全性等方面。

2.视图的创建

CREATE VIEW view_name [(column1,column2.....)]
AS 
SELECT column_name(列名)
FORM table_name(表名)
[(column1,column2....)]为可选项,缺省时,为子查询结果中的字段名。

例如:创建一个与StudengInfo表具有相同信息的视图StudentInfo_View
CREATE VIEW StudentInfo_View
AS
SELECT * FROM StudentInfo
查看视图的数据
SELECT *
FROM StudentInfo_View

注意:由于视图是一个虚表,当表被删除时,有该表创建的视图或者视图的视图都不用。

3.视图的销毁

可以通过DROP VIEW 关键字销毁创建的视图
语法:DROP VIEW view_name(视图的名字)
删除视图时,删除的也只是视图的定义,对表的数据并没有任何影响。

四、sql查询

1.BETWEEN 运算符范围筛选

BETWEEN A1 AND A2,满足查询的结果是A1到A2之间的信息,并且包含A1和A2.

2.NULL值

判断列中值是否为NULL,只能通过IS [NOT] NULL运算符
比如:判断工资不为NULL,我们只能表示成“SAL IS NOT NULL”,不可以写成“SAL <> NULL” 或者“SAL !=NULL”

3.OR和ADN

优先级:ADN的优先级大于OR,而括号“()”的优先级高于AND

五.sql插入

1.使用SELECT语句插入值

用途:备份表
语法:
INSERT INTO table_name
(column1,column2,.....)
SELECT column1,column2,....
FROM table_name2

2.表中数据的复制

通过INSERT.....SELECT,可以从其它表中 选择记录插入到新表中,但前提是新表在插入前已经创建完成,而在sql中,可以通过SELECT...INTO语句直接将表中的数据复制到新表,而且该新表不需要预先创建。
语法:
SELECT column1,column2,......
INTO new_table
FORM table_name
WHERE search_condition
先创建表new_table,而后将表table_name中满足search_condition条件的列的字段和数据复制到表new_table中。
WHERE search_condition

Oracle语法
CREATE TABLE new_table
AS
SELECT column1,column2,....
FROM table_name
WHERE search_condition
原创粉丝点击