数据库
定义mysql
- 持久化存储在数据的仓库
- 在数据库中,以二维表结构形式存储数据
表结构:
字段名 | 描述表信息 |
---|---|
记录 | 表示一条条数据 |
数据库管理软件
mysql oracle(甲骨文) sqlserver
mysql使用方法
- 下载直接官网下载
注:修改编码方式为utf-8 - 不推荐 开始里面找到MySQL,输入密码后出现版本号及其余信息,打开成功
- 推荐 使用Navicat for MySQL工具操做MySQL
- 打开Navicat for MySQL点击查询,点击新建查询
Mysql
DDL数据库操做
命令 | 含义 |
---|---|
SHOW DATABASES | 查询全部数据库 |
SELECT DATABASE() | 查询当前数据库 |
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则] | 建立库 |
DROP DATABASE[IF EXISTS]数据库名 | 删除库 |
USE 数据库名 | 使用库 |
SHOW TABLES | 查询当前数据库全部表 |
DESC 表名 | 查询表结构 |
SHOW CREATE TABLE 表名 | 查询指定表的建表语句 |
CREATE TABLE 表名(字段 字段类型[COMMENT 字段注释])[表注释] | 建立表 |
ALTER TABLE 表名 ADD 字段名(长度)[COMMENT 注释] | 表操做,添加字段 |
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度) | 修改数据类型 |
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释] | 修改字段名和数据类型 |
ALTER TABLE 表名 DROP 字段名 | 删除字段 |
DROP TABLE [IF EXISTS]表名 | 删除表 |
TRUNCATE TABLE 表名 | 删除表 |
注:web
- []表示里面内容可选
- SHOW TABLES必须先用USE 数据库名找到数据库才能使用
- TRUNCATE TABLE 表名会先删除表,而后再从新创一个空表单
示例:
建立库
SHOW DATABASES;
/*mysql
test*/
SELECT DATABASE();
-- mysql
CREATE DATABASE test2;
/*mysql
test
test2*/
DROP DATABASE test2;
/*mysql
test*/
建立表sql
USE test2;
--激活使用库test2
SHOW TABLES;
--显示为空
CREATE TABLE person(name VARCHAR(10),age INT)
--建立表单
DESC person;
--name VARCHAR(10)
--age INT
ALTER TABLE person ADD gender CHAR(1);
--添加一个字段gender
DESC person;
--name VARCHAR(10)
--age INT
--gender CHAR(1)
ALTER TABLE person CHANGE name myname CHAR(10);
--替换name
DESC person;
--myname VARCHAR(10)
--age INT
--gender CHAR(1)
DROP TABLE person;
--删除
DESC person;
--null
数据类型
数值类型 | 大小 | 含义 |
---|---|---|
TINYINT | 1字节 | 小整数值 |
SMALLINT | 2字节 | 大整数值 |
MEDIUMINT | 3字节 | 大整数值 |
INT或INTEGER | 4字节 | 大整数值 |
BIGINT | 8字节 | 极大整数值 |
FLOAT | 4字节 | 单精度 浮点数值 |
DOUBLE | 8字节 | 双精度 浮点数值 |
DECIMAL | 小数值 |
注:数据库
- DOUBLE(4,1)表示数值为4位,有1位小数
- unsinged添加在数值类型后,表示不为负值
字符串类型 | 大小 | 含义 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过255个字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65535字节 | 二进制的长文本数据 |
TEXT | 0-65635字节 | 长文本数据 |
MEDIUMBLOB | 0-16777215字节 | 二进制中等长度文本数据 |
MEDIUMTEXT | 0-16777215字节 | 中等长度文本数据 |
LONGBLOB | 0-4294967295 | 二进制形式极大文本数据 |
LONGTTEXT | 0-4294967295字节 | 极大文本数据 |
注:CHAR(X)与VARCHAR(X)表示只能存储最大10个字符串oracle
日期时间类型 | 大小 | 格式 | 含义 |
---|---|---|---|
DATE | 3 | YYYY-MM-DD | 日期值 |
TIME | 3 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | YYYY | 年份值 |
DATETIME | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | YYYYMMDD HHMMSS | 时间戳 |
DML对数据库中的表的数据记录进行增删改操做
- 添加数据
- 指定字段INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…);
- 给所有字段INSERT INTO 表名VALUES(值1,值2,…);
- 批量添加数据INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…)(值1,值2,…);
- 全部批量添加数据INSERT INTO 表名VALUES(值1,值2,…);
注:
- 插入数据须要与字段一一对应
- 字符串和日期须要引号引发来
- 不能超出规定数据类型
示例:svg
INSERT INTO person(name,age)VALUES('jack',20);
DESC person;
-- name age
-- jack 20
- 修改数据
- UPDATE 表名 SET 字段名1=值1,字段名2=值2,…[WHERE 条件];
UPDATE person SET `name`='mack' WHERE id=1;
DESC person;
-- name age
-- mack 20
- 删除数据
- DELETE FROM 表名 [WHERE 条件];
注:- DELETE语句条件能够有,也能够没有,若是没有,删除整张表
- DELETE语句不能删除某个字段值,若是删除某个字段值使用UPDATE
应用:
DELETE FROM person WHERE id=1;
DESC person;
-- null
DQL数据查询语言,用来查询数据库表中的数据
- 查询多个字段
- SELECT 字段1,字段2,… FROM 表名;
- SELECT * FROM 表名;
SELECT name FROM person;
--name
--mack
--rose
- 设置别名
- SELECT 字段1[AS 别名1],字段2[AS 别名2]… FROM 表名;
注:别名也就后面注释
- 去除重复记录
- SELECT DISTINCT 字段列表 FROM 表名;
INSERT INTO person (id,name,url,gender) VALUES (3,'jack','dafda','男');
SELECT * FROM person;
-- id name url gender
-- 1 mack aaa 男
-- 2 rose bbb 女
-- 3 jack ccc 男
SELECT DISTINCT gender FROM person;
--男
--女
- 条件查询
- SELECT 字段列表 FROM 表名 WHRER 条件
SELECT * FROM person WHERE id>2;
-- 3 jack ccc 男
条件:函数
比较运算符 | 含义 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
BETWEEN…AND… | 在某个范围以内 |
IN(…) | 在in以后的列表中的值,多选一 |
LIKE | 模糊匹配(__匹配单个字符%匹配所有字符) |
IS NULL | 是null |
AND或&& | 而且 |
OR或|| | 或者 |
NOT或1 | 非 |
- 聚合函数:将一列数据做为一个总体,纵向计算
- SELECT 聚合函数(字段列表) FROM 表名;
函数 | 含义 |
---|---|
COUNT | 统计数量 |
MAX | 最大值 |
MIN | 最小值 |
AVG | 平均值 |
SUM | 求和 |
SELECT SUM(id) FROM person;
--SUM id
--6
- 分组查询
- SELECT 字段列表 FROM 表名 [WHRER 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
WHERE与HAVING区别:- 执行时机不一样,WHERE是分组以前进行查询,不知足条件的不参与分组查询,HAVING是分组后进行过滤
- 判断条件不一样,WHERE不能对聚合函数进行判断,HAVING能够
SELECT gender,COUNT(*) FROM person GROUP BY gender;
--gender COUNT(*)
-- 女 1
-- 男 2
- 排序查询
- SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
排序方式 | 含义 |
---|---|
ASC | 升序(默认值) |
DESC | 降序 |
注:多字段排序时,第一个字段相同,才会进行第二个字段排序工具
SELECT * FROM person ORDER BY id DESC;
-- id name url gender
-- 3 jack ccc 男
-- 2 rose bbb 女
-- 1 mack aaa 男
- 分页查询
- SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
注:
1. 起始索引从0开始。起始=(查询页码-1)*每页记录数
2. 分页查询是数据库方言,Mysql中是LIMIT
3. 若是查询是第一页,起始索引能够省略sqlserver
SELECT * FROM person LIMIT 0,2;
-- 1 mack aaa 男
-- 2 rose bbb 女