mysql数据类型 完整性约束 054
创建用户和授权用户权限:
# 1 .创建用户:
# 指定ip 192.168.15.109的fgf用户登录
create user 'fgf'@'192.168.15.109' identified by '';
# 指定ip 192.168.15.开头的fgf用户登录
create user 'fgf'@'192.168.15.%' identified by '';
# 指定任何ip的fgf用户登录
create user 'fgf'@'%' identified by '';
# 2 .删除用户
drop user '用户名'@'IP地址';
# 3 .修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
# 4 .修改密码
set password for '用户名' @'IP地址'=password('新密码'); 对当前用户的授权管理
查看权限
show grants for '用户名'@'IP地址'
# 授权 fgf 用户仅仅对 db1.t1文件有查询 插入 和 更新的操作
grant select ,insert ,update on db1 to 'fgf'@'%';
# 表示所有的权限 , 除了 grant 这个命令 这个命令是root才有的,fgf用户对db1下的t1文件有任意操作权限;
grant all privileges on db1.t1 to 'mjj'@'%';
#fgf用户对db1数据库中的文件执行任何操作
grant all privileges on db1.* to 'fgf'@'%';
# fgf 用户对所有数据库文件有任何操作
grant all previleges on *.* to 'fgf'@'%';
复制表
#即复制表结构 又复制记录
create table t2 select * from db1.t1; # 只复制表结构,不复制记录
create table t2 select * from db1.t1 where 1>3;
create table t2 like db1.t1;
数据类型: 整型 默认有符号
数据类型 无符号(unsigned) 和 有符号 用 0 填充 zerofill
约束的作用 : 保证数据的完整性 和一致性
tinyint[-128~127]小整数 两边区域都能取到
int 整数
bigint 极大整数
# 加了unsigned 表示从0开始 不再从负数开始
create table t1(id int(4) unsigned,name char(20));
浮点型
float 单精度 随着小数位数的增多 会变得越来越不准确
float[(M,D)] [UNSIGNED] [ZEROFILL]
参数解释 : 单精度浮点数(非准确小数值) , M是全长 ,D是小数点后个数 M最大值为255,D最大值为30
double 双精度 随着小数的增加 也会越来越不准确 但是要比float 准确点
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 字母的含义与float 一样.
decimal 小数 精准的小数
decimal[(m[,d])] [unsigned] [zerofill]
#参数解释:准确的小数值,M是整数部分总个数(负号不算),D是小数点后个数。 M最大值为65,D最大值为30。
#精确度: **** 随着小数的增多,精度始终准确 ****
对于精确数值计算时需要用此类型
ecaimal能够存储精确值的原因在于其内部按照字符串存储。
日期类型: DATE TIME DATETIME TIMESTAMP YEAR
作用 存储用户注册时间 文章发布时间 员工入职时间 出生时间 过期时间等
YEAR 年份 (1901~2155)
DATE 年月日
TIME 时分秒
now() sql 语言中自带的内容函 : 获取当前的事时间(根据数据类型)
create table t10(born_year year,intClass datetime);
字符类型
char 定长,简单粗暴 , 浪费空间 但是存取速度快
varchar 变长 精准 节省空间 但是存取速度慢
length():查看字节数
char_length():查看字符数
枚举和集合
create table consumer(
id int,
name varchar(50),
sex enum('male','female','other') default 'male',
level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
fav set('play','music','read','study') #在指定范围内,多选多
);
注意:在sql中使用tinyint(1)来表示boolean类型
完整性约束
not null 与 default
如果单独设置not null 不能插入空值
如果既设置了not null 又指定default 可以插入空值 会执行default
unique key
单列唯一
create table t4(
id int not null,
name char(20) unique
); create table t4(
id int not null,
name char(20),
unique(name)
);
insert into t4(id,name) values(1,'alex');
insert into t4(id,name) values(1,'wusir');
多列唯一 只要有一列相同 就不能插入(类似于且)
create table t5(
id int,
name char(20),
unique(id),
unique(name)
);
联合唯一 全部相同时 不能插入(类似于或)
create table t6(
id int,
name char(20),
unique(id,name)
);
应用场景 选课系统 一个学生可以选择多个课程 一个课程可以被多个学生选择
primary key
化学反应 : not null + unique
单列主键 不能为空 并且是唯一
# primary key 索引(针对于大量数据) 查询速度要快
create table t7(
id int primary key,
name varchar(10) unique
); create table t8(
id int not null unique,
name varchar(10) unique
);
联合主键
create table t9(
id int,
name varchar(10),
primary key(id,name)
);
auto_increment 约束 : 约束的字段为自动增长 约束的字段必须同时被key约束
create table student(
id int primary key auto_increment,
name varchar(20) not null,
sex enum('male','female') default 'male',
ip varchar(20) unique
); insert into student(name,sex,ip) values
('alex','female','127.0.0.5'),
('wusir','male','173.45.32.1');
清空表 区分delete 和 truncate的差异:
delete from t1 : 如果有自增的id 信息鞥的数据 仍然是以删除前的最后一样作为起始
truncate table t1: 适用于删除数据量比较大 , 删除速度也比上一条快 且 直接从零开始.
foreign key
外键 即关联两个表格
# 创建主表
create table dep(
# 主表id 设置成可以自动增长
id int primary key auto_increment,
# 设置部门名称为单列唯一
name char(10) unique,
# 部门描述 不能为空
dep_desc varchar(50) not null
); # 创建从表
create table emp(
eid int primary key auto_increment,
name char(10) not null,
age int not null,
dep_id int,
constraint fk_dep foreign key(dep_id) references dep(id)
on delete cascade
on update cascade,
); create table emp(
eid int primary key auto_increment,
name char(10) not null,
age int not null,
dep_id int,
constraint fk_dep foreign key(dep_id) references dep(id)
on delete cascade
on update cascade,
); insert into dep(name,dep_desc) values
('董事部','管理公司部门'),
('公关部','公关管理部门'),
('IT部门','IT管理部门'),
('财务部','财务管理部门'); insert into emp(name,age,dep_id) values
('alex',18,1),
('wusir',30,2),
('吴老板',20,3),
('马老板',18,4),
('邱老板',20,2),
('女神',16,3);
mysql数据类型 完整性约束 054的更多相关文章
- MySQL数据类型以及基本使用详解
MySQL数据类型以及基本使用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL服务器的主要组件 我们知道MySQL的主要组件主要是由服务端(mysqld)和客户端 ...
- MySQL表完整性约束
=======MySQL表完整性约束====== 目录: 一.介绍 二.not null 与 default 三.unique 四.primary key 五.auto_increment 六.for ...
- mysql 数据类型
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) ...
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- MySQL数据类型的验证
CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...
- MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题
MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...
- 浅谈MySQL数据类型
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...
- MySQL数据类型——数值类型
1.1.1 整型 整型 占用字节 范围 范围 tinyint 1 -27~27-1 -128~127 smallint 2 -215~215-1 -32768~32767 mediumint 3 -2 ...
- 【转】MySQL数据类型和常用字段属性总结
来源:http://www.jb51.net/article/55853.htm 这里先总结数据类型.MySQL中的数据类型大的方面来分,可以分为:日期和时间.数值,以及字符串.下面就分开来进行总结. ...
随机推荐
- data-参数说明(模态弹出窗的使用)
除了通过data-toggle和data-target来控制模态弹出窗之外,Bootstrap框架针对模态弹出框还提供了其他自定义data-属性,来控制模态弹出窗.比如说:是否有灰色背景modal-b ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- BZOJ 2038 小Z的袜子(hose) (莫队算法)
题意:中文题. 析:很著名的莫队算法,先把这个求概率的式子表达出来,应该是分子:C(x1, 2) + C(x2, 2) + C(x3, 2) + ... + C(xn, 2) 分母:C(n, 2), ...
- 设计模式8---适配器模式(Adapter)
1. 适配器模式简介 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用场景: 1.已经存在 ...
- Centos配置多个tomcat服务器,并用nginx实现负载均衡
centos配置tomcat请参见上一篇博文 :http://www.cnblogs.com/nanyangzp/p/4897655.html 一:多tomcat利用不同端口开启服务器 多个tomca ...
- touch和click优先性
jQuery的touch事件是当用户触摸事件(页面)时触发的. jQuery的click事件是当用户点击元素时触发的. 而事件执行流程是手指点击一个元素,会经过:touchstart --> t ...
- 使用SqlBulkCopy进行批量插入数据时踩过的坑
之前一直都没用过SqlBulkCopy关键字进行数据插入,更没了解过. 事因:因业务需要在数据表中添加两列,然后将数据插入进表中 之前都是这样写的 dt.Columns.Add(new DataCol ...
- 910. Smallest Range II
Given an array A of integers, for each integer A[i] we need to choose either x = -K or x = K, and ad ...
- linux上 查看mysql的binglog日志
查看mysqlbinglog日志 mysqlbinlog --no-defaults --database=数据库名称 --start-datetime= > /mysql.txt 备注: -- ...
- 【bzoj 3595】: [Scoi2014]方伯伯的Oj
传送门&& 原题解 蒟蒻终于做到一道方伯伯的题了…… 调了一个上午一直TLE(发现自己打了好久的splay板子竟然是错的这种丢人事情我就不说了) 很明显,要建两棵树,$T1$维护排名, ...