DDL 操作数据库的方法
退出myqsl
退出mysql的方法:可以直接执行exit命令退出mysql,也可以执行quit命令退出mysql。如果要强制退出mysql,可以按【ctrl+d】快捷键
1. 查询操作
SHOW DATABASES
输入 SHOW DATABASE 即可查询到mysql 的自带数据库:
information_schema 是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
mysql核心数据库,存储MySQL数据库里最核心的信息,例如权限、安全。
sys:系统数据库
performance_schema主要用于收集数据库服务器性能参数(研究性能调优要用到)
原文链接:blog.csdn.net/qq_40991313…
2. 新建一个数据库
新建一个名称是 NEWTABLE 的数据库;
CREATE DATABASE NEWTABLE;
接着查询数据库:SHOW DATABASE
3. 进入一个数据库并查询
输入 USE 数据库名称;
USE NEWTABLE;
查询数据库下的所有表格:
SHOW TABLES;
表里没有任何数据 Empty set (0.00 sec)
查询 sys
USE sys;
SHOW TABLES;
查询表结构
USE sys;
DESC host_summary;
表的创建、修改与删除
创建
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 ; -- 排序查询
其他模糊查询
查询的完整语法:
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;
select sex,avg(math),count(*) from stu where math>70 group by sex having count(*)>2;
注意:where 和 having 区别: 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。执行顺序where>聚合函数having,不可能判断后面执行的条件。