MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)

文章目录

  • 2.数据库的基本操作(DDL) 总览
  • MySQL基础学习笔记思维导图
  • 重难点问题总结
    • 1. database基本操作
      • 1.1 启动和连接数据库
      • 1.2 增删改查database
    • 2. table基本操作
      • 2.1 增删改查table
      • 2.2 创建表,定义字段、属性
        • (1) 实例
        • (2) 注释格式
        • (3) 从文件中直接导入表
        • (4)表类型选择和字符集编码设置
      • 2.3 修改表(alter)
    • 3. 列的属性
      • 3.1 数据类型:
        • (1)数值类型
        • (2)字符串
        • (3)日期和时间型数值类型
        • (4)NUll值
      • 3.2 字段约束属性:
        • (1)NULL 和 NOT NULL
        • (2)**Auto_InCrement**
        • (3)unique
        • (4)primary key
        • (5)foreign key
        • (6)其他约束
    • 4. 数据库储存引擎的选取
      • 4.1 table的类型和储存位置
        • (1)储存引擎的选择
        • (2)数据表的存储位置

2.数据库的基本操作(DDL) 总览

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第1张图片

MySQL基础学习笔记思维导图

笔记链接

参考狂神说MySQL教程笔记

参考尚硅谷MySQL教程笔记

重难点问题总结

1. database基本操作

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第2张图片

  • 操作数据库的sql语言不区分大小写

1.1 启动和连接数据库

net start mysql
net stop mysql
mysql -u root - p

1.2 增删改查database

create database db_name;
drop database IF EXISTS db_naem;
show databases;
use db_name; /* 指定要操作哪一个数据库*/
  • 可视化SQLyog操作:

    MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第3张图片

2. table基本操作

2.1 增删改查table

create tabel t_name;
drop table t_name;
show tables; /* 查看有哪些表*/
desc t_name; /* 查看表的结构,字段属性*/
select * from t_name; /* 查看表的内容*/

2.2 创建表,定义字段、属性

(1) 实例

DROP TABLE IF EXISTS `discuss_post`;
CREATE TABLE `discuss_post` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` varchar(45) DEFAULT NULL,
  `title` varchar(100) DEFAULT NULL,
  `content` text,
  `type` int(11) DEFAULT NULL COMMENT '0-普通; 1-置顶;',
  `status` int(11) DEFAULT NULL COMMENT '0-正常; 1-精华; 2-拉黑;',
  `create_time` timestamp NULL DEFAULT NULL,
  `comment_count` int(11) DEFAULT NULL,
  `score` double DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

(2) 注释格式

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */
COMMENT '0-正常; 1-精华; 2-拉黑;' -- 在列的属性中注释

(3) 从文件中直接导入表

\ ? -- 会显示所有操作文件的快捷方式
\. tb_file.sql
source tb_file.sql

(4)表类型选择和字符集编码设置

CREATE TABLE `discuss_post` (
  ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 注意不是utf-8

2.3 修改表(alter)

  • 修改表名 :
ALTER TABLE 旧表名 RENAME AS 新表名
  • 添加字段 :
ALTER TABLE 表名 ADD 字段名 列属性
  • 修改字段 :
ALTER TABLE 表名 MODIFY 字段名 列类型  -- 修改约束等
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性 -- 字段重命名
  • 删除字段 :
ALTER TABLE 表名 DROP 字段名  

3. 列的属性

3.1 数据类型:

(1)数值类型

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第4张图片

(2)字符串

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第5张图片

(3)日期和时间型数值类型

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第6张图片

(4)NUll值

  • 理解为 “没有值” 或 “未知值”
  • 不要用NULL进行算术运算 , 结果仍为NULL

3.2 字段约束属性:

(1)NULL 和 NOT NULL

  • 默认为NULL , 即没有插入该列的数值
  • 如果设置为NOT NULL , 则该列必须有值

(2)Auto_InCrement

  • 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
  • 通常用于设置主键 , 且为整数类型
  • 可定义起始值和步长
    当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
    SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)
  • 改变自增序列的初始值,前提是先将表中插入的数据删除
    alter table t_name AUTO_INCREMENT 1;

(3)unique

  • 唯一性约束,一个表中该约束对象的值一旦确定不能改变
  • 可以进行组合的唯一性约束
create table stu (
  id number(10), 
  name varchar2(20) constraint stu_name_nn not null,
  sex varchar2(5), 
  age number(3), 
  sdate date, grade number(2) default 1, 
  class number(4), 
  email varchar2(50) unique,
  constraint stu_name_email_uni unique(email, name) -- 唯一约束
); 

(4)primary key

  • 主键约束,同时满足唯一性约束和非空约束

(5)foreign key

  • 外键约束,注意,参考的外键必须是主键,且主键一旦被参考,就不能删除

(6)其他约束

UnSigned

  • 无符号的
  • 声明该数据列不允许负数 .

ZEROFILL

  • 0填充的
  • 不足位数的用0来填充 , 如int(3),5则为005

DEFAULT

  • 默认的用于设置默认值
  • 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值

4. 数据库储存引擎的选取

4.1 table的类型和储存位置

(1)储存引擎的选择

CREATE TABLE 表名(
...
)ENGINE = InnoDB (or MyISAM)
-- 查看mysql所支持的引擎类型 (表类型)
SHOW ENGINES;

MySQL学习笔记-基础实践篇-2.数据库的基本操作(DDL)_第7张图片

(2)数据表的存储位置

  • MySQL数据表以文件方式存放在磁盘中
    • 包括表文件 , 数据文件 , 以及数据库的选项文件
    • 位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表
  • 注意 :
    • InnoDB类型数据表只有一个 *.frm文件 (8.0版本没有), 以及上一级目录的ibdata1文件
    • MyISAM类型数据表对应三个文件 :
      * . frm – 表结构定义文件
      * . MYD – 数据文件 ( data )
      * . MYI – 索引文件 ( index )

你可能感兴趣的:(MySQL,数据库,mysql,database)