d2

解决mysql乱码问题
脚本文件另存设置编码为utf8
客户端连接服务器端设置编码为UTF8
set names utf8;
服务器端创建数据库时设置编码为UTF8
create database xz charset = utf8;
mysql对应的数据类型
数值型
tinyint : 范围 -128~127
smallint :范围 -32768~32767
int :占四个字节
bigint: 了解
float: 单精度浮点型
double: 双精度浮点型
decimal(M,D): m代表有效位数 D代表小数点后有效位数
boolean/bool:布尔类型 true=1 false=0
字符串型
varchar(m):变长字符串,空间几乎不浪费,操作速率慢,max=65535
char(m):定长字符,空间会浪费,速率快,max=255;
日期时间型
date: 日期型
time:时间型
datetime:日期时间型
mysql简单约束关系
主键约束 —— primary key

唯一性:一个表中只能有一个主键约束;
不可重复性:声明了主键约束的列上,不能有重复值;
非空性:主键约束不能为NULL;
主键约束会加快数据的查找速率
id   INT  PRIMARY  KEY

非空约束 —— not null

非空约束不能为null;    
sname VARCHAR(8) NOT  NULL

唯一约束 —— unique

声明了唯一约束的列上,禁止插入重复值
允许插入null(多个null)
phone  INT  UNIQUE

默认值约束 —— default

sex BOOL DEFAULT 1
性别的默认值设置为1      

检查约束 —— check

salary DECIMAL(7,2)  CHECK(salary >=0)
mysql不支持检查约束,会造成服务器压力,影响数据的插入速度

外键约束 —— foreign key

声明了外键约束的列,取值会到另一个表中的主键列上取值
允许插入NULL,一个表中可以有多个外键约束,即表的关联性
外键和对应的主键列数据类型要保持一致
foreign key (外键列名)   references  另一个表(主键列名)

自增列 —— auto_increment

自增列必须添加在主键列上,允许手动赋值
id  INT  PRIMARY KEY AUTO_INCREMENT

练习:编写脚本文件01_tedu.sql,先丢弃再创建数据库tedu,设置编码UTF8,进入数据库,创建保存部门数据的表dept,包含部门编号did,部门名称dname(添加唯一约束),插入以下数据
10 研发部 20 市场部 30 运营部 40 测试部
创建保存员工数据的表emp,包含有编号eid,姓名ename(非空约束),性别sex(默认值),生日birthday,工资salary,所属部门编号deptId (添加外键约束)

#客户端连接服务器端设置编码为utf8
set names utf8;
#丢弃数据库,如果存在则删除
DROP DATABASE IF EXISTS tedu;
#创建数据库tedu
CREATE DATABASE tedu CHARSET = UTF8;
#进入数据库tedu;
USE tedu;
#创建数据库表dept
CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(8) UNIQUE
);
#插入数据
INSERT INTO dept VALUES(10,‘研发部’);
INSERT INTO dept VALUES(20,‘市场部’);
INSERT INTO dept VALUES(30,‘运营部’);
INSERT INTO dept VALUES(40,‘测试部’);
#创建表family
CREATE TABLE emp(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(8) NOT NULL,
sex BOOL DEFAULT 1,
birthday DATE,
salary DECIMAL(7,2),
deptId INT,
FOREIGN KEY (deptId) REFERENCES dept(did)
);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值