MySQL学习笔记
连接数据库
mysql -u root -p123456 --登陆时密码-p后不能有空格 |
create database westos; -- 创建一个数据库 |
数据库xxx语言 CRUD增删改查
DDL 定义
DML 操作
DQL 查询
DCL 控制
操作数据库
操作数据库->操作数据库中的表->操作数据库中表的数据
mysql 关键字不区分大小写
1. 创建数据库
CREATE DATABASE IF NOT EXISTS westos; |
2. 删除数据库
DROP DATABASE IF EXISTS westos; |
3. 使用数据库
-- tab键上面,如果你的表名或者字段名时一个特殊字符,就需要带 ( ` ) |
4. 查看数据库
SHOW DATABASES; --查看所有数据可 |
学习思路
- 对照SQLyog可视化,然后在历史记录里查看
- 固定的语法或关键字必须强行记住
数据库的数据类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节 (精度问题)
- decimal 字符串形式的浮点数 金融计算一般使用decimal
字符串
- char 字符串 固定大小 0-255
- varchar 可变长字符串 0-65535 常用的变量 String
- tinytext 微型文本 2^8 - 1
- text 文本串 2^16 - 1 保存大文本
时间日期
- date YYYY-MM-DD,日期格式
- time HH:mm:ss 时间格式
- datetime 最常用的时间格式
- timestamp 时间戳,1970.1.1 到现在的毫秒数!
- year 年份
null
- 没有值或未知
注意, 不要使用null进行运算,结果位NULL
数据库的字段属性
Unsigned:
- 无符号的整数
- 声明了该列不能声明为负数
zerofill:
- 0填充的
- 不足的位数,使用0来填充,int(3), 5—005
自增
- 通常理解为,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键-index,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空 Null not null
- 假设设施为not null,如果不给它赋值,就会报错!
- NULL,如果不填值,默认为NULL
默认
- 设置默认值
- sex,比如默认值为男,如果不指定该列的值,则默认为男
student 1
-- 目标:创建一个scahool数据库 |
格式
create table [if not exists] `表名`(
'字段名1' 列类型 [属性][索引][注释],
'字段名2' 列类型 [属性][索引][注释],
#...
'字段名n' 列类型 [属性][索引][注释]
)[表类型][表字符集][注释];
常用命令
SHOW CREATE DATABASE school -- 查看创建数据库的语句 |
数据表的类型
-- 关于数据库引擎 |
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为2倍 |
常规使用操作: |
- MYISAM 节约空间,速度较快
- INNODB 安全性高,多表多用户操作
在物理空间的位置:
所有的数据库文件都在data目录下
本质还是文件的存储
MySQL引擎在物理文件上的去呗
- InnoDB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *myi 索引文件(index)
设置数据库表的字符集编码不设置的话,会时MySQL默认的字符集(不支持中文)CHARSET=utf8
MySQL的默认便把时Latin1
可在my.ini修改
修改表
alter table teacher rename as teacher1; -- 修改表名 |
修改表的字段(重命名,修改约束!)
alter table teacher1 modify age varchar(11); -- 修改约束 |
删除表
alter table teacher1 drop age; -- 删除表的字段 |
所有的创建和和三处操作尽量加上判断,以免报错
注意点:
- ``字段名用这个包裹
- 注释– /**/
- sql关键字大小写不敏感,建议小写
- 所有的符号用英文
Mysql的数据管理
3.1. 外键(了解即可
方式一:在创建表的时候,增加约束
-- 学生表的gradeid字段,要去引用年级表的gradeid |
方式二: 创建表成功后,没有外键关系
-- 创建表的时候没有外键关系 |
删除有外键关系的表的时候,必须要先删除引用别人的表(从表),再删除主表
以上的操作都是物理外键,数据库级别的外键,我们不建议使用!(避免数据库过多困扰)
最佳实践
- 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
- 我们想使用多张表的数据,想使用外键(程序去使用)
3.2. DML语言(全部记住)
数据库意义:数据存储、数据管理
DML语言:数据操作语言
- insert
- update
- delet
3.2.1 添加insert
-- 插入语句(添加) |
注意:
- 字段和字段之间使用英文逗号隔开
- 字段是可以省略的,但是后面的值必须一一对应
- 可以同时插入多条数据,values后面的值,需要使用逗号隔开
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 You_zip!