MySQL 数据类型,约束,表的创建
标签: MySQLday01 MySQL安装 SQL约束 SQL数据类型 SQL表的创建
MySQL优势
- 1.MySQL是开源的数据库
everyone都可以获取数据库的源代码,everyone可以修正MySQL的 缺陷- 2.MySQL是跨平台
不仅可在windows系统中运行,也可在Linux、UNIX和Mac OS系统 中运行- 3.价格优势
自由软件,可以从MySQL官网直接下载免费使用。- 4.功能强大且使用方便
MySQL是一个真正的多用户、多线程SQL数据库服务器。Mysqld和 客户程序组成,可快速,有效和安全的处理大量数据,使用非常简单, 相对于Oracle而言
MySQL安装
- 1.已安装可以用安装程序进行卸载重启后安装
MySQL的默认端口号是3306 当安装多个版本的MySQL端口不能重复 可以再原有的基础上+1
- 2需要配置Path路径默认安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin
MySQL在CMD下的登入
mysql -h localhost -P 3306 -u root -p //本地服务的连接
mysql -h 127.0.0.1 -P 3306 -u root -p //本地服务的连接也可连接公司的服务器
mysql -u root -p //常规登入方法
数值类型
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 无符号 -128 有符号 127 | 有符号 127 无符号 255 |
SMALLINT | 2 | 有符号 -32768 无符号 0 | 有符号 32767 无符号 65535 |
MEDIUMINT | 3 | 有符号 -8388608 无符号 0 | 有符号 8388607 无符号 1677215 |
INT / INTEGER | 4 | 有符号 -2147483648 无符号 0 | 有符号 8388607 无符号 1677215 |
BIGINT | 8 | 有符号 -9223372036854775808 无符号 0 | 有符号 9223372036854775807 无符号 18446744073709551615 |
多种数值类型的原因
初代计算机的内存比较小需要根据需求合理的分配内存空间,根据需要选择最适当的数据类型
而现代计算机有很大的内存所以常用int进行使用
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | ±1.175494351E–38 | ±1.175494351E+38 |
DOUBLE | 8 | ±2.2250738585072014E–308 | ±2.2250738585072014E+308 |
定点数类型 | 字节 | 描述 |
---|---|---|
DEC(M,D),DECIMAL(M,D) | M+2 | 最大取值范围与DOUBLE相同,给定DECIMAL的有效取值 范围由M和D决定 |
位类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT(64) |
定点数据类型的由来
定点数类型是为了解决32位时的精度缺失,将数据以字符串存入,数字取出
日期类型
日期类型 | 字节 最小值 | 最大值 |
---|---|---|
DATE | 4 | 1000-01-01 |
DATETIME | 8 | 1000-01-01 00:00:00 |
TIMESTAMP | 4 | 19700101080001 |
TIME | 3 | -838:59:59 |
YEAR | 1 | 1901 |
最大值和最小值代表着格式存在的最大值
DATETIME代表着时间戳但是被UUID替代
day() 、month()、year() 能够截取DATETIM的特定对象时间
now()函数能够获取当前的datetime
常用字符串类型
字符串类型 | 字节 | 描述及存储需求 |
---|---|---|
CHAR(M) | M | M为0~255之间的数 |
VARCHAR(M) | M为0~65535之间的整数,值的长度+1个字节 | |
TEXT | 允许长度0~65535字节,值得长度+2个字节 | |
TINYTEXT | 允许长度0~255字节,值得长度+2个字节 | |
MEDIUMTEXT | 允许长度0~167772150字节,值得长度+3个字节 | |
LONGTEXT | 允许长度0~4294967295字节,值得长度+4个字 |
常使用的是CHAR和VARCHAR
其他的数据类型是存储以前的小说,所以其类型长度很大,但是不能快速的修改和读取很少使用
目前多使用数据仓库来储存小说,用数据库来储存地址
MySQL中的6大约束
NOT NULL 约束字段的值不能为空
DEFAULT 设置字段的默认值
UNIQUE KEY(UK) 约束字段的值是唯一
PRIMARY KEY(PK) 约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT 约束字段的值为自动增长
FOREIGN KEY(FK) 约束字段为表的外键
约束的目的
约束的目的是为了保证数据结构的一致性和完整性
外键约束 PRIMARY KEY
为commodity c_type , commoditytype (ct_id) commodity 为子表commodity type为父表声明外键
- 外键约束存在四种声明方式
//建表时创建带有命名
constraint fk_1 foreign key commodity (c_type) references commoditytype (ct_id)
建表时创建不带有命名
foreign key (c_type) references commoditytype (ct_id)
//commodity 表已存在 不声明命名
alter table commodity
add foreign key (c_type)
references commoditytype (ct_id)
// commodity 表已存在 声明命名
alter table commodity
add constraint fk_1
foreign key (c_type)
references commoditytype (ct_id)
- 外键删除
alter table commodity
drop foreign key fk_PerOrders
注意
子表的取值范围受父表约束
先建父表,再建子表;先有父表数据,再有子表约束
要先删除子表才能删除父表
SQL操作数据库
命令结束标识符
SHOW DATABASES; //显示
CREATE DATABASE database_name;//建立数据库的命令
DROP DATABASE database_name;//删除数据库的命令
USE database_name;//操作数据库
USE database_name;//操作数据库
desc database_name; //查看数据表结构
DROP table_name;//删除表
SHOW TABLES;//查看表
代码实例
商品种类表-commoditytype
字段名 | 数据类型 | 说明 |
---|---|---|
ct_id int | int | 商品种类编号,主键 |
ct_name | varchar(50) | 商品种类名称非空 |
create table commoditytype(
ct_id int(11) primary key,
ct_name varchar(50) not null
)default charset=utf8;
商品表-commodity
字段名 | 数据类型 | 说明 |
---|---|---|
c_id int | int | 商品编号,主键 |
c_name | varchar(50) | 商品名称,非空 |
c_madein | varchar(50) | 商品产地,非空 |
c_type | int | 商品种类,外键 |
c_inprice | int | 商品进价,非空 |
c_outprice | int | 商品售价 |
c_num | int | 商品库存,默认100 |
create table commodity(
c_id int(11) primary key,
c_name varchar(50) not null,
c_madein varchar(50)not null,
c_type int(11) not null,
c_inprice int(11) not null,
c_outprice int(11),
c_num int(11) default '100',
constraint fk_1 foreign key (c_type) references commoditytype (ct_id)
)default charset=utf8;
客户表-customer
字段名 | 数据类型 | 说明 |
---|---|---|
cu_id | int | 客户编号,主键 |
cu_name | varchar(50) | 客户名字,非空 |
cu_phone | varchar(50) | 客户电话,非空 |
cu_gender | int | 客户性别,默认‘1’ |
cu_address | varchar(100) | 客户地址,非空 |
create table customer(
cu_id int(11) primary key,
cu_name varchar(50) not null,
cu_phone varchar(50) not null,
cu_gender int(11) default '1'
)default charset=utf8;
订单表-order
字段名 | 数据类型 | 说明 |
---|---|---|
o_id | int | 订单编号,主键,自增长 |
o_cuid | int | 客户编号 |
o_cid | int | 商品编号 |
o_num | int | 商品数量 |
create table `order`(
o_id int(11) primary key auto_increment,
o_cuid int(11) not null,
o_cid int(11) not null,
o_num int(11) not null,
constraint fk_2 foreign key(o_cuid) references customer (cu_id),
)default charset=utf8;