- 数据表的字段约束
- 字段数据类型
- 数据表的字段操作
- 数据备份与还原
- 用户的授权
- 密码的设置
一,数据表字段约束
unsigned 无符号
int(4) 显示宽度
zerofill 零填充, 位数不够的时候用前导零填充
not null 不能为空
如果字段的值设置不为空,会给相应的默认值.
如果是整数型字段,默认值是0
如果是字符型字段,默认值是' '
default 设置默认值
primary key 主键 不能为空 且唯一
auto_increment 自增
unique 唯一
二,数据表字段数据类型
1.数值类型
tinyint 1字节
可以表示 0-255 (无符号)
可以表示 -128 ~ 127 (有符号)
int 4字节
可以表示 0 ~ 4294967295 (无符号)
可以表示 -2147483648 ~ 2147483647 (有符号)
decimal 以字符串形式存储的浮点数
decimal(5, 2) 表示数值总共5位, 小数占2位2.字符类型
char 定长字符串
char(7) 不管实际插入多少字符, 它实际都会占用7个字符位置(中文一个汉字也是一个位置)
存储值为:abc(abc+4个空格)
varchar 变长字符串
varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置
存储值为:abcd (自动缩短为4个字母的长度,节省存储空间)
char和varchar的区别
1、char类型最多可存放255个字符,并且和编码类型无关。varchar类型最大可存放长度为65535个字节,varchar可
存放的字符数因编码类型不同而异
2、char类型长度固定,因此char的存取效率比varchar要快得多,方便程序的存储与查找。对于长度变化不大的对查
询有较高要求的时候使用char。
3、char和varchar在超出长度时都会截取字符串到指定的长度(宽松模式)。
4、char类型删除了尾部的空格,而varchar类型保留了这些空格。text
是一种比较常用的数据类型,它用于存储较长的文本或字符数据
TinyText 是 Text 类型中的最小容量,它可以存储最多 255 个字符。通常使用 TinyText 类型存储一些较短
的字符串,例如一个域名或者一个用户名等等
Text 是比 TinyText 更大的一种 Text 类型,它可以存储最多 65,535 个字符。通常使用 Text 类型存储一些
较长的文本数据,例如一篇文章或者一段 HTML 代码等等
MediumText 是比 Text 更大的一种 Text 类型,它可以存储最多 16,777,215 个字符。通常使用
MediumText 类型存储一些非常长的文本数据,例如一篇博客或者一份 PDF 文件等等
LongText 是 Text 类型中的最大容量,它可以存储最多 4GB 的字符数据。通常使用 LongText 类型存储
非常庞大的文本数据,例如一本电子书或者一份大型数据集合等等
enum 枚举类型( 多选一 )
sex enum('w','m','x') 代表sex可以取 'w', 'm', 'x' 中的一个值 如果输入的值不合法 那么该值就是''
set
集合类型 ( 多选多 )
hobby set('a','b','c','d') 代表hobby这个字段, 可以取多个值3.日期类型
a) date
4字节 YYYY-MM-DD '2019-10-23' '1000-01-01 ~ 9999-12-31'
b) time
3字节 HH:MM:SS
'12:01:01' '-838:59:59 ~ 838:59:59'
c) datetime
8字节 YYYY-MM-DD HH:MM:SS '2019-10-23 12:01:01'
'1000-01-01 00:00:00 ~ 9999-12-31 23:59:59'
d) timestamp 4字节 YYYY-MM-DD HH:MM:SS '2019-10-23 12:01:01'
'1970-01-01 00:00:01 ~ 2038-01-19 03:14:07' '19700101080001 ~ 20380119111407'
e) year 1字节 YYYY '2019' '1901 ~ 2155'
注意:
在项目中,常用int型保存时间戳4.NULL
select * from t1 where uid is NULL; 不能用等号
5.布尔型
select 1 > 30 => false
select 1 < 31 => true
三,表字段操作
添加字段 alter table 表名 add 字段名 字段属性;
删除字段 alter table 表名 drop 字段名;
修改字段属性 alter table 表名 modify 字段名 新属性;
修改字段名和属性 alter table 表名 change 字段原名 字段新名字 新属性;
查看表的所有字段 desc 表名;
修改表名 alter table 旧表名 rename 新表名;
清空表数据 truncate 表名;
四,数据备份与恢复
备份数据表
DOS命令行
mysqldump -u root -p 数据库名 表 > 导成 SQL 脚本文件 导出数据库中的单个数据表
mysqldump -u root -p 数据库名 表1 表2 > 导成 SQL 脚本文件 导出数据库中的多个数据表
mysqldump -u root -p 数据库名 > 导成 SQL 脚本文件 导出整个库中的所有表 不包含库本身
还原数据表
DOS命令行
mysql -u root -p 已存在的库名 < 要导入的文件 还原备份的数据表 (不写分号)
数据备份与恢复
备份数据库
DOS命令行
mysqldump -u root -p --databases 库名 > 导成 SQL 脚本文件 导出指定的数据库
mysqldump -u root -p --databases 库名1 库名2 > 导成 SQL 脚本文件 导出指定的数据库
mysqldump -u root -p --all-databases > 导成 SQL 脚本文件 导出所有的数据库
还原数据库
DOS命令行
mysql -u root -p < 要导入的文件 还原备份的数据库 (不写分号)
五,用户授权
查看用户
select user,host from mysql.user;
添加用户
格式:
create user '用户名'@'范围' identified by '密码';
范围包括:ip、localhost、%
ip即只能从指定地址登录
localhost 即只能从本机登录
% 即可以从任何地址登录
示例:
create user 'xxx'@'localhost' identified by '123';
create user if not exists 'xxx'@'localhost' identified by '123';
注意:
新添加的用户没有任何权限,任何操作都不能操作查看用户权限
show grants for xxx@localhost;
USAGE是指没有任何权限,但是用户是存在的,还是可以登录
为新创建的用户授予特定权限
grant create,select,insert on *.* to xxx@localhost;
为新创建的用户授予所有权限
grant all privileges on *.* to xxx@localhost;
刷新权限以立即发生更改
flush privileges;添加用户, 并授予一定权限
格式:
grant 具体权限 on 库.表 to '用户名'@'%' identified by '密码';
grant 具体权限 on 库.表 to '用户名'@'localhost' identified by '密码';
示例:
grant select,insert on teach.user to 'xxoo'@'%' identified by 'abcd';
grant select,insert on teach.user to 'xxoo'@'localhost' identified by 'abcd';
删除权限
revoke select on teach.user from xxoo@localhost;
删除用户
drop user 'xxoo'@'%';
六,修改密码
mysqladmin 只能修改root用户密码,不能修改普通用户密码
DOS命令行
mysqladmin -uroot -p旧密码 password 新密码 (新密码不要加引号)
例如: mysqladmin -uroot -p123 password 123456
set password 既可以修改root密码,也可以修改普通用户密码
mysql命令行 首先使用root登录MySQL, 然后使用root权限修改
set password for 用户名@登录主机 = password('新密码');
例如: set password for root@localhost = password('123456');
set password for ycc@localhost = password('123456');
忘记root密码
步骤:
1.关闭正在运行的数据库服务器进程 mysqld.exe
2.在DOS命令中转到mysql/bin目录执行 mysqld --skip-grant-tables 回车
3.再打开一个DOS窗口, 转到mysql\bin目录 可直接输入 mysql 强行进入
4. use mysql
5. update user set password=password('新密码') where user='root';
6. 刷新权限 flush privileges;
7. 退出 exit宽松模式与严格模式
mysql命令行下临时修改
set sql_mode=''; 宽松模式
set sql_mode=STRICT_TRANS_TABLES; 严格模式
my.ini 配置文件中永久修改
在 [mysqld] 下面进行添加以下的命令修改严格模式
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
在 [mysqld] 下面进行添加以下的命令修改宽松模式
sql_mode=''
|