【笔记】数据库操作

SHOW DATABASES;
-- 显示所有数据库

CREATE DATABASE db1;
-- 新建数据库:CREATE DATABASE 数据库名称;

CREATE DATABASE IF NOT EXISTS db1;
-- 判断数据库是否存在,不存在就创建数据库:CREATE DATABASE IF NOT EXISTS 数据库名称;

DROP DATABASE db1;
-- 删除数据库:DROP DATABASE 数据库名称;

DROP DATABASE IF EXISTS db1;
-- 判断数据库是否存在,如果存在就删除数据库:DROP DATABASE IF EXISTS 数据库名称;

USE db1;
-- 使用数据库:USE 数据库名称;

SELECT DATABASE();
-- 查看当前数据库名称

SHOW TABLES;
-- 查询当前数据库下所有表名

DESC student;
-- 查询表结构:DESC 表名称;

CREATE TABLE student(
id int,
name varchar(20),
age int,
sex varchar(5),
address varchar(32),
math double(5,2),
english double(5,2),
hire_date date
);
-- 创建表: CREATE TABLE 表名 (    字段名1  数据类型1,    字段名2  数据类型2,    …    字段名n  数据类型n);

DROP TABLE student; 
-- 删除表:DROP TABLE 表名;

DROP TABLE IF EXISTS student;
-- 判断表是否存在,如果存在就删除:DROP TABLE IF EXISTS 表名;

ALTER TABLE student RENAME TO stu;
-- 给表修改名称:ALTER TABLE 表名 RENAME TO 新的表名;

ALTER TABLE stu ADD birthday varchar(10);
-- 给表添加一列:ALTER TABLE 表名 ADD 列名 数据类型;

ALTER TABLE stu MODIFY birthday varchar(20);
-- 修改列的数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;

ALTER TABLE stu CHANGE birthday bir INT; 
-- 修改列的名称和数据类型:ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

ALTER TABLE stu DROP bir;
-- 删除列:ALTER TABLE 表名 DROP 列名;

INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date) VALUES(1,'马运',55,'男','杭州',66,78,'1995-09-01');
-- 给指定列添加数据:INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);

INSERT INTO stu VALUES (2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');

UPDATE stu SET age = 20 WHERE name = '柳白';
-- 修改对应人物的对应数据

UPDATE stu SET age = 55,address = '杭州' WHERE name = '马运';
-- 修改对应人物的多个数据

DELETE FROM stu WHERE name = '张三';
-- 删除人物对应的所有数据

DELETE FROM student;
-- 删除对应表中所有数据

SELECT name as 姓名 FROM stu;
-- 查询表中对应列名的所有数据

AS
-- 起别名

SELECT * FROM stu;
-- 查询表中所有数据

SELECT DISTINCT age FROM stu;
-- 查询并且去重

SELECT age,name FROM stu;
-- 查询多列数据

SELECT name FROM stu WHERE age >30;
-- 条件查询:SELECT 字段列表 FROM 表名 WHERE 条件列表;
/*
大于:>
大于等于:>=
大于等于并且小于等于: age >= 20 &&  age <= 30;
											age >= 20 and  age <= 30;推荐使用and
也可以使用  between ... and 来实现:BETWEEN 20 and 30;
不等于:!=,<>
null值的比较不能使用 =  或者 != 。需要使用 is  或者 is not
*/

/*
模糊查询
like关键字,可以使用通配符进行占位:
(1)_ : 代表单个任意字符
(2)% : 代表任意个数字符
*/

SELECT * FROM stu WHERE name LIKE'马%';
-- 查询姓'马'的学

SELECT * FROM stu WHERE name LIKE'_花%';
-- 查询第二个字是'花'的学员信息  

SELECT * FROM stu WHERE name LIKE'%德%';
-- 查询名字中包含 '德' 的学员信息

/*
排序查询:SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
- ASC : 升序排列 (默认值)
- DESC : 降序排列
*/

SELECT * FROM stu ORDER BY age ASC;
-- 查询学生信息,按照年龄升序排列

SELECT * FROM stu ORDER BY math DESC; 
-- 查询学生信息,按照数学成绩降序排列

SELECT * FROM stu ORDER BY math DESC,english ASC;
-- 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

/*
聚合函数分类:SELECT 聚合函数名(列名) FROM 表;
count(列名):统计数量(一般选用不为null的列)
max(列名):最大值
min(列名):最小值
sum(列名):求和
avg(列名):平均值
*/

SELECT COUNT(*)FROM stu;
-- 统计班级一共有多少个学生

SELECT MAX(math)FROM stu;
-- 查询数学成绩的最高分

SELECT MIN(math)FROM stu;
-- 查询数学成绩的最低分

SELECT SUM(math)FROM stu;
-- 查询数学成绩的总分

SELECT AVG(math)FROM stu;
-- 查询数学成绩的平均分

/*
分组查询:SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
*/

SELECT sex,AVG(math)FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分

SELECT sex,AVG(math),COUNT(*)FROM stu GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,以及各自人数

SELECT sex,AVG(math),count(*)FROM stu WHERE math > 70 GROUP BY sex;
-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

SELECT sex,AVG(math),count(*)FROM stu WHERE math > 70 GROUP BY sex HAVING COUNT(*) > 2;
-- 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的

/*
分页查询:SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;
起始索引 = (当前页码 - 1) * 每页显示的条数
*/

SELECT * FROM stu LIMIT 0,3;
-- 从0开始查询,查询3条数据

SELECT * FROM stu LIMIT 3,3;
-- 每页显示3条数据,查询第2页数据

IFNULL(查询值,赋值)
-- 如果查询值为空,就将赋值赋给查询值

SELECT * FROM t_employee WHERE sal = (SELECT MAX(sal)FROM t_employee);
-- 子查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值