mysql3
一数据类型
二约束条件
一数据类型:
1 数字(默认都是有符号,宽度指的是显示宽度,与存储无关(只是int))
tinyint int bigint:个数,年龄,id,qq号,手机号
float:价格,身高,体重,余额
tinyint[(m)] [unsigned] [zerofill]#括号内的是可以选择的 小整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-128 ~ 127
无符号:
0 ~ 255 PS: MySQL中无布尔值,使用tinyint(1)构造。
int[(m)][unsigned][zerofill] 整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-2147483648 ~ 2147483647
无符号:
0 ~ 4294967295
bigint[(m)][unsigned][zerofill]
大整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-9223372036854775808 ~ 9223372036854775807
无符号:
0 ~ 18446744073709551615
验证:如果超过范围就会插入不了
float类型:
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
有符号:
-3.402823466E+38 to -1.175494351E-38,
0
1.175494351E-38 to 3.402823466E+38
无符号:
0
1.175494351E-38 to 3.402823466E+38 **** 数值越大,越不准确 ****
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。 有符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308
无符号:
0
2.2250738585072014E-308 to 1.7976931348623157E+308
**** 数值越大,越不准确 ****
验证:注:小数位可以多给但我只保留规定的位数,整数位不能超过不然就不能导入
# create database db50 charset utf8;
# use db50
# create table t6 (price float(6,2));
# insert into t5 values(78.3);78.30
# insert into t5 values(78.3456);显示78.35
2 字符(宽度指的是字符个数):姓名,性别,职业,地址,职称,介绍
char:简单粗暴,不够则凑够固定长度存放起来,浪费空间,存取速度快
varchar:精准,计算出待存放的数据的长度,节省空间,存取速度慢
验证:注:中文1一个汉字三个字节;一个字节8位2进制
create table t6(name char(4));
insert into t6 values('alexsb');#插入不进去
insert into t6 values('欧德');#可以插入到表里
insert into t6 values('艾利克斯a');#不可以插入表里
create table t7(x char(5),y varchar(5));
#insert into t7 values('abcdef','abc');#不能插入到表里
#insert into t7 values('abc','abc');#可以插入表里
#select char_length(x),char_length(y) from t7;#查看字符长度
#insert into t7 values('abc','abcdef');不可以插入到表里 insert into t7 values('abc','abc'); #char_length :查看字符的长度
insert into t7 values('你好啊','好你妹'); #char_length :查看字符的长度
select length(x),length(y) from t7;查看字节的长度
3日期类型
create table table(
id int,
name char(5),
born_date date,
born_year year,
reg_time datetime,
class_time time
);
insert into student values(1,'alex','2017-09-06','','2017-09-06 10:39:00','08:30:00');
#数据格式比较随意,你喜欢就好
insert into student values(1,'alex','2017/09/06',2017,'2017-09-06 10:39:00','08:30:00');
insert into student values(1,'alex','20170906',2017,'20170906103900','083000');
4 枚举与集合
枚举:是用在情况可以举出的情况下,但是为该字段传值,只能取出一个;集合:是用在一定的范围内,但是为该字段传值可以取出多个;
create table teacher1(
id int primary key auto_increment,
name char(5),
sex enum('male','female'),#枚举
hobbies set('music','read','study','coding')#集合
); insert into teacher1(name,sex,hobbies) values('egon','None','asdfasdfasdf');#错误的不能插入
insert into teacher1(name,sex,hobbies) values('egon','male','music,read');这个可以
二约束条件
1 not full(不为空)与default(默认值)
create table student2(
id int primary key auto_increment,#主键 递增
name char(5),
sex enum('male','female') not null default 'female'#集合,不为空,默认为female
); insert into student2(name) values('frank'); create table student3(
id int primary key auto_increment,#主键且递增
name char(5),
age int not null default 30#不为空默认值为30
); insert into student3(name) values('frank');
2 unique
#单列唯一
create table teacher(
id int not null unique,#相当于主键
name char(10)
);
insert into teacher values(1,'frank');
insert into teacher values(1,'bruse');#插入不进去,因为id是唯一的且不为空
#多列唯一
create table services(
id int primary key auto_increment,
name char(10),
host char(15),
port int,
constraint host_port unique(host,port)#两个组成一个组合且唯一
); insert into services values('ftp','192.168.20.17',8080);#这个正常插入表格
insert into services values('httpd','192.168.20.17',8080);#这个不可以因为两个都和前面的一样
insert into services values('httpd','192.168.20.17',8180);#这个就可以
3关于主键的递增步长和开始的位置(偏移量和步长)
开始的位置:
create table seep(
id int primary key auto_increment,
name char(10)
);
insert into seep(name) values('IT'),('HR'),('SALE'),('Boss');#从1开始 create table seep1(
id int primary key auto_increment,
name char(10)
)auto_increment=10;
insert into seep1(name) values('IT'),('HR'),('SALE'),('Boss');#从10开始
自增的步长:
#auto_increment_increment:步长
create table seep2(
id int primary key auto_increment,
name char(10)
);
set session auto_increment_increment=2; #会话级,只对当前会话有效
set global auto_increment_increment=2; #全局,对所有的会话都有效
insert into seep2(name) values('IT'),('HR'),('SALE'),('Boss');
偏移量和步长一起使用:注意:如果偏移量大于步长则这次的偏移量设置不生效。
#auto_increment_offset:偏移量+auto_increment_increment:步长
注意:如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值会被忽略
set session auto_increment_offset=2;#偏移量设置一定要小于步长
set session auto_increment_increment=3;#这是步长设置
关联表
#foreign key#外键
#!!!先建被关联的表,并且被关联的字段必须唯一
create table dep(
id int primary key auto_increment,
name varchar(50),
comment varchar(100)
); create table emp_info(
id int primary key auto_increment,
name varchar(20),
dep_id int,
constraint fk_depid_id foreign key(dep_id) references dep(id)#两个关联的表字段
on delete cascade#加上这个关联表和被关联表是一起联动的(比如删除数据)
on update cascade#加上这个关联表和被关联表是一起联动的(比如更新数据)
);
往表里导入数据:
#先给被关联的表初始化记录
insert into dep values
(1,'欧莱雅','好公司...'),
(2,'时尚不','招不到人'),
(3,'销售部','卖不出东西'); insert into emp_info values
(1,'egon',1),
(2,'alex1',2),
(3,'alex2',2),
(4,'alex3',2),
(5,'李坦克',3),
(6,'林子弹',3),
(7,'加特林',3)
;
mysql3的更多相关文章
- mysql内核 innodb存储引警(卷1)配书 用VS 2003 编绎 mysql-3.23.49 源代码
作者网址:http://www.innomysql.net/ 1.旧版 mysql-3.23.49-win-src.zip 下载 (***络下载配书源代码) 或者 作者网盘 http://pa ...
- Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4
Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4 TAG标签: 摘要:红帽创建于1993年,是目前世界上最资深的Linux和开放源代码提供商,同时也是最获认可的 ...
- MySQL3:索引
什么是索引 索引是对数据库表中一列或者多列的值进行排序的一种结构,所引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花 ...
- mysql-3 检索数据(1)
SELECT 语句 SELECT检索表数据,必须至少给出两条信息--------想选择什么,以及从什么地方选择. 检索一个列 SELECT prod_name FROM products; 上述语句利 ...
- mysql3 - 常规数据检索、常见操作与函数
一.常规数据检索 二.常见操作与函数
- xtrabackup备份mysql-3 差异备份
差异备份的特点是 基准点 指向第一次全备
- MySQL--3约束和修改数据表总结
- MySQL3:存储过程和函数
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...
- mysql-3 数据表的创建、增删改查
1.创建数据表 通用语法:CREATE TABLE table_name (column_name column_type); CREATE TABLE IF NOT EXISTS `csj_tbl` ...
随机推荐
- 深入学习卷积神经网络(CNN)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
- HTML XML 介绍
一. HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言. 二. XML即ExtentsibleMarkup Language(可扩展标记语言), XML ...
- [NOI 2017]蚯蚓排队
Description 题库链接 蚯蚓幼儿园有 \(n\) 只蚯蚓.幼儿园园长神刀手为了管理方便,时常让这些蚯蚓们列队表演. 所有蚯蚓用从 \(1\) 到 \(n\) 的连续正整数编号.每只蚯蚓的长度 ...
- 如何参与linux内核开发
如何参与linux 内核开发 如果想评论或更新本文的内容,请直接联系原文档的维护者.如果你使用英文 交流有困难的话,也可以向中文版维护者求助.如果本翻译更新不及时或者翻 译存在问题,请联系中文版维 ...
- RockChip RK3326 系统编译问题总结
1. 序言 本文主要记录了RK3326平台系统编译过程中遇到的各种问题,并加以解决! 环境: 宿主Linux:Ubuntu 16.04 目标机:RK3326 (64bit) Toolchain:gcc ...
- link rel=alternate网站换肤功能
此方法借助HTML rel属性的alternate属性值实现. <link href="reset.css" rel="stylesheet" type= ...
- Linux-kill命令和killall命令(11)
kill:指定将信号发送给某个进程,常用来杀掉进程,可以通过ps.top命令来查看进程 在默认情况下: 采用编号为的TERM信号.TERM信号将终止所有不能捕获该信号的进程. 对于那些可以捕获该信号的 ...
- ArrayList和LinkedList的区别以及优缺点
作用 ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用.他们都可以对元素的增删改查进行操作. 对于ArrayList,它在集合的末尾删除或添加元素所用的 ...
- 【开发工具之eclipse】8、The word is not correctly spelled。强迫症看着很难受
eclipse出现了极其让我郁闷的错误,"The word is not correctly spelled" 我讨教过一些朋友以后,还是没有得到答案,我就纳闷了.然后我继续将代码 ...
- javasript中var、let和const区别
let和const都是es5,es6新版本的js语言规范出来的定义,在这以前定义一个变量只能用var.let和const都是为了弥补var的一些缺陷而新设计出来的. 简单来说是: let是修复了var ...