MySQL学习日记

MySQL学习日记

Time:2018.3.29 01:34


一、安装与配置

MySQL下载地址:点击打开

设置向导文件位于C:/Program Files/MySQL/bin/MySQLInstanceConfig.exe
可以用它来对MySQL进行一些设置

MySQL默认端口号:3306
MySQL中超级用户:root

MySQL配置文件

编辑数据表的默认存储引擎
default-storage-engine=INNODB

二、常用命令

SELECT VERSION(); // 用于显示当前服务器版本
SELECT NOW(); // 用于显示当前日期时间
SELECT USER(); //用于显示当前用户


三、语句规范

  • 关键字与函数名称全部大写
  • 数据库名称、表名称、字段名称全部小写
  • SQL语句必须以分号结尾

四、数据库操作

  • 创建数据库: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;
  • 查看当前服务器下的数据表列表: SHOW {DATABASES | SCHEMAS} [LIKE ‘pattern’ | WHERE expr];
  • 查看数据库的创建语句:SHOW CREATE {DATABASE | SCHEMAS} db_name;
  • 修改数据库:ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;
  • 删除数据库:DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;

五、数据类型

  • 数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
整型
     TINYINT     1个字节
     SMALLINT    2个字节
     MEDIUMINT   3个字节
     INT         4个字节
     BIGINT      8个字节
浮点型
    FLOAT
    DOUBLE
日期时间型
    YEAR
    TIME
    DATE
    DATETIME
    TIMESTAMP
字符型
    CHAR(M)        M字节        定长类型,不足补齐
    VARCHAR(M)     L+1个字节    变长类型
    TINYTEXT       L+1个字节    L<2^8
    TEXT           L+2个字节    L<2^16
    MEDIUMTEXT     L+3个字节    L<2^24
    LONGTEXT       L+4个字节    L<2^32
    ENUM('value1','value2',...)   1或者2个字节,取决于枚举值个数   
    SET('value1','value2',...)    1,2,3,4或8个字节,取决于set成员数目

六、创建数据表

  • 数据表(或称表)是数据库最重要的组成成分之一,是其他对象的基础
USE命令
 - 打开数据库
 - USE 数据库名称;
创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
   column_name data_type,
   ...
);
自动编号

AUTO_INCREMENT

 - 自动编号,且必须与主键组合使用(自动编号的一定要为主键)
 - 默认情况下,初始值为1,每次增加1

七、约束

  • 约束保证数据的完整性和一致性。
  • 约束分为表级约束和列级约束。
  • 在创建数据表时跟在数据的类型后。
  • 约束类型包括
    • NOT NULL(非空约束)
    • PRIMARY KEY(主键约束)
    • UNIQUE KEY(唯一约束)
    • DEFAULT(默认约束)
    • FOREIGN KEY(外键约束)
非空约束

NULL / NOT NULL

- NULL,字段值可以为空
- NOT NULL,字段值禁止为空
- 类似UNSIGNED的用法,在后面写
主键约束

PRIMARY KEY

 - 主键约束
 - 每张数据表只能有一个主键
 - 主键保证记录的唯一性(值不允许相同)
 - 主键自动为NOT NULL
唯一约束

UNIQUE KEY

 - 唯一约束
 - 唯一约束可保证记录的唯一性
 - 唯一约束的字段可以为空值(NULL)
 - 每张数据表可以存在多个唯一约束
默认约束

DEFAULT

 - 默认值
 - 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
 - 后面紧跟默认值
外键约束

FOREIGN KEY

保持数据一致性,完整性
实现一对一或一对多关系

外键约束的要求
1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2. 数据表的存储引擎只能为InnoDB。
3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

外键约束的参照操作
1. CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行
2. SET NULL: 从父表删除或更新行,并设置子表的外键列为NULL,如果使用该选项,必须保证子表没有指定NOT NULL
3. RESTRICT: 拒绝对父表的删除或更新操作
4. NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同
表级与列级约束

对一个数据列建立的约束,称为列级约束
对多个数据列建立的约束,称为表级约束
列级约束既可以在列定义时声明,也可以在列定义后声明
表级约束只能在列定义后声明


八、查看数据表

SHOW TABLES
 - 查看数据表列表
 - SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr];
SHOW COLUMNS
- 查看数据表结构
- SHOW COLUMNS FROM tbl_name;

九、操作数据表

INSERT
 - 插入记录
 - INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...);
SELECT
 - 记录查找
 - SELECT expr,...FROM tbl_name;
修改列
添加一列
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];
添加多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...);
删除列
ALTER TABLE tbl_name DROP [COLUMN] col_name; 
(要删除多列的话,在后面加,DROP [COLUMN] col_name,...)
添加约束
添加主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...);
添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]  [index_name] [index_type] (index_col_name,...);
添加外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition;
添加/删除默认约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

你可能感兴趣的:(MySQL)