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);
-- 子查询
【笔记】数据库操作
最新推荐文章于 2023-07-17 23:23:46 发布