MySql学习笔记

  1. 创建数据库
    (1)用法:
    CREATE DATABASE test_db;
    注意:MySQL 不允许在同一系统创建两个相同名称的数据库,会出现错误。
    (2)加上IF NOT EXISTS从句,则可以避免类似错误
    CREATE DATABASE IF NOT EXISTS test_db;
    (3)创建数据库时指定字符集和校对规则

  2. 查看数据库
    (1)用法:
    SHOW DATABASES [LIKE ‘数据库名’];
    其中:
    》LIKE是可选项,用于匹配指定的数据库的名称,LIKE从句可以部分匹配,也可以全局匹配
    》数据库名用’’ 包围
    example:显示以名字为test开头的数据库
    SHOW DATABASES LIKE ‘test%’;

  3. 修改数据库–数据库创建好也是可以修改的
    (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

  4. 删除数据库
    (1)用法:
    DROP DATABASE [ IF EXISTS ] <数据库名>;
    其中:
    》IF EXISTS:用于防止当数据库不存在时发生错误。
    》DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。
    (2)注意:MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

  5. 选择数据库
    当创建一个新的数据库后,该数据库不会自动成为当前使用的数据库。使用USE语句可以在数据库之间来回跳转。
    (1)用法:
    USE <数据库名>;
    只有使用 USE 语句来指定某个数据库作为当前数据库之后,才能对该数据库及其存储的数据对象执行操作。

  6. 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 引擎。

  7. 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。

  8. 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

  9. 修改数据表
    (1)用法:
    ALTER TABLE <表名> [修改选项]
    其中:
    修改选项包括:
    》添加字段-- ADD COLUMN <行名> <类型>
    》修改字段名称–CHANGE COLUMN <旧行名> <新行名> <新列类型>
    》修改表名–ALTER TABLE <旧表名> RENAME [TO] <新表名> 其中TO 为可选参数,使用与否均不影响结果
    》修改字段数据类型–MODIFY <字段名> <数据类型>
    》删除字段–DROP <字段名>

  10. 删除数据表
    (1)用法:
    DROP TABLE [IF EXISTS] <表名> [ , <表名1> , <表名2>] …
    其中:
    》DROP TABLE 语句可以同时删除多个表,用户必须拥有该命令的权限。
    》表被删除时,所有的表数据和表定义会被取消,所以使用本语句要小心。
    》参数IF EXISTS用于在删除前判断删除的表是否存在,加上该参数后,在删除表的时候,如果表不存在,SQL 语句可以顺利执行,但会发出警告(warning)。

  11. 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(<列名>);

  12. 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 <外键约束名>;
    对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系

  13. 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 <唯一约束名>;

你可能感兴趣的:(git)