MySQL
https://downloads.mysql.com/archives/installer/ 下载地址
Windows平台下安装MySQL数据库——最详细教程来啦! - 知乎 (zhihu.com)安装教程
数据库的优点
持久化 便于管理
DB 有组织比较规范 数据仓库
DBMS 数据库管理系统 MySQL Oracle DB2 SqlServer
SQL 结构化程序语言 和数据库通信的语言
1 通用 2灵活使用可以完成复杂数据库操作
列mysqlmy字段 行类似对象
DBMS 分两类
基于共享文件系统
基于客户机-服务器的DBMS 安装两端
命令 net stop/start MySQL 停止/开启服务
mysql -h localhost -P 端口号 -u 账户 -p密码 h代表host p(port)代表端口号 p和密码之间不能有空格
本机 mysql -u 账户 -p密码
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的 二维表 组成的数据库
SQL
-
英文:Structured Query Language,简称 SQL
-
结构化查询语言,一门操作关系型数据库的编程语言
-
定义操作所有关系型数据库的统一标准
-
对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”
2.通用语法
-
SQL 语句可以单行或多行书写,以分号结尾。
-
MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
-
注释
-
单行注释: -- 注释内容 或 #注释内容(MySQL 特有)
-
多行注释: /* 注释 *
-
MySQL 语句规范
不区分大小写 建议关键字 大写 表明 列明小写
每条命令用英文;
每条命令根据需要,可以进行缩进,或者换行 建议关键字单独一行
注释 单行注释 #注释文字
单行注释 -- 注释文字 注意有空格
多行注释 /**/
3.分类
-
DDL(Data Definition Language) 数据定义语言,用来定义数据库对象:数据库,表,列等
-
DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改
-
DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)
-
DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
一些简单的命令(见名知意)
mysql 保存用户信息 nfoemation_schema 保存元数据信息 performance_schema 搜集性能信息性能参数的 这三个数据库 能动 test数据库测试数据库是空的
DDL(Data Definition Language) 数据定义语言,用来定义数据库对象:数据库,表,列等
-- 查询全部数据库 SHOW DATABASES;
-- 创建数据库 CREATE DATABASE 数据库名称; -- 创建数据库(判断:如果不存在则创建) CREATE DATABASE IF NOT EXISTS 数据库名称;
-- 删除数据库 DROP DATABASE 数据库名称; -- 删除数据库(判断:如果存在则删除) DROP DATABASE IF EXISTS 数据库名称;
-- 查看当前使用的数据库 SELECT DATABASE(); -- 使用某个数据库 USE 数据库名称;
select database(); 查看我在哪个库
-- 查询所有数据表 SHOW TABLES;
show tables from 库名;-- 展示数据库中的表;只是看不进去
-- 查询某个表的详细结构 DESC 表名称;
CREATE TABLE 表名 ( 字段名1 数据类型1, 字段名2 数据类型2, … 字段名n 数据类型n ); -- 注意:最后一行末尾不要写逗号
-
语法
-- 删除某个数据表 DROP TABLE 表名; -- 删除某个数据表(判断:如果存在则删除) DROP TABLE IF EXISTS 表名;
-
语法
-- 修改表名 ALTER TABLE 表名 RENAME TO 新的表名; -- 添加一列 ALTER TABLE 表名 ADD 列名 数据类型; -- 修改数据类型 ALTER TABLE 表名 MODIFY 列名 新数据类型; -- 修改列名和数据类型 ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; -- 删除列 ALTER TABLE 表名 DROP 列名;
DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改
-
语法
-
-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…); -- 给全部列添加数据(注意:需要给出全部列的数据) INSERT INTO 表名 VALUES(值1,值2,…); -- 给指定列批量添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…; -- 给全部列批量添加数据(注意:需要给出全部列的数据) INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
- 语法
-
-- 注意:必须加修改的条件、否则将所有数据都修改 UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件];
- 语法
-
-- 注意:必须加删除的条件、否则将所有数据都删除 DELETE FROM 表名 [WHERE 条件];
DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)
-
分类
-
基础查询
-
条件查询(WHERE)
-
分组查询(GROUP BY)
-
排序查询(ORDER BY)
-
分页查询(LIMIT)
-
-
组成 [注意:语法有先后使用顺序]
SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段 HAVING 分组后条件 ORDER BY 排序字段 LIMIT 分页限定
-
语法
-
-- 查询多个字段 SELECT 字段列表 FROM 表名; -- 查询所有数据 SELECT * FROM 表名; -- 去除重复查询 SELECT DISTINCT 字段列表 FROM 表名; -- 起别名(as 可以省略) AS 别名
1.条件查询语法
- 语法
-
SELECT 字段列表 FROM 表名 WHERE 条件列表;
-
语法
-
SELECT 列名列表 FROM 表名 WHERE 字段 LIKE 通配符; - - _ 代表单个任意字符 - - % 代表任意个数字符
-
语法
-
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
-
聚合函数:将一列数据作为一个整体,进行纵向计算。
-
语法
-
SELECT 聚合函数名(列名) FROM 表;
注意事项:null 值不参与所有聚合函数运算。
-
-
语法
-
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
-
语法
-
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
-
-
起始索引 = (当前页码-1) * 每页显示的条数
-
起始索引:从0开始。
-
-
小提示
-
分页查询 limit 是MySQL数据库的方言
-
Oracle 分页查询使用 rownumber
-
SQL Server分页查询使用 top
-
1.约束的概念
-
约束是作用于表中列上的规则,用于限制加入表的数据
-
约束的存在保证了数据库中数据的正确性、有效性和完整性
CREATE TABLE emp( id int PRIMARY KEY AUTO_INCREMENT, -- id 主键、自动增长 ename varchar(50) NOT NULL UNIQUE, -- 姓名,非空、唯一 joindate date NOT NULL, -- 非空 salary double(7,2) NOT NULL, -- 非空 bonus double(7,2) DEFAULT 0 -- 如果无奖金、默认为0 );
mysql不支持check约束
-- 增加非空 ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL; -- 删除非空约束 ALTER TABLE 表名 MODIFY 字段名 数据类型; -- 建表后单独添加唯一约束 ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE; --删除唯一约束 ALTER TABLE 表名 DROP INDEX 字段名; -- 建表后单独添加主键约束 ALTER TABLE 表名 ADD PRIMARY KEY(字段名); --删除主键约束 ALTER TABLE 表名 DROP PRIMARY KEY; -- 建表后单独添加默认约束 ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值; -- 建表后删除默认值 ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;