PK(Primary Key)主键、唯一标识
NN(Not Null)值不允许为空
UQ(Unique)唯一索引
BIN(binary)存放二进制数据的列
UN(unsigned)无符号数据类型(非负数)
ZF(zero fill) 填充0 例如字段内容是1 int(4), 则内容显示为0001
AI(Auto Increment)值自动增长
G(generated column)基于其他列的公式生成值的列
打开MySQL数据库安装目录下的bin文件夹:'F:\MySQL\MySQL Server 8.0\bin'
导出整个数据库(含数据)
.\mysqldump -u 用户名 -p 数据库名 > 导出路径/导出文件名
.\mysqldump -u root -p shooping > E:\下载\shooping.sql
导出单个表(含数据)
.\mysqldump -u 用户名 -p 数据库名 表名 > 导出路径/导出文件名
mysql修改字段类型
只修改列的数据类型的方法:
alter table 表名 modify column 列名 新的列的类型
同时修改列名和列的数据类型的方法:
alter table 表名 change column 旧列名 新列名 新的列类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 新类型长度 新默认值 新注释;
mysql修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 DEFAULT 默认值 COMMENT '注释';
修改表名
rename table 旧表名 to 新表名;
alter table 旧表名 rename [as] 新表名;
修改表的注释
ALTER TABLE 表名 COMMENT '新注释';
在指定位置插入新字段
ALTER TABLE 表名 ADD 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段;
删除字段
ALTER TABLE 表名 DROP 字段名;
通过 * 把 users 表中所有的数据查询出来
select * from users
从 users 表中把 username 和 password 对应的数据查询出来
select username, password from users
向 users 表中,插入新数据,username 的值为 tony stark password 的值为 098123
insert into users (username, password) values ('tony stark', '098123')
将 id 为 4 的用户密码,更新成 888888
update users set password='888888' where id=4
更新 id 为 2 的用户,把用户密码更新为 admin123 同时,把用户的状态更新为 1
update users set password='admin123', status=1 where id=2
删除 users 表中, id 为 4 的用户
delete from users where id=4
使用 AND 来显示所有状态为0且id小于3的用户
select * from users where status=0 and id<3
使用 or 来显示所有状态为1 或 username 为 zs 的用户
select * from users where status=1 or username='zs'
对users表中的数据,按照 status 字段进行升序排序
select * from users order by status
按照 id 对结果进行降序的排序 desc 表示降序排序 asc 表示升序排序(默认情况下,就是升序排序的)
select * from users order by id desc
对 users 表中的数据,先按照 status 进行降序排序,再按照 username 字母的顺序,进行升序的排序
select * from users order by status desc, username asc
使用 count(*) 来统计 users 表中,状态为 0 用户的总数量
select count(*) from users where status=0
使用 AS 关键字给列起别名
select count(*) as total from users where status=0
select username as uname, password as upwd from users
整数类型:
整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT,它们的区别如下表所示:
浮点数类型和定点数类型
浮点数类型有 FLOAT、DOUBLE、REAL,它们的区别如下表所示:
注意:
(1)REAL 默认就是 DOUBLE。如果你把 SQL 模式设定为启用“REAL_AS_FLOAT”,那么,MySQL 就认为 REAL 是 FLOAT,启用命令:SET sql_mode = “REAL_AS_FLOAT”;
(2)浮点数类型不精确。为什么不精确将在下节讲解。
日期和时间类型
日期时间类型有 YEAR(年)、TIME(时间)、DATE(日期),DATETIME和TIMESTAMP 类型,它们的区别如下表所示:
注意:
(1)为了确保数据的完整性和系统的稳定性,优先考虑使用 DATETIME 类型。
(2)为什么时间类型 TIME 的取值范围不是 -23:59:59~23:59:59 呢?原因是 MySQL 设计的 TIME 类型,不光表示一天之内的时间,而且可以用来表示一个时间间隔,这个时间间隔可以超过 24 小时。
字符串类型
文本类型有CHAR、VARCHAR、TEXT、ENUM 和 SET 等,它们的区别如下表所示:
注意: TEXT由于实际存储的长度不确定,MySQL 不允许 TEXT 类型的字段做主键。遇到这种情况,你只能采用 CHAR(M),或者 VARCHAR(M)。