数据库——表操作,查询,修改

创建表
create table 表名(
     列名1  数据类型,
     列名2  数据类型, 
)character set 字符集 collate 校验规则  engine 存储引擎

字符集和校验规则如果没有另外设置,以所在数据库的字符集和校验规则为准

举个例子:

create table student(
       sno int comment '学号',
       sname varchar(20) comment '姓名',
       sex varchar(10) comment '性别'
       age int comment '年龄'
       )     
查看表结构
desc 表名
修改表

我们用几个栗子来说明

向表中添加两条记录

insert into student values (1001,'张三',‘男’,19),(1002,'李四','男',20);

向表中添加一个字段保存学生的班级

alter table student add class varchar(50) after age;

修改列的数据类型

alter table student modify sname varchar(50);

删除一列

alter table student drop age;

修改表名

alter table student rname to stu;

这里to可以省略

修改列名

alter table stu change sno xuehao int;
删除表
drop table 表名;

表的增删查改

首先建立一张表,便于我们举例操作

create table users(
     id INT PRIMARY KEY,
		 name VARCHAR(20)  NOT NULL,
		 password VARCHAR(50)  NOT NULL,
		 sex VARCHAR(10),
		 age VARCHAR(10)
		 ) 

单行数据+全列插入

INSERT INTO users VALUES (1, '宋江', 'songjing_123','男','35');

在这里插入图片描述

多行数据+指定列插入

INSERT INTO users (id, name, password) VALUES
(2, '孙悟空','sunwukong_123'),
(3, '林黛玉','lindaiyu_123');

在这里插入图片描述

当字段为主键或者唯一键,第一次插入之后就不能再修改

INSERT INTO users VALUES (1, '宋江', 'songjing_123','男','30');

在这里插入图片描述

替换
如果没有主键或者唯一键冲突,则直接插入
如果有主键或者唯一键冲突,则删除原来的再插入

REPLACE INTO users VALUES (4, '宋江', 'songjing_123','男','30');

REPLACE INTO users (id, name) VALUES (3, '宝玉');

在这里插入图片描述

select列

全列查询

select * from users

在这里插入图片描述

指定列查询

select id,name from users

查询字段为表达式

SELECT id, name, age+10 FROM users

在这里插入图片描述

为查询结果指定别名

SELECT name 姓名 FROM users

在这里插入图片描述

去重

SELECT DISTINCT name FROM users

在这里插入图片描述
在这里插入图片描述

where条件

运算符说明
>, >=, <, <=大于,大于等于,小于,小于等于
=等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符

运算符说明
AND多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT条件为 TRUE(1),结果为 FALSE(0)

这里就不一一列举了

结果排序

ASC 为升序
DESC 为降序

select ... from 表名
     order by 列名  ASC/DESC

注意:没有order by的子句查询,返回的顺序是未定的

筛选分页结果

//从0开始筛选n条结果
select  ... from 表名 order by 某列(筛选依据) limit n;
  //从s开始筛选n条结果
select  ... from 表名 order by 某列(筛选依据) limit s,n;
  //从s开始筛选n条结果
select  .. from 表名 order by 某列(筛选依据) limit n offset n;

对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死

update

update 表名 set column=更新值  [where ...]   [order by ...] [limit ...]
update users set age=50  where name='宋江' 

在这里插入图片描述

删除数据

delete from 表名 where ... [order by ...]
DELETE from  users where name='宋江'

在这里插入图片描述

聚合函数
函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义

grope by子句的使用

在select语句中,使用group by子句可以对指定列进行分组

select column1, column2, .. from 表名 group by column;

显示每个部门的平均工资和最高工资

select deptno,avg(sal),max(sal) from EMP group by deptno

显示每个部门的每种岗位的平均工资和最低工资

select avg(sal),min(sal),job, deptno from EMP group by deptno, job
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值