【数据库】MySQL学习记录

【数据库】MySQL学习记录

一、安装与配置

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}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

%d 博主赞过: