目录
1. 数据库的操作
1.1 显示当前的数据库
SHOW DATABASES;
注意: MySQL是用命令行操作, 所以基本的格式 规则要掌握:
- 输入单词之间, 要带有空格, 多个空格是可以的, 但至少有一个空格
- 语句结束要带上分号 必须是英文分号!
- 输入完毕后, 按回车表示执行这个命令
- 拼写要正确!!!
结果:
- 上面的4个Database是MySQL自带的数据库, 叫"系统库"
- 5 rows in set(0.02 sec) set集合 sec秒
- 如果我们拼写错误, 就会出现错误信息, 一般在错误信息后面, 会有提示, 仔细阅读即可
1.2 创建数据库
(1)最简单的方式
create database 数据库名;
注意:
- SQL是大小写不敏感的, 学成大写也可以
- 数据库名不能和SQL中的关键字重复
- 如果实在是想用关键字作为数据库名, 可以使用反引号`, 把这个名字引起来(反引号在键盘Esc键的下面, 英文模式)
结果:
创建成功!
(2)可以指定字符集
create database 数据库名 charset 字符集名;
什么是字符集? 通俗来讲, 就是将所有非数字的字符, 转化成十六进制数据, 能够存到计算机中
例如:
- GBK 兼容ASCII, 可以表示英文, 还可以表示中文, 使用两个字节表示一个汉字
- UTF8 可以表示世界上任意语言文字, 一个汉字一般占三个字节, 后续创建数据库, 建议大家使用UTF8 作为字符集
- 但是MySQL的UTF8 其实不是完整的, 比标准的UTF8 少了一些东西(主要是少了emoji表情) , 为了解决这个问题, MySQL提供了 UTF8mb4 这样的字符集(MySQL独有, 就是完整的UTF8)
(3) 指定校验规则
create database 数据库名 collate 校验规则名;
一般不需要修改, 使用默认的即可
1.3 使用/选中 数据库
use 数据库名 ;
后续的进一步操作, 都需要选中数据库, 然后再操作
1.4 删除数据库
drop database 数据库名;
说明 :
- 数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除
结果:
2. 常用数据类型
2.1 数值类型
分为整型和浮点型:
注意:
- float 和 double 和java类似, 在进行运算时, 可能会导致精度丢失
- decimal 不会引起精度丢失, 但相对float 和 double来说, 存储需要更对的空间, 计算也需要更多的时间
2.2 字符串类型
注意:
- varchar 可变长字符串类型, ()中表示能存储的最大长度 单位是字符, 与C不同, C的char类型单位是字节, 例如, 一个汉字表示一个字符, 但是可以是若干字节
- text 长度自适应, 自动扩容, (但在工程中不怎么使用, 因为不明确数据存储的上限)
- blob 存储"二进制"数据, 在对应码表中是无法查到的, 而上述三个是文本数据(字符串)
2.3 日期类型
注意:
- 现在不推荐用timestamp, 因为快"过期"了
小结:
重点掌握: int double varchar datetime 其他简单了解即可
3. 表的操作
需要操作数据库中的表时,需要先使用该数据库:
use 数据库名;
否则会报错:
3.1 查看所有表
show tables;
注意:此命令只能看到当前数据库的表, 想要看其他的要切换到其他的数据库
3.2 创建表
语法:
create table 表名(列名 类型, 列名 类型 ...);
注意:
- 列名在前, 类型在后
- 设置表名和列名时, 不能和SQL中的关键字重复
- 如果实在是想用关键字作为数据库名, 可以使用反引号`, 把这个名字引起来(反引号在键盘Esc键的下面, 英文模式)
- 同一个数据库中, 表名不能重复(不同数据库可以重复)
创建一个student表
3.3 查看表结构
desc 表名;
注意: 这里的desc是describe描述的意思 后面我们还会遇到desc 是descend 降序的意思
查看student表:
- Field 表示字段/列 (一下术语都表示列: 成员变量(member variable) 属性(property) 字段(field))
- Type 字段类型 int(11) 中的(11) 表示 在控制台中显示这一列的数据的时候, 最多占11个字符
- Null 表示这个列是否能取空值
- Key
- Default 列的默认值
- Extra 其他信息
3.4 删除表
语法:
drop table 表名;
不仅仅删除表本身, 也删除了表里面的数据
练习:
商品goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
分析:
在表示单价时, 我们肯定是要精确度更高, 但我们使用decimal, 虽然可以精确表示, 但是存储空间大, 计算小号的时间更多, 更好的办法:用int 但是单位是分!
SQL: