MYSQL 1. 数据库的创建 查询

128 阅读4分钟

DDL 操作数据库的方法

image.png

退出myqsl

退出mysql的方法:可以直接执行exit命令退出mysql,也可以执行quit命令退出mysql。如果要强制退出mysql,可以按【ctrl+d】快捷键

1. 查询操作

SHOW DATABASES

输入 SHOW DATABASE 即可查询到mysql 的自带数据库:

image.png

information_schema 是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

mysql核心数据库,存储MySQL数据库里最核心的信息,例如权限、安全。

sys:系统数据库

performance_schema主要用于收集数据库服务器性能参数(研究性能调优要用到)

原文链接:blog.csdn.net/qq_40991313…

2. 新建一个数据库

新建一个名称是 NEWTABLE 的数据库;

CREATE DATABASE NEWTABLE;

接着查询数据库:SHOW DATABASE

image.png

3. 进入一个数据库并查询

输入 USE 数据库名称;

USE NEWTABLE;

查询数据库下的所有表格:

SHOW TABLES;

表里没有任何数据 Empty set (0.00 sec)

查询 sys

USE sys;
SHOW TABLES;
image.png

查询表结构

USE sys;
DESC host_summary;
image.png

表的创建、修改与删除

创建


    CREATE TABLE IF NOT EXISTS ` yx_user`(
       `id` INT UNSIGNED AUTO_INCREMENT,
       `name` VARCHAR(40) NOT NULL,
       `phone` VARCHAR(40) NOT NULL,
       `submission_date` DATE,
       PRIMARY KEY ( `id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

修改表名 alter table student rename to stu;

alter table yx_user rename to users;

给指定列添加数据(数据库操作语言DML)

INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);

INSERT INTO users (name,phone, submission_date)VALUES ('003','2240629','2022-12-22');

查看数据

select * from users; 

查询表结构


DESC 表名称;

删除一行数据

DELETE FROM users WHERE name='003';

添加一列

alter table users add address varchar(10);
alter table users add addre varchar(10);

删除一列数据

ALTER TABLE 表名 DROP 列名;
alter table users drop addre;

修改数据类型

ALTER TABLE 表名 MODIFY 列名 新数据类型;
alter table users modify phone char(25);

修改列名和数据类型

ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

alter table users change address addr varchar(50);

更新数据 (UPDATE & WHERE)

UPDATE users SET address='shanghai' WHERE id=2;

删除表

DROP TABLE **;

后续。。。(重要) 数据查询语言DQL

这里需要 设置mysql 的编码方式,否则会报错

CREATE TABLE stu (
 id int, -- 编号
 name varchar(20), -- 姓名
 age int, -- 年龄
 sex varchar(5), -- 性别
 address varchar(100), -- 地址
 math double(5,2), -- 数学成绩
 english double(5,2), -- 英语成绩
 hire_date date -- 入学时间
)ENGINE=InnoDB DEFAULT CHARSET=utf8;  

INSERT INTO stu(id,name,age,sex,address,math,english,hire_date) 
VALUES 
(1,'xiaoma',55,'男','杭州',66,78,'1995-09-01'),
(2,'xiaoma1',45,'女','深圳',98,87,'1998-09-01'),
(3,'xiaoma2',55,'男','香港',56,77,'1999-09-02'),
(4,'xiaola',20,'女','湖南',76,65,'1997-09-05'),
(5,'xiaoha',20,'男','湖南',86,NULL,'1998-09-01'),
(6,'xiaoliu',57,'男','香港',99,99,'1998-09-01'),
(7,'xiaozhang',22,'女','香港',99,99,'1998-09-01'),
(8,'dege',18,'男','南京',56,65,'1994-09-02');
查询字段
SELECT DISTINCT name AS '名字',age AS '年龄' FROM stu;

SELECT * FROM stu;

SELECT DISTINCT * stu; -- 去重查询

SELECT DISTINCT name AS '名字',age AS '年龄' FROM stu WHERE age>23 && age<=40;  --条件查询

SELECT * FROM student WHERE name LIKE '_iaom%';  -- 模糊查询  _单个   %多个

select * from stu order by math desc , english asc ;  -- 排序查询

image.png
其他模糊查询

image.png

查询的完整语法:

SELECT 
    字段列表
FROM 
    表名列表 
WHERE 
    条件列表
GROUP BY
    分组字段
HAVING
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

聚合函数

函数名功能
count(列名)统计数量(选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

分组查询

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

###分组查询 聚合函数

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
select sex, avg(math) from stu group by sex;

image.png

select sex,avg(math),count(*)  from stu where math>70 group by sex having count(*)>2;

image.png

注意:where 和 having 区别: 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。执行顺序where>聚合函数having,不可能判断后面执行的条件。