-
创建数据库
(1)用法:
CREATE DATABASE test_db;
注意:MySQL 不允许在同一系统创建两个相同名称的数据库,会出现错误。
(2)加上IF NOT EXISTS从句,则可以避免类似错误
CREATE DATABASE IF NOT EXISTS test_db;
(3)创建数据库时指定字符集和校对规则 -
查看数据库
(1)用法:
SHOW DATABASES [LIKE ‘数据库名’];
其中:
》LIKE是可选项,用于匹配指定的数据库的名称,LIKE从句可以部分匹配,也可以全局匹配
》数据库名用’’ 包围
example:显示以名字为test开头的数据库
SHOW DATABASES LIKE ‘test%’; -
修改数据库–数据库创建好也是可以修改的
(1)用法:
ALTER DATABASE [数据库名] { [ DEFAULT ] CHARACTER SET <字符集名> |[ DEFAULT ] COLLATE <校对规则名>}
其中:
》ALTER DATABASE 用于更改数据库的全局特性。这些特性存储在数据库目录的 db.opt 文件中。
》使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
》数据库名称可以忽略,此时语句对应于默认数据库。
》CHARACTER SET 子句用于更改默认的数据库字符集。
(2)修改数据库的字符集
CREATE DATABASE test_db
-> DEFAULT CHARACTER SET gb2312
-> DEFAULT COLLATE gb2312_chinese_ci; # 更改默认的数据库字符集为gb2312 -
删除数据库
(1)用法:
DROP DATABASE [ IF EXISTS ] <数据库名>;
其中:
》IF EXISTS:用于防止当数据库不存在时发生错误。
》DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。
(2)注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。 -
选择数据库
当创建一个新的数据库后,该数据库不会自动成为当前使用的数据库。使用USE语句可以在数据库之间来回跳转。
(1)用法:
USE <数据库名>;
只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。 -
mysql存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。
不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
(1)MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM 拥有较高的插入、查询速度,但不支持事务。
InnoDB 作为默认存储引擎,支持事务安全表(ACID),支持行锁定和外键。
MEMORY 存储引擎将表中的数据存储到内存中,为查询和引用其他数据提供快速访问。
(2)使用 SHOW ENGINES 来显示可用的数据库引擎
(3)使用 SET default_storage_engine = <存储引擎名> 来改变数据库临时的默认存储引擎
(4)可以根据以下的原则来选择mysql存储引擎:
a:如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择
b:如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
c:如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎作为临时表,存放查询的中间结果。
d:如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,
如记录日志信息可以使用 Archive 引擎。 -
mysql数据类型
数据类型(data_type)是指系统中所允许的数据的类型。
(1)整数类型(数值类型)
包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型 FLOAT 和 DOUBLE,定点数类型 DECIMAL。
浮点类型和定点类型都可以用(M, D)来表示,其中M称为精度,表示总共的位数;D称为标度,表示小数的位数。(2)日期/时间类型
包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
(3)字符串类型
包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。
(4)二进制类型
包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。 -
mysql创建数据表
所谓创建数据表,指的是在已经创建的数据库中建立新表。
(1)用法:
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
其中:
》[表定义选项]的格式为:
<列名> <类型1> [,…] <列名n> <类型n>
》要创建的表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。
》数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开
》<表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
》数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。
(2)查看表结构:
DESCRIBE <表名>;
(3)查看表的详细信息
SHOW CREATE TABLE <表名>\G -
修改数据表
(1)用法:
ALTER TABLE <表名> [修改选项]
其中:
修改选项包括:
》添加字段-- ADD COLUMN <行名> <类型>
》修改字段名称–CHANGE COLUMN <旧行名> <新行名> <新列类型>
》修改表名–ALTER TABLE <旧表名> RENAME [TO] <新表名> 其中TO 为可选参数,使用与否均不影响结果
》修改字段数据类型–MODIFY <字段名> <数据类型>
》删除字段–DROP <字段名> -
删除数据表
(1)用法:
DROP TABLE [IF EXISTS] <表名> [ , <表名1> , <表名2>] …
其中:
》DROP TABLE 语句可以同时删除多个表,用户必须拥有该命令的权限。
》表被删除时,所有的表数据和表定义会被取消,所以使用本语句要小心。
》参数IF EXISTS用于在删除前判断删除的表是否存在,加上该参数后,在删除表的时候,如果表不存在,SQL 语句可以顺利执行,但会发出警告(warning)。 -
mysql主键(PRIMARY KEY )
mysql主键是一个列或者列的组合,其值能唯一地标识表中的每一行
(1)选取设置主键约束的字段
主键应该遵守下面的规则:
》每个表只能定义一个主键
》主键值必须唯一标识表的每一行,不能为空
》一个列名只能在复合主键列表中出现一次
》复合主键不能包含不必要的多余列,当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则
(2)在创建表时设置主键约束
a:在定义列的同时指定主键,用法如下:
<字段名> <数据类型> PRIMARY KEY [默认值];b:当定义完所有列之后,指定主键的语法为: [CONSTRAINT <约束名>] PRIMARY KEY [字段名]
(3)创建表时设置复合主键–主键是由多个字段联合组成
用法:
PRIMARY KEY [字段1,字段2,…,字段n](4)在修改表时添加主键约束
用法:
ALTER TABLE <数据表名> ADD PRIMARY KEY(<列名>); -
mysql外键约束(FOREIGN KEY)
外键约束用来在两个表的数据之间建立链接,他可以是一列或者多列,一个表可以有一个或多个外键
(1)选取设置 MySQL 外键约束的字段
定义外键时需要遵守的规则:
》父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
》必须为父表定义主键
》主键不能包含空值,允许外键出现空值。主要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
》在父表的表名后面指定列名或列名的组合,这个列或列的组合必须是父表的主键或候选键。
》外键中的列的数目必须和父表中列的数目相同、
》外键中列的数据类型必须和父表主键中对应列的数据类型相同、(2)在创建表时设置外键约束
用法:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
其中:
》外键名为定义的外键约束的名称,一个表中不能有相同名称的外键
》字段名表示字表需要添加外键约束的字段列
》主表名:被字表外键所依赖的表的名称
》主键列表示主表中定义的主键列或者列组合
(3)在修改表时添加外键约束
用法:
ALTER TABLE <数据表名> ADD CONSTRAINT <索引名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);(4)删除外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系 -
mysql唯一约束(UNIQUE KEY)
MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。(1)在创建表时设置唯一约束
用法:
<字段名> <数据类型> UNIQUE注意:UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。
(2)修改表时添加唯一约束
用法:
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);(3)删除唯一约束:
ALTER TABLE <表名> DROP INDEX <唯一约束名>;