xxdd123321

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

需要记得数据库知识点

一、基本操作

SHOW DATABASES  -- 查看所有数据库
USE school -- 切换数据库
SHOW TABLES -- 查看数据库内所有表
DESCRIBE student -- 显示数据库表中所有信息
CREATE DATABASE westos; -- 新建数据库
EXIT -- 退出连接
-- 单行注释
/*
多行注释
*/
-- 删除
DROP DATABASE IF EXISTS westos -- 删除数据库,如果该数据库存在
-- 建立
CREATE DATABASE IF NOT EXISTS westos -- 建立数据库,如果数据库不存在
-- 关键字使用飘```
USE `westos`
-- 查看数据库
SHOW DATABASES -- 查看所有数据库 涉及到多个数据库时database后加s

数据库××语言

DDL 定义

DML 操作

DQL 查询

DCL 控制

二、需要记忆的列类型

数值

  • tinyint 十分小的数据 1个字节

  • smallint 较小的数据 2个字节

  • mediumint 中等大小的数据 3个字节

  • int 标准的整数 4个字节

  • bigint 较大的数据 8个字节

  • float 浮点数 4个字节

  • double 浮点数 8个字节(存在精度问题)

  • decimal 字符串形式的浮点数 金融计算

字符串

  • char 字符串固定大小 0-255

  • varchar 可变字符串 0-65535(常用的变量

  • tinytext 微型文本 2^8-1

  • text 文本串 2^16-1(保存大文本

时间日期

  • date YYYY-MM-DD,日期

  • time HH:MM:SS,时间格式

  • datetime YYYY-MM-DD HH:MM:SS 最常用的时间格式

  • timestamp 时间戳,1970.1.1到现在的毫秒数

  • year 年份表示

null

  • 没有值,未知

  • 注意,不要使用null进行运算,结果为null

三、数据库的字段属性(重点)

unsigned:

  • 无符号的整数

  • 声明了该列不能声明为负数

zerofill:

  • 0填充

  • 不足的位数,使用0来填充,int(3),5->005

自增

  • 通常理解为自增,自动再上一条记录的基础上+1(默认)

  • 通常用来设计唯一的主键 index,必须时整数类型

  • 可以自定义设置主键自增的起始值和步长(高级->自动增量,默认为1)

非空

NULL nut null

  • 设置为not null时,不给它赋值,就会报错

  • null,如果不填写值,默认为null

默认

  • 设置默认值

  • sex,默认值为男,如果不指定该列的值,则有默认值

 

(拓展)

每个表,都必须存在一下五个字段做项目时表示一个记录的健壮性和安全性

  • id 主键

  • version 乐观锁

  • is_delete 伪删除

  • gmt_create 创建时间

  • gmt_update 修改时间

四、创建数据库

  • 列名``

  • 类型 int(), varchar(), datetime()

  • 是否为空 not null

  • 默认值 default'默认内容'

  • 自加(主键或其它)auto_increment

  • 注释 comment'注释内容'

  • 设置引擎 engine

  • 设置编码 charset

-- 创建数据库
CREATE TABLE IF NOT EXISTS `student`(
   `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
   -- 1.类型为int类型展示4位 2.设置不为空 3.设置自增 4.设置注释,使用单引号 5.所有语句最后加,最后一句不用加
   `name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
   -- 1.类型为varchar类型30位 2.设置不为空 3.设置默认值'匿名' 4.设置注释
   `pwd`VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
   -- 1.类型为varchar类型20位 2.设置不为空 3.设置默认值'123456' 4.设置注释
   `sex`VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
   `birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
   -- 1.类型为datetime时间类型 2.设置默认值NULL 3.设置注释
   `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
   -- 1.类型为varchar类型100位 2.设置默认值NULL 3.设置注释
   `email` VARCHAR(50) DEFAULT NULL COMMENT'邮箱',
   -- 1.类型为varchar类型50位 2.设置默认值NULL 3.设置注释
   PRIMARY KEY(`id`)
   -- 设置主键,一般一个表只有一个放到最后
)ENGINE=INNODB CHARSET=utf8
-- 1.设置引擎innodb 2.设置编码utf8

五、数据表类型

关于数据库引擎

  • innodb 默认使用

  • myisam 早些年使用

区别:

 myisaminnodb
事物支持 不支持 支持
数据行锁定 不支持 支持
外键 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约为两倍

常规使用操作:

  • myisam:节约空间,速度快

  • innodb:安全性高,事物的处理,多表多用户操作

 

在物理空间存在的位置

所有的数据库文件都存在data目录下

本质还是文件的存储

MySQL引擎在物理文件上的区别

  • innodb 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件

  • myisam对应文件

    • *.frm 表结构的定义文件

    • *.MYD 数据文件 (data)

    • *.MYI 索引文件(index)、

 

设置数据库表的字符集编码

charset=utf8

不设置的话,会是mysql默认的字符集编码(不支持中文)

MySQL默认的编码是latin1,不支持中文

在my.ini中配置默认的编码

character-set-server=utf8

六、修改删除表

  • 修改

    -- 修改表名字
    ALTER TABLE student RENAME AS students
    -- 添加表字段
    ALTER TABLE students ADD `age` INT(11) NOT NULL DEFAULT'27' COMMENT'年龄'
    -- 查看表
    SHOW KEYS FROM `school`.`students`
    -- 修改表字段(重命名,修改约束)modify:修改
    ALTER TABLE students MODIFY age VARCHAR(11) -- 修改类型
    ALTER TABLE students CHANGE age1 age VARCHAR(11) -- 修改字段名 要加上类型
  • 删除

    -- 删除表的字段
    ALTER TABLE students DROP age
    -- 删除表(如果存在便删除)
    drop table if exists students
  • 所有的创建删除操作尽量加上判断,以免报错

  • 注意点:

    • 字段名使用``包裹

    • 注释 -- /**/

    • sql关键字大小写不敏感,建议小写

七、DML语言(重点 背)

P13

数据库意义:数据存储,数据管理

DML语言:数据操作语言

  • insert

  • update

  • delete

  • 添加

    -- 添加 插入语句
    -- insert into `表名` (`列名`) values(`内容`)
    INSERT INTO`teacher`(`gradename`) VALUES('大四')
    -- 插入多个字段
    INSERT INTO `students`(`name`) VALUES('xd')

    INSERT INTO `students`(`name`, `pwd`, `sex`, `birthday`) VALUES('xd','111111','男','2001.02.10')

    INSERT INTO `students`(`name`, `pwd`, `sex`, `birthday`,`address`,`email`)
    VALUES('xd1','111111','男','2001.02.10','1','2'),
    ('xd2','1sdf111','男','2001.03.10','1','2'),
    ('xd3','1111asdfa11','男','2001.04.10','1','2'),
    ('xd4','1111af','男','2001.05.10','1','2'),
    ('xd5','11afadf','男','2001.06.10','1','2')

    INSERT INTO `students`
    VALUES
    (19,'xd1','111111','男','2001.02.10','1','2'),
    (20,'xd2','1sdf111','男','2001.03.10','1','2')
  • 修改

    update set where

    -- 修改 
    -- update `表名` set `列名`='修改后的值' where 条件
    -- id=1的name修改为'xxdd'
    UPDATE`students` SET `name`='xxdd' WHERE id = 1
    -- 修改多个属性,用逗号隔开
    UPDATE `students` SET `name`='xxxddd',`email`='111111@.com' WHERE id = 1
  • 删除

    delete

    不建议

    -- 删除
    -- delete from
    DELETE FROM `students` WHERE id=1

    truncate

    清空一张表,表的结构和索引约束不会变

    truncate `students`

八、DQL查询数据(重点)

DQL

(data query language:数据查询语言)

select

  • 查询

    -- 查询全部学生
    SELECT * FROM `student`
    -- 查询指定字段
    SELECT `studentno`,`loginpwd` FROM`student`
    -- 查询指定字段 使用AS为结果起名字
    SELECT `studentno` AS '学号',`loginpwd`AS'密码' FROM`student`
    -- 函数 concat(a,b) 拼接字符串
    SELECT CONCAT('姓名:',`studentname`) AS '新名字' FROM student
  • 表达式

    -- 去重 select distinct 重复的数据只显示一条
    SELECT DISTINCT `loginpwd` FROM student
    -- 查看系统版本(函数)
    SELECT VERSION()
    -- 用来计算(表达式)
    SELECT 100*3-1 AS 计算结果
    -- 查询自增步长(变量)
    SELECT @@auto_increment_increment
    -- 加一
    SELECT `studentno`,`loginpwd`+1 AS '加一分后' FROM `student`
    UPDATE `student` SET `loginpwd`='61' WHERE `studentno` = 1,
    UPDATE `student` SET `loginpwd`=62 WHERE `studentno` = 2
    UPDATE `student` SET `loginpwd`=63 WHERE `studentno` = 3
    UPDATE `student` SET `loginpwd`=64 WHERE `studentno` = 4
    UPDATE `student` SET `loginpwd`=65 WHERE `studentno` = 5
    UPDATE `student` SET `loginpwd`=66 WHERE `studentno` = 6
    UPDATE `student` SET `loginpwd`=67 WHERE `studentno` = 7
    UPDATE `student` SET `loginpwd`=68 WHERE `studentno` = 8

    -- 查询指定区间
    SELECT `studentno`,`loginpwd`FROM student
    WHERE `loginpwd`>62 AND `loginpwd`<67

    -- 模糊查询
    SELECT `studentno`,`loginpwd`FROM student
    WHERE `loginpwd` BETWEEN 62 AND 67

    -- 查询姓刘的同学
    UPDATE `student` SET `studentname`='刘一' WHERE`studentno` = 5
    UPDATE `student` SET `studentname`='刘二' WHERE`studentno` = 6
    UPDATE `student` SET `studentname`='刘一二' WHERE`studentno` = 7
    UPDATE `student` SET `studentname`='刘一二三' WHERE`studentno` = 8
    SELECT `studentno`,`studentname` FROM student
    WHERE `studentname` LIKE'刘%'
    SELECT `studentno`,`studentname` FROM student
    WHERE `studentname` LIKE'刘_'
    SELECT `studentno`,`studentname` FROM student
    WHERE `studentname` LIKE'刘__'
  • 联表查询

    -- 联表查询
    SELECT s.`studentno`,s.`studentname`,r.`studentresult`
    FROM student AS s
    INNER JOIN result AS r
    WHERE s.studentno = r.studentno
  • 分页和排序

  • 升序

    SELECT *FROM `student`
    ORDER BY `studentno` ASC
  • 降序

    SELECT *FROM `student`
    ORDER BY `studentno` DESC
  • 分页(limit)

    • 缓解数据库压力

    LIMIT 0,5

    每页五行,从第一页开始

  • 子查询

    本质:在where语句中嵌套一个子查询语句

    where(sclect * from)

九、聚合函数

常用函数暂不记录

函数名称描述
count() 计数
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
   
  • count()

    三种

    SELECT COUNT(`studentno`) FROM student -- count(字段),会忽略所有的null值
    SELECT COUNT(*) FROM student -- count(*),不会忽略null值,本质,计算行数
    SELECT COUNT(1) FROM student -- count(*),不会忽略null值,本质,计算行数

 

posted on   xxdd123321  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
 
点击右上角即可分享
微信分享提示