Mysql 基础

##判断数据库是否存在,存在就删除

drop database if exists testdb;

创建数据库表的操作

create database testdb;

##使用数据库

use testdb;

##判断创建的表是否存在,存在就删除

drop table if exists tb_testInfo;

##创建数据表 create table 表名(字段名 类型 长度 <约束默认值,注释>)

create table tb_testInfo (
 test_id integer(10) comment '测试主键' primary key auto_increment,
 test_name varchar(38) not null,
 test_pwd varchar(20) default '88888888' comment '测试密码'
)

mysql 表约束

– 非空 NOT NULL 指定列在插入数据的时候必须有值 create table tb_testInfo (test_name varchar(38) not null)
– 非负 UNSIGNED 插入的数字不能是负数
– 主键 PRIMARY 列的值必须唯一 create table tb_testInfo (test_id integer(10) primary key)
– 自增 AUTO_INCREMENT 只应用于整型的主键列 create table tb_testInfo (test_id integer(10) primary key auto_increment)
– 默认 DEFAULT 指定默认值
– 注释 COMMENT 说明字段 create table tb_testInfo (test_id integer(10) comment ‘测试主键’ primary key auto_increment)

mysql 常用数据类型

– 极小整形 TINYINT 非负最大值255 1个字节
– 小整形 SAMLLINT 非负最大值65535 2个字节
– 整形 INT 非负最大值4294967295 4个字节
– 单精度 FLOAT 4个字节
– 单精度 DECIMAL M+2字节 可以指定小树位数 DECIMAL(4,3)
– 定长字符串 CHAR 最大保存255个字节 如果值没有到指定长度使用空格补充
– 变长字符串 VARCHAR 最大保存255个字节 用多大占多大
– 文本 TEXT 最大保存65535个字节
– 日期 DATA
– 日期 DATATIME

##判断创建的表是否存在,存在就删除

drop table if exists tb_user;

创建用户表

create table tb_user(
	user_id int auto_increment primary key comment '用户编号',
	user_name varchar(30) not null,
	user_bir date,
	user_gender char(3),
	uesr_state tinyint(1) not null,
	user_height decimal(4,1) not null,
	user_dec text
)

表的操作

表字段新增 语法:alter table tb_user add 字段名称 字段类型 长度 <约束默认值,注释>

alter table tb_user add user_phone varchar(11) not null comment '用户电话';

表字段类型修改 语法

alter table tb_user modify user_phone int(8) not null comment '用户电话';

表字段名称修改

alter table tb_user change user_phone tel_phone varchar(11) not null comment '座机';

查询表字段详情

desc tb_user;

表字段删除

alter table tb_user drop tel_phone;

表名修改

alter table tb_user rename to t_user;

表引擎修改

alter table t_user engine=myisam;

删除表(暴力删除)

drop table t_user;
drop table if exists t_user;


create table td_user3(
	user_id int primary key,
	`name` varchar(10)
)

查询当前数据库中所有的表

show tables;

查询创建表时的SQL语句

show create table td_user2;

表中的数据操作

新增数据 insert into 表名称(字段名1,字段名2… 字段名n)values(值1,值2… 值n),(值1,值2… 值n)

insert into td_user (name,user_sex,user_phone) values ('name',29,18);

简写前提是插入的数据对应所有的字段(需要对应主键)

insert into td_user values (1,'name',29,18);

插入指定列的值(必须插入非空字段)

insert into td_user (user_phone) values (1256);

修改表中的数据 update 表名 set 字段1=修改的值1,字段2=修改的值2… 字段n=修改的值n where 修改的条件

update td_user set user_phone=200 where user_id = 3;

修改条件

update td_user set user_phone=15 where user_phone < 20 or user_phone > 100;

删除表中的数据 delete from 表名 where 删除的条件

delete from td_user where user_id = 3;

查询

基础查询

select * from td_user;

where 查询带条件查询(比较运算 < > <=, != <>, =)

select * from td_user where name='age';
select * from td_user where user_phone < 29;
select * from td_user where user_phone != 29;

逻辑运算符(and or)

select * from td_user where user_phone <= 15 and user_id = 2;
select * from td_user where user_phone <= 15 or user_phone = 29;

模糊匹配 (like,_占位符、%通配符)

select * from td_user where `name` like 'name%';
select * from td_user where `name` like 'na_%';

查询包含字段的

select * from td_user where `name` like '%name%';

IN 查询 多个查询

select * from td_user where user_phone in (15,75,12);

group by 分组查询

count(field) 统计数量

select count(user_id) 用户数量 from td_user;

sum(field) 符合条件相加

select sum(user_phone) 总数 from td_user where `name` like '%name%';

avg(field) 符合条件平均值

select avg(user_phone) 平均 from td_user where `name` like '%name%';

统计所以信息中多个条件的平均值

select avg(user_sex) 平均值 from td_user group by `name`;

显示多行

select name as 名称, avg(user_sex) 平均值 from td_user group by `name`;

oeder by 排序查询

select * from td_user order by user_id asc; ## 升序
select * from td_user order by user_id desc; ## 降序
select * from td_user where user_id > 1 order by user_id asc;

limit 查询结果截取

查询最高值并截取第一个 limit 1 只能出现在最末尾

select max(score) from td_score where cou_id = 1;
select * from td_score where cou_id = 1 order by score desc limit 1;

查询前几名 limit 3

select * from td_score where cou_id = 2 order by score desc limit 3;

使用limit分页显示截取 代表第0个位置查询4条 0代表从那条数据开始往下查询 4 每页显示的数量

select * from td_score limit 0,2; ## 第一页
select * from td_score limit 2,2; ## 第二页
select * from td_score limit 6,2; ## 第三页

合并查询

# 前后查询结果互不干扰
select * from td_score where id=2 union select * from td_score where pass=42;

关联查询

create table t_dept (
 dept_id  int primary key,
 dept_name varchar(30) not null
)

create table t_emt (
 emp_id int primary key,
 emp_name varchar(20) not null,
 emp_salary decimal(5,1) not null,
 dept_id int not null
)

insert into t_dept values(10,'研发部'),(20,'市场部'),(30,'销售部');

insert into t_emt values(1,'zhangsna1',5550,10);
insert into t_emt values(2,'zhangsna2',5550,10);
insert into t_emt values(3,'zhangsna3',5550,10);
insert into t_emt values(4,'wanwu1',3000,20);
insert into t_emt values(5,'wanwu2',3000,20);
insert into t_emt values(6,'lisi',3590,30);

左关联 中关联 右关联 统称外光联

左关联(查询的数据是根据主表中的数据限制的,哪怕是没有主表中对应的数据也会关联空的数据)

select * from t_dept d left join t_emt  e on d.dept_id = e.dept_id;

中关联(查询存在关联的数据,不存在的关联信息自动去掉)

select * from t_dept d join t_emt e on d.dept_id = e.dept_id;

右关联

select * from t_dept d right join t_emt e on d.dept_id = e.dept_id;

内关联

select * from t_dept d,t_emt e where d.dept_id = e.dept_id;

横链接 union(可以去掉重复数据)union all (不会排除重复的数据) 把两个查询的结果来显示

select * from t_emt where dept_id in (10,20)
union
select * from t_emt where dept_id in (30);

mysql 函数

ABS取绝对值

select abs(-0.8),abs(0.8),abs(0);

ceiling 返回大于单前数的最小整数 cil 向上取整

select ceiling(1.1),ceil(1.1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值