数据库笔记

一:概念:
(1)数据库 : 数据存储的仓库
(2)数据库管理系统 : 操纵和管理数据库的大型软件
(3)SQL : 操作关系型数据库的编程语言,是一套标准
(4)关系型数据库 : 建立在关系模型基础上,由多张相互连接的二维表组成的数据库
[1]特点 : 使用表存储数据,格式统一,便于维护
[2]使用SQL语言操作,标准统一,使用方便
(5)MySQL启动 :
net start mysql80
net stop mysql80
(6)MySQL客户端连接
MySQL自带的客户端命令行
mysql [-h 127.0.0.1] [-p 3306] -u(用户名) root -p(密码)
(7)数值类型 :
类型 大小 有符号(SIGNED)范围(无符号为UNSIGNED) 描述
TINYINT 1byte (-128,127) 小整数值
SMALLNT 2byte (-32768,32767) 大整数值
MEDIUMINT 3byte (-8388608,8388607) 大整数值
INT/INTEGER 4byte (-2147483648,2147483647) 大整数值
BIGINT 8byte (-2^63,2^63-1) 极大整数值
FLOAT 4byte 单精度浮点数值
DOUBLT 8byte 双精度浮点数值
DECIMAL 小数值(精确定点数)
(8)字符串类型 :
类型 大小 描述
CHAR 0~255 bytes 定长字符串
VARCHAR 0~65535 bytes 变长字符串
TINYBLOB 0~255 bytes 不超过255个字符的二进制数据
TINYEXT 0~255 bytes 短文本字符串
BLOB 0~65535 bytes 二进制形式的长文本数据
TEXT 0~65535 bytes 长文本数据
MEDIUMBLOB 0~16777215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0~16777215 bytes 中等长度文本数据
LONGBLOB 0~4294967295 bytes 二进制形式的极大文本数据
LONGTEXT 0~4294967295 bytes 极大文本数据
(9)日期类型 :
类型 大小 范围 格式 描述
DATE 3 1000-01-01 至 9999-12-31 YYYY-MM-DD 日期值
TIME 3 -838:59:59 至838:59:59 HH:MM:SS 时间值或持续时间
YEAR 1 1901 至 2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00 至 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:01 至 2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

 

 


二:语法:
(1)SQL通用语法 :
[1]SQL语句可以单行或者多行书写,以分号结尾
[2]SQL语句可以用空格/缩进来增强语句的可读性.
[3]MySQL数据库的SQL语句不区分大小写,关键字建议使用大写.
[4]注释:
a. 单行注释 : -- 注释内容 或 # 注释内容 (MySQL特有)
b.多行注释 : /* 注释内容 */
[5]SQL分类 :
分类 说明
DDL 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML 数据操作语言,用来对数据库表中的数据进行增删改
DQL 数据查询语言,用来查询数据库中表的记录
DCL 数据控制语言,用来创建数据库用户,控制数据库的访问权限
[6]DDL-数据库操作:
{1}查询 :
查询所有数据库 :
SHOW DATABASES ;
查询当前数据库 :
SELECT DATABASE() ;
{2}创建 :
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
{3}删除 :
DROP DATABASE [IF EXISTS] 数据库名;
{4}使用 :
USE 数据库名;

[7]DDL-表操作 :
{1}查询:
查询当前数据库的所有表:
SHOW TABLES;
查询表结构:
DESC 表名;
查询指定表的建表语句:
SHOW CREATE TABLE 表名;
{2}创建:
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
...
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];
{3}修改:
添加字段:
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
修改数据类型:
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
删除字段:
ALTER TABLE 表名 DROP 字段名;
修改表名:
ALTER TABLE 表名 RENAME TO 新表名;
删除表:
DROP TABLE [IF EXISTS] 表名;
删除指定表,并重新创建该表(空表,只删除表中数据)
TRUNCATE TABLE 表名;

[8]DML
{1}添加数据:
给指定字段添加数据:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
给全部字段添加数据:
INSERT INTO 表名 VALUE(值1,值2,...);
批量添加数据:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,..),(值1,值2,...);
INSERT INTO 表名VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
{2}修改数据:
UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,...[WHERE 条件];
//注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
{3}删除数据:
DELETE FROM 表名 [WHERE 条件]
//ps : DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
DELETE语句不能删除某一个字段的值(可以使用UPDATE).

[9]DQL
{1}基本查询:
1.查询多个字段:
SELECT 字段1,字段2,字段3...FROM 表名;
SELECT * FROM 表名;
// * 表示查询所有字段返回,但是不推荐使用
2.设置别名:
SELECT 字段1 [AS 别名1],字段2[AS 别名2] ... FROM 表名;
//ps : "as" 可省略
3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

{2}条件查询:
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

{3}聚合函数:
SELECT 聚合函数(字段列表) FROM 表名 ;
//ps : 常见聚合函数:
函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
//ps : null值不参与所有聚合函数运算.

{4}分组查询:
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]

//where和having的区别
1.执行时机不同 : where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
2.判断条件不同 : where不能对聚合函数进行判断,而having可以.
//ps : 1.执行顺序 : where > 聚合函数 > having
2.分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义.

{5}排序查询:
1. 语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 ,字段2 排序方式2;
2.排序方式:
ASC : 升序(默认值)
DESC : 降序
//ps : 如果是多字段排序,当第一关字段值相同时,才会根据第二个字段进行排序.

{6}分页查询:
1.语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数 ;
//注意: 1.起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数.
2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
3.如果查询的是第一页数据,起始索引可以忽略,直接简写为limit10.

{7}执行顺序:
FROM
表名列表
WHERE
条件列表
GROUUP BY
分组字段列表
HAVING
分组后条件列表
SELECT
字段列表
ORDER BY
排序字段列表
LIMIT
分页参数


{8}编写顺序:
SELECT
字段列表
行顺序:
FROM
表名列表
WHERE
条件列表
GROUUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数

posted @ 2024-06-09 21:48  一颗小清心  阅读(35)  评论(0)    收藏  举报