1.mysql安装在windows
- 先把mysql服务端进程杀死
- 查看进程号 tasklist /findstr mysqld
- taskkill /F /PID 进程号
- 一定要使用管理员运行cmd
###1.1数据类型
整型:
tinyint 小整型 0~255(无符号) -128~127(有符号) 默认是有符号
int 整型:0~65535
bigint 长整型:2**64-1
浮点型:
float:单精度 随着位数的增多不准确
double:多精度 随着位数的增多不准确,比float准备
decimal: 存储准备的数值
字符型:
char: 定长
varchar: 变长
时间:
datetime
枚举:
enum: 二选一
集合:
set : 二选一或多选一
1.2约束
作用: 保证数据的完整性和一致性
- not null 不为空
- default 不管是null还是not null 如果插入空值 那么走default
- unique:
单列唯一:
create table t13(
id int,
name varchar(20) not null,
unique(id)
);
多列唯一:
create table t14(
id int,
name varchar(20),
unique(id),
unique(name)
);
联合唯一:
create table t15(
id int,
name varchar(20),
unique(id,name)
);
主键 一张表中 有一个
create table t16(
id int primary key,
name varchar(20) not null
);
foreign key
(1)先要创建被关联表(主表)
create table department(
id int primary key auto_increment,
name char(20) not null,
des varchar(20) not null
);
(2)创建关联表(从表)
create table employee(
id int primary key auto_increment,
name char(20) not null,
age int not null,
dep_id int not null,
test_id int not null,
constraint fk_dep foreign key(dep_id) references department(id)
on delete cascade
on update cascade,
constraint fk_dep2 foreign key(test_id) references test(id)
on delete cascade
on update cascade
);
insert into department values
(1,'IT','IT技术有限部门'),
(2,'销售部','销售部门'),
(3,'财务部','花钱太多部门');
insert into employee values
(1,'zhangsan',18,1),
(2,'lisi',19,1),
(3,'egon',20,2),
(4,'yuanhao',40,3),
(5,'alex',18,2);
外键的变种
-(1) 多对一和一对多
-(2) 多对多
2.group_concat使用
SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
3.mysql练习题
https://www.cnblogs.com/majj/category/1202022.html
4.Tips
4.1sql语法-if
if(expr1, expr2, expr3); if expr1=True, expr2; else: expr3.
select if(1>2, 2, 3) #输出3
select if(3>2, 2, 3) #输出2