【MySQL】操作数据库
MySQL如何操作呢...
操作数据库
前言
趁着学习MySQL的兴趣十分浓厚,于是我爆肝学习了一天,学了些关于数据库操作的知识,自己码了些笔记。(ps:是看狂神说学习的,大部分笔记都是和网课一起码的,另外强烈安利狂神秦疆老师!!!)
1.0、怎么操作数据库
操作数据库 > 操作数据库中的表 > 操作数据库中表的数据
注意:mysql输入指令不区分大小写
1.1、操作数据库(了解)
1、创建数据库
create database [if not exists] westos
2、删除数据库
drop database [if exists] westos
3、使用数据库
--tab键上面.如果你的表名\字段名是一个特殊字符,就用` `引起来
use `school`
4、查看所有数据库
show databases --查看所有数据库
对比:SQLyog可视化操作
学习思路:
- 对照SQLyog可视化历史记录查看sql
- 固定的语法或关键字必须要强行记住!
1.2、数据库的数据(列)类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准大小数据 4个字节
- big 较大的数据 8个字节
- float 单精度浮点数 4个字节
- double 双精度浮点数 8个字节
- decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal
字符串
- char 固定大小的字符串 0~255
- varchar 可变字符串 0-65535 对应 java中 String
- tinytext 微型文本 2^8 ~ 1
- text 文本串 2^16 ~ 1 保存大文本
时间日期
类似于Java中的java.util.Date
- date YYYY-MM-DD 日期
- time HH:mm:ss 时间格式
- datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳 1970.1.1到现在的毫秒数 较为常用
- year 年份表示
null
- 没有值,位置
- 注意,不要使用NULL进行运算,结果为NULL
1.3、数据库的字段属性(重点)
Unsigned :
- 无符号的整数
- 声明了该列不能声明为负数
zerofill:
- 0填充的
- 不足的位数,用0来填充
自增:
- 通常理解为自增,自动在上一条记录的基础上+1 (默认)
- 通常用来设计唯一的主键,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空 NULL not null
- 假设设置为 not null ,如果不给它赋值,就会报错
- NULL,如果不填写值,默认为null
默认
- 设置默认的值!
- sex,默认值为 男 ,如果不指定该列的值,则会有默认的值
1.4、创建数据库表
创建一个student的表,内容包括 id ,name , pwd , sex , birthday , address , email
id是表示学号,用int,属性是主键,非空,自增
name表示姓名,用varchar,属性是非空,默认匿名
pwd表示登录密码,用varchar,属性是非空,默认123456
sex表示性别,用varchar,属性是非空,默认男性
birthday表示生日,用datatime,默认是null
address表示地址,用varchar,默认是null
email表示邮箱,用varchar,默认是null
使用InnoDB,utf8,utf8_general_ci
CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '生日',
`address` varchar(100) DEFAULT NULL COMMENT '地址',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
可以用SQLyog反向查看语句
show create database school --查看创建数据库语句
show create table student --产看student数据库表的语句
desc student --显示student表的结构
1.5、数据表的类型
如今默认使用 InnoDB
而早些年使用MYISAM
MYISAM | INNODB | |
---|---|---|
事务支持 | × | √ |
数据行锁定 | × | √ |
外键约束 | × | √ |
全文索引 | √ | × |
表空间的大小 | 较小 | 较大 |
适用场合:
- MYISAM:节约空间、速度较快
- INNODB:安全性、事务处理、多用户操作数据表
在物理空间存在的位置
所有的数据库文件存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储!
MySQL引擎在物理文件上的区别
- INNODB 在数据库表中只有一个 *.frm文件,以及上级目录下的 ibdata1文件
- MYISAM对应文件
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设计数据库表的字符集编码
charset=utf8
不设置的话,会是mysql默认字符集编码,Latin1,不支持中文
在my.ini中配置默认编码(不建议)
character-set-server=utf8
1.6、修改删除表
修改
--修改表名 alter table 九标名 rename as 新表名
alter table teacher rename as teacher1
--teacher 旧表名
--teacher1 新表明
--增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(11)
--修改表的字段(重命名,修改约束) modify、change
alter table teacher1 modify age varchar(11) --修改约束
--alter table 表名 modify 字段名 列属性()
alter table teacher1 change age age1 int(1) --字段重命名
--alter table 表名 change 旧字段名 新字段名 列属性()
删除
--删除表的字段 drop
alter table teacher1 drop age1 --删除teacher1中的age1
--删除表(如果表存在再删除)
drop table if exists teacher1 --一般用 if exists,防止报错!
最后提醒一下注意点:
- 用`` 将字段名引起来
- 注释 用-- 或 /* */
- sql关键字大小写不敏感
- 所有的符号用英文
后话
怎么说呢,学习使我快乐!年前赶快肝进度,毕竟大作业都没怎么动。趁着时间有余,多看些网课,多写点代码,多做点笔记,这样的寒假才算充实且快乐呀!如果有任何问题和错误,欢迎在评论区指出,我会和小伙伴们交流讨论的!