欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL基础学习笔记

程序员文章站 2022-05-03 19:18:49
...

1、MySQL数据类型
MySQL基础学习笔记
2、datetime、timestamp什么区别

https://www.cnblogs.com/xuliuzai/p/10901425.html

MySQL基础学习笔记

3、sql类型
MySQL基础学习笔记
4、建表规范

1)案例

create table ruozedata.rz(
id int(11)  not null auto_increment, 第一列必须是自增长id

name varchar(255),
age  int(3),

create_user varchar(255),
create_time timestamp not null default current_timestamp,

update_user varchar(255),
update_time timestamp not null default current_timestamp on update current_timestamp,
primary key(id)  主键= 唯一约束 +not null非空约束
);

2)规范:

1)表名称、字段名称,不要写中文,尽量不要汉语拼音
(2)统一风格;3)第一个字段必须是自增长字段 主键,且 无业务意义,架构设计默认规则
(4)一张表只有一个主键 id,业务字段需要唯一的话,就使用唯一约束来保证。
ALTER TABLE ruozedata.rz 
ADD CONSTRAINT rz_un UNIQUE KEY (name);5)后面四个字段  务必加上:create_user,create_time ,update_user ,update_time 
(6)业务字段  注释务必要加上:comment 'xxx'

5.增删改查(insert,update,select,delete)

insert into ruozedata.rz(name,age) values('ruoze',18);

update ruozedata.rz set age=38 where name='ruoze';

select * from ruozedata.rz;

delete from ruozedata.rz where id=1;

5.其他语法
create

drop table ruozedata.rz;

create table ruozedata.rz(
id    int(11)  not null auto_increment, 

name  varchar(255) comment '姓名',
age   int(3) comment '年龄',

create_user varchar(255),
create_time timestamp not null default current_timestamp,
update_user varchar(255),
update_time timestamp not null default current_timestamp on update current_timestamp,
primary key(id)
);

–1.过滤 where

select * from ruozedata.rz  where name='ruoze';
select * from ruozedata.rz  where name='jepson' and age=22;

select * from ruozedata.rz  where age=16 or age=12;
select * from ruozedata.rz  where age in (16,12);
select * from ruozedata.rz a where exists (
select b.id from ruozedata.rz b where (age=16 or age=12 ) and .id=b.id);
select * from ruozedata.rz  where age >12;

-2.排序语法 order by

select * from ruozedata.rz order by age;
select * from ruozedata.rz order by age asc;

select * from ruozedata.rz order by age desc , name desc ;

–3.模糊匹配 like

select * from ruozedata.rz where name like 'j%';  字母j开头
select * from ruozedata.rz where name like '%n';  字母n开头

select * from ruozedata.rz where name like '%o%';  含有o

select * from ruozedata.rz where name like '__p%'; 第三位p_ 占位符

–4.合并表

create table t1(id int,name varchar(255));
create table t2(id int,name varchar(255));

insert into t1 values(1,'ruoze');
insert into t2 values(1,'ruoze');
insert into t2 values(2,'jepson');

–5.过滤重复

select * from t1
union 
select * from t2;

–6.不过滤重复

select * from t1
union all
select * from t2;

–7.分组语法 group by …having …
分组/聚合函数

sum 
avg
max
min
count

–8.不带分组字段的

select 
sum(age),avg(age),max(age),min(age),count(*)
from ruozedata.rz ;

–9.分组字段的

select 
name,
sum(age),count(1)
from ruozedata.rz 
group by name
having sum(age)>18;

==> 等价于 子查询进行筛选

select * from 
(
	select 
	name,
	sum(age) as sum_age,count(1) as c
	from ruozedata.rz 
	group by name
) as t where t.sum_age>18;
相关标签: MySQL mysql