MySQL学习笔记

MySQL学习笔记

一、基本操作

  • 启动服务 net start mysql
  • 登录 mysql -u username -p password
  • 展示所有数据库 SHOW DATABASES;
  • 展示创建的某个数据库的所有信息 SHOW CREATE DATABASE name;
  • 创建数据库并设置字符集 CREATE DATABASE name [CHARACTER SET utf8];
  • 修改数据库 ALTER DATABASE;
  • 展示错误信息 SHOW WARNINGS;
  • 删除数据库 DROP DATABASE name;

二、数据类型

1、整型

  • TINYINT0 1
  • SMALLINT 2
  • MEDIUMINT 3
  • INT 4
  • BIGINT 8
    2、浮点型
  • FLOAT(M,D)
  • DOUBLE(M,D)
    3、日期时间型
  • YEAR
  • TIME
  • DATA
  • DATATIME
  • TIMESTAMP
    4、字符型
  • CHAR(M)
  • VARCHAR(M)
  • TINYTEXT
  • TEXT
  • MEDIUMTEXT
  • LONGTEXT
  • ENUM(VALUE1,VALUE2…)
  • SET(VALUE1,VALUE2…)

三、基本数据表操作

  • 打开数据库 USE name;
  • 创建数据表 CREATE TABLE table_name(column_name data_type,...,...);
  • 查看数据表列表 SHOW TABLES [FROM db_name];
  • 查看数据表结构 SHOW COLUMNS FROM tbl_name;
  • 记录的插入 INSERT tbl_name[col_name,col_name,...] VALUES(value,...);
  • 记录的查找 SELECT expr,... FROM tbl_name;
  • 非空约束 NULL,NOT NULL
  • AUTO_INCREMENT 自动编号,且必须和主键一起使用
  • PRIMARY KEY 主键约束,保证记录的唯一性,每张数据表只能存在一个主键,主键自动为NOT NULL
  • UNIQUE KEY 唯一约束,保证记录的唯一性,可存在多个唯一约束;字段可为空
  • DEFAULT 设置字段默认值

四、约束

  • FOREIGN KEY...REFERENCES... 外键约束,保持数据一致性、完整性;实现一对一或一对多的关系
  • 外键约束的一些要求:
    • 父表和子表必须使用相同的存储引擎,禁止临时表
    • 存储引擎必须为InnoDB
    • 外键列和参照列必须具有相同的数据类型。其中数字的长度和符号位必须相同,而字符长度可以不同
    • 外键列和参照列必须创建索引。若外键列不存在索引,MySQL会自动创建
  • 外键约束的参考操作:
    • CASCADE
    • SET NULL
    • RESTRICT
    • NO ACTION
  • DELETE FROM tbl_name WHERE 条件 删除记录

五、修改数据表

  • 添加单列 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
  • 添加主键约束 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}
  • 删除主键约束 ALTER TABLE tbl_name DROP PRIMARY KEY
  • 删除唯一约束 ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
  • 删除外键约束 ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
  • 修改列定义 ALTER TABLE tbl_name MODIFY [COLUMN] col_name col_defination [FRIST|AFTER col_name]
  • 修改列名称 ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
  • 数据表更名
    • ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
    • RENAME TABLE old_tbl_name TO new_tbl_name [,old_tbl_name2 TO new_tbl_name2]

六、修改记录

  • 插入记录
    • INSERT tbl_name [(col_name)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...
    • INSERT tbl_name SET col_name={expr|DEFAULT},...可以使用子查询
    • INSERT tbl_name [(col_name),...] SELECT ...将查询结果直接插入到指定数据表
  • 更新记录
    • 单表更新 UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
    • 多表更新 UPDATE table_reference SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
      • 连接的语法结构 table_reference {[INNER|CROSS] JOIN | {LEFT|RUGHT} [OUTER] JOIN} table_reference ON condition_expr
      • 一步到位的多表更新 CREATE...SELECT
  • 删除记录
    • 单表删除 DELETE FROM tbl_name [WHERE where_condition]
    • 多表删除
  • 条件查询 WHERE
  • 查询结果分组 GROUP BY {col_name|position} [ASC|DESC]
  • 分组条件 HAVING where_condition
  • 查询结果排序 ORDER BY {col_name|expr|position} [ASC|DESV],...
  • 限制结果返回的数量 LIMIT

七、子查询

  • 子查询是指在另一个查询语句中的SELECT子句
  • 使用比较运算符的子查询
    • 用ANY、SOME、ALL修饰的比较运算符
  • 使用[NOT]IN的子查询
    • =ANY与IN等效
    • !=ALL或<>ALL与NOT IN等效
  • 使用[NOT]EXISTS的子查询

八、连接

  • MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作
  • 语法结构 table_reference {[INNER|CROSS] JOIN | {LEFT|RUGHT} [OUTER] JOIN} table_reference ON condition_expr
  • 连接类型
    • INENR JOIN 内连接,仅显示左表及右表符合连接条件的记录
    • LEFT [OUTER] JOIN 左外连接,显示左表的全部记录及右表符合连接条件的记录
    • RIGHT [OUTER] JOIN 右外连接,
  • 连接条件
    • ON
    • WHERE
  • 多表连接(等值连接)
  • 无限极分类表设计
    • 自身连接 同一个数据表对其自身进行连接

笔记整理来源于慕课网 与MySQL的零距离接触