2.数据库的基本操作(DDL) 总览
MySQL基础学习笔记思维导图
参考狂神说MySQL教程笔记
参考尚硅谷MySQL教程笔记
重难点问题总结
1. database基本操作
- 操作数据库的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操作:
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)数值类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a84e06cd00c4cc49aa6376901e3938e.png)
(2)字符串
![在这里插入图片描述](https://img-blog.csdnimg.cn/1dae3e1609914b0da02a2be40290027c.png)
(3)日期和时间型数值类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/fdf5d05e9b414c0ca728ddfbf1593e77.png)
(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;
(2)数据表的存储位置
- MySQL数据表以文件方式存放在磁盘中
- 包括表文件 , 数据文件 , 以及数据库的选项文件
- 位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表
- 注意 :
- InnoDB类型数据表只有一个 *.frm文件 (8.0版本没有), 以及上一级目录的ibdata1文件
- MyISAM类型数据表对应三个文件 :
* . frm – 表结构定义文件
* . MYD – 数据文件 ( data )
* . MYI – 索引文件 ( index )