Mysql基础1

2022年05月11日 阅读数:6
这篇文章主要向大家介绍Mysql基础1,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

数据库

定义mysql

  1. 持久化存储在数据的仓库
  2. 在数据库中,以二维表结构形式存储数据
    表结构:
字段名 描述表信息
记录 表示一条条数据

数据库管理软件

mysql oracle(甲骨文) sqlserver

mysql使用方法

  1. 下载直接官网下载
    注:修改编码方式为utf-8
  2. 不推荐 开始里面找到MySQL,输入密码后出现版本号及其余信息,打开成功
  3. 推荐 使用Navicat for MySQL工具操做MySQL
  4. 打开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

  1. []表示里面内容可选
  2. SHOW TABLES必须先用USE 数据库名找到数据库才能使用
  3. 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 小数值

注:数据库

  1. DOUBLE(4,1)表示数值为4位,有1位小数
  2. 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对数据库中的表的数据记录进行增删改操做

  1. 添加数据
  • 指定字段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,…);
    注:
  1. 插入数据须要与字段一一对应
  2. 字符串和日期须要引号引发来
  3. 不能超出规定数据类型

示例:svg

INSERT INTO person(name,age)VALUES('jack',20)DESC person;
-- name age
-- jack 20
  1. 修改数据
  • UPDATE 表名 SET 字段名1=值1,字段名2=值2,…[WHERE 条件];
UPDATE person SET `name`='mack' WHERE id=1;
DESC person;
-- name age
-- mack 20
  1. 删除数据
  • DELETE FROM 表名 [WHERE 条件];
    注:
    1. DELETE语句条件能够有,也能够没有,若是没有,删除整张表
    2. DELETE语句不能删除某个字段值,若是删除某个字段值使用UPDATE
      应用:
  DELETE FROM person WHERE id=1;
  DESC person;
-- null

DQL数据查询语言,用来查询数据库表中的数据

  1. 查询多个字段
  • SELECT 字段1,字段2,… FROM 表名;
  • SELECT * FROM 表名;
SELECT name FROM person;
--name
--mack
--rose
  1. 设置别名
  • SELECT 字段1[AS 别名1],字段2[AS 别名2]… FROM 表名;
    注:别名也就后面注释
  1. 去除重复记录
  • 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;
--男
--女
  1. 条件查询
  • SELECT 字段列表 FROM 表名 WHRER 条件
SELECT * FROM person WHERE id>2;
-- 3  jack ccc  男 

条件:函数

比较运算符 含义
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<>或!= 不等于
BETWEEN…AND… 在某个范围以内
IN(…) 在in以后的列表中的值,多选一
LIKE 模糊匹配(__匹配单个字符%匹配所有字符)
IS NULL 是null
AND或&& 而且
OR或|| 或者
NOT或1
  1. 聚合函数:将一列数据做为一个总体,纵向计算
  • SELECT 聚合函数(字段列表) FROM 表名;
函数 含义
COUNT 统计数量
MAX 最大值
MIN 最小值
AVG 平均值
SUM 求和
SELECT SUM(id) FROM person;
--SUM id
--6
  1. 分组查询
  • SELECT 字段列表 FROM 表名 [WHRER 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
    WHERE与HAVING区别:
    1. 执行时机不一样,WHERE是分组以前进行查询,不知足条件的不参与分组查询,HAVING是分组后进行过滤
    2. 判断条件不一样,WHERE不能对聚合函数进行判断,HAVING能够
SELECT gender,COUNT(*) FROM person GROUP BY gender;
--gender   COUNT(*)
-- 女        1
-- 男        2 
  1. 排序查询
  • 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  男
  1. 分页查询
  • SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注:
1. 起始索引从0开始。起始=(查询页码-1)*每页记录数
2. 分页查询是数据库方言,Mysql中是LIMIT
3. 若是查询是第一页,起始索引能够省略sqlserver

SELECT * FROM person LIMIT 0,2;
-- 1  mack aaa  男
-- 2  rose bbb  女 

DQL执行顺序

请添加图片描述