数据库和表的基本操作
数据库的基本操作
MySQL安装后,系统会自动创建几个必须的数据库,MySQL数据库的系统信息都存在数据库中。若删除这些系统数据库,MySQL就不能正常工作。
1、创建数据库
基本SQL语法格式为:
CREATE DATABASE 数据库名;
数据库命名注意:MySQL命令解释器对大小写不敏感,数据库名无论用户输入的是大写还是小写,MySQL命令解释器都是为小写,但是必须符合操作系统文件夹命名规则。
例如,创建一个名为Bookstore的数据库命令:
CREATE DATABASE Bookstore;
需要查看新建的数据库以及已经存在的数据库使用命令:
SHOW DATABASES;
2、打开数据库
命令:
USE 数据库名;
例如,若要对Bookstore数据库进行操作,可以执行命令:
USE Bookstore;
3、删除数据库
命令:
DROP DATABASE 数据库名;
注意:DROP DATABASE命令必须小心使用,因为它将永久删除指定的整个数据库信息,包括数据库中的所有表和表中的所有数据。
数据表的基本操作
数据表是由多列、多行组成的表格,数据表包括表结构部分和记录部分,是相关数据的集合。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。
1、创建数据库表
数据表属于数据库,在创建数据表之前,应该使用语句“USE 数据库名;”指定操作是在哪个数据库中进行,如果没有选择数据库,就会抛出“No database selected”的错误。
创建表使用CREATE TABLE命令。
语法格式:
CREATE TABLE 表名
(
列名 数据类型 [列级别约束条件] [默认值],
列名 数据类型 [列级别约束条件] [默认值],
......
)ENGINE = 存储引擎;
表名,要创建的表的表名。该表名必须符合标志符规则,如果有MySQL保留字则必须用单引号括起来。
列名,表中列的名宇。列名必须符合标志符规则,长度不能超过 64个字符,而且在表中要唯一。如果有MySQL 保留字则必须用单引号括起来。
数据类型,列的数据类型,有的数据类型需要指明长度n,并用括号括起。
ENGINE= 存储引擎,MySQL 支持数个存储引擎作为对不同表的类型的处理器,使用时要用具体的存储引擎代替存储引擎,如ENGINE=InnoDB。
MySQL 支持的存储引擎有 MyISAM,用来管理非事务表。它提供高速存储和检索以全文搜索能力。
例如,设已经创建了数据库 Bookstore,在该数据库中创建图书目录表 Book。
USE Bookstore;
CREATE TABLE Book
(
ID char(20) NOT NULL PRIMARY KEY,
type varchar(20) NOT NULL DEFAULT 'computer',
name varchar(40) NOT NULL,
author char(10) NOT NULL,
price float(5) NOT NULL,
num int(5)
)ENGINE = InnoDB;
PRIMARY KEY表示将“ID”字段定义为主键。“DEFAULT ‘computer’”表示“type”的默认值为’computer’。 ENGINE=InnoDB 表示采用的存储引擎是 InnoDB, InnoDB是MySQL 在Windows 平合默认的存储引擎,因此 ENGINE=InnoDB 可以省略。
2、修改表
ALTER TABLE用于更改原有表的结构。
向表中增加新列使用ADD[COLUMN]子句。例如,在表t1中增加新的一列a:
ALTER TABLE t1 ADD COLUMN a TINYINT NULL;
ALTER TABLE t1 ADD COLUMN a TINYINT FIRST;/*在表的第一列添加新列*/
ALTER TABLE t1 ADD COLUMN a TINYINT AFTER c;/*在表的指定列c之后添加新列*/
修改列的名称使用CHANGE[COLUMN]子句。重命名时,需给定旧的列名称和新的列名称及数据类型。例如,要把一个INTEGER列的名称从a变更到b:
ALTER TABLE t1 CHANGE a b INTEGER;
修改指定列的类型使用MODIFY[COLUMN]子句。例如,把一个列的数据类型改为bigint:
ALTER TABLE t1 MODIFY b bigint NOT NULL;
删除表中列或约束使用DROP子句。
ALTER TABLE t1 DROP COLUMN a;
修改该表名使用RENAME子句。例如,将表t1改名为t2:
ALTER TABLE t1 RENAME TO t2;
3、复制表
当需要建立的数据库表与已有的数据库表的结构相同时,可以采用复制表的方法复制现有数据库表的结构,也可以复制表的结构和数据。
语法格式:
CREATE TABLE 新表名
[LIKE 参照表名]
|[AS(SELECT语句)]
LIKE, 使用 LIKE 关键宇创建一个与参照表名相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。
AS,使用 AS 关键字可以复制表的内容,但索引和完整性约束是不会复制的。SELECT 语句表示一个表达式,例如,可以是一条 SELECT 语句
假设数据库 Bookstore 中有一个表 Book,创建与 Book 表结构相同的名为book_copy1的拷贝。
CREATE TABLE book _copy1 LIKE Book;
若在复制结构的同时还要复制其数据,需要使用 AS 关键字,使用 SELECT 语句对需要复制的数据进行选择。
创建表 Book 的一个名为book copy2 的副本,并且复制其内容。
CREATE TABLE book_copy2
AS
(SELECT * FROM Book);
4、删除表
需要删除一个表时可以使用 DROP TABLE 语句。
语法格式:
DROP TABLE 表名1[,表名2]…
5、显示数据表信息
显示数据表文件名
SHOW TABLES 命令用于显示已经建立的数据表文件。
语法格式:
SHOW TABLE
例如,显示Bookstore 数据库建立的数据表文件。
USE Bookstore;
SHOW TABLES;
显示数据表结构
DESCRIBE 语句用于显示表中各列的信息,其运行结果等同于 SHOW COLUMNS FROM 语句。
语法格式:
{DESCRIBE | DESC} 表名[列名|通配符]
DESCRIBE | DESC, DESC 是DESCRIBE 的简写,二者用法相同。
列名|通配符,可以是一个列名称,或一个包含%和_的通配符的字符串,用于获得对于带有与字符串相匹配的名称的各列的输出。没有必要在引号中包含字符串,除非其中包含空格或其他特殊字符。
例如,用DESCRIBE 语句查看 Book 表的列的信息。
DESCRIBE Book;
查看 Book 表的ID列的信息。
DESCRIBE Book ID;