MySql 学习笔记

视频出处
总体来讲还可以 逻辑很清晰
如果是初学者建议学完事务后直接跳到idea配置
索引那里对初学者不太友好 以后有项目经验再学可能会更好

随看随记

数据库分类

关系型数据库(SQL)

  • MySQL , Oracle , Sql Server , DB2 ,SQLite
  • 通过表与表之间,行与列之间进行数据的存储 其存储方式类似Excle表格

非关系型数据库(NoSQL Not Only SQL)

  • Redis , MongDB
  • 对像存储 通过自身的属性来决定

SQL操作语句

MySQL的基础命令行操作

所有的语句结尾都要有;

  • mysql -uroot -p123456登陆MySQL
  • update user set password=password('123456')where user='root'; 修改密码
  • flush privileges; 刷新数据库
  • exit; 退出Mysql
  • ? 命令关键词 : 寻求帮助
  • -- 单行注释
  • /* */ 多行注释

数据库操作

操作数据库–> 操作库中的表–>操作表中的数据

  • create database if not exist databaseName如果不存在databaseName名字的数据库则创建一个databaseName的数据库
  • drop database if exist databaseName 如果存在databaseName名字的数据库则删除databaseName数据库
  • use databaseName 使用某数据库
  • show databases 查看所有的数据库
  • show tables; 显示数据库mysql中所有的表
  • describe tableName; 显示表mysql数据库中表的信息

数据库的数据类型

  • 数值
    • int 4个字节整数 存储整数 常用
    • float 单精度浮点数
    • double 双精度浮点数
    • decimal 字符型式浮点数 一般用于金融计算
  • 字符串
    • char 固定大小字符串 0-255
    • varchar 可变大小字符串 0-65535 类比于java中的String 常用
    • tinytext 微型文本 2^8-1 255
    • text 文本串 2^16-1 65535
  • 时间日期
    • date yyyy-MM-dd日期
    • time HH:mm:ss 时间
    • ** datetime yyyy-MM-dd HH:mm:ss 日期时间 最常用的格式**
    • timestamp 返回时间戳 毫秒值 也较为常用
    • year 年份
  • null
    • 不要用null的值去计算 因为其结果也是null

数据库的字段属性

  • Unsigned
    • 无符号的数值类型
    • 如果为true 则该列不能为负数
  • zerofill
    • 当输入的位数不够设置的长度时 用多个0来进行填充
  • 自增
    • 自动在上一条记录的基础上+1 通常被用来设计作为主键~index
    • 自增的数据类型必须时整数类型
    • 可以自定义逐渐的起始值和步长
  • 非空
    • 当非空(not null) 为true时 如果不给其赋值 其就会报错
    • 当非空(not null) 为false时 如果不给其赋值 其会自动将其填充为null
  • 默认
    • 设置默认的值 ,如果不指定该列的值 则会用默认值进行填充

新建数据库表

  • 新建表的字段的基本语法
    `
  • 注意点
  1. create …后面是用() 来限制代码块的
  2. 字段使用`` 括起来
  3. 建立表格 不要使用unsigned 就算是int类型也不要使用unsigned 目前我也不知道为什么 但是使用unsigned就报错
  4. 字符串的使用是使用’ ’ 括起来的
  5. 所有的语句都要加, 但是所后一个语句不需要
  6. PRIMARY KEY ( `id`) 设置主键 一个表的主键一般只有一个
  • 偷懒创建目录的方式 三个语句
  1. show create database bdtabaseName 显示创建该数据库的语句
  2. show create table tableName 显示创建该表的语句
  3. desc tableName 显示表的结构

修改和删除表的字段

  • 修改表中的字段 格式: alter table tableName 操作 操作内容
  • 注意一下 重命名后有一个as
ALTER TABLE student1 RENAME AS student2 # 表格重命名
ALTER TABLE student2 ADD age INT(2) # 添加字段
ALTER TABLE student2 MODIFY age VARCHAR(2) # 修改指定字段的数据类型·
ALTER TABLE student2 CHANGE age age1 INT(2)#  将指定字段 修改成指定名 指定类型的字段
ALTER TABLE student2 DROP age1 # 删除该字段
  • 删除表 drop table if exists tableName
  • 注意
    1. 字段名使用 `` 进行包裹
    2. 在删除 或者添加操作 尽量添加if exist 或者 if not exist 判断 减少报错

物理外键不建议使用 这一部分就简要笔记一下

ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` 
FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

主要保证 两个表的外键的字段所有的属性都是相同的 就可以了

DML语言

增 insert 在表的末尾插入指定数据

  • 语法 insert into tableName ([字段1],[字段2],[字段3]) values (value1_1,value1_2,value1_3),(value2_1,value2_2,value2_3),(value3_1,value3_2,value3_3) ;
    一般第一行写要输入的字段有哪些 后面value 写实际的插入的数据
INSERT INTO student (`name`,`pwd`,`sex`,`gradeid`)
 VALUES ('张三','123456','男','20'),
 ('李四','qwert','女','22'),
 ('王五','asdfgh','男','15') ;
  • 注意点:
    1. 字段用反引号`` , varchar属性用 ’ ’
    2. value \ values 两个关键词都可以
    3. 字段是可以省略的 但是后面的内容必须和表格中的字段要一一对应。

删 delete truncate

  • 删除数据库的某个数据 不能删除某个字段的内容 删除字段的内容需要使用updata
  • 语法 delete from tableName where 条件;
DELETE FROM student WHERE `id`=15; # 删除id为15的数据
# 删除数据库的所有数据,但是表的的索引和结构不会变
DELETE FROM student; 
TRUNCATE  student; 

truncate 清空数据库会重新升值自增列 计数器会清零 delete则不会
在这里插入图片描述

改 updata

  • 修改指定数据 指定字段的值 如果只删除某个字段的值 必须使用updata 将其值修改为null
  • 语法 updata tableName set ([字段1]=value1 ,[字段2]=value2,[字段3]=value3) where 条件;
UPDATE student 
SET `name`='赵六',`sex`='男' 
WHERE `id` BETWEEN 5 AND 20  AND `name`='张三' ;
  • 注意:
    1. set就算写多个字段也不要加()
    2. 如果不写where 表示表中的数据全部修改!!!
    3. value可以实一个数 也可以是一个变量
  • where的逻辑表 在后面

DQL语句

简单查询语句

  • 语法 select [字段1] as 别名1 ,[字段2] as 别名2 from tableName as 别名
  • 从tableName表中查询 以 别名1 和 别名2为字段的 以指定[字段1] 和 [字段2] 的表格
SELECT * FROM `subject`;

SELECT `subjectNo` AS '编号' , `subjectName` AS 名称  FROM `subject`;

SELECT CONCAT('科目编号:',`subjectNo`) AS '新名字' FROM `subject`;

最后一条语句的结果 如果不加as 则其字段就是 CONCAT(‘科目编号:’,`subjectNo`)
在这里插入图片描述

  • 注意:
    1. as 后面的别名加不加 ’ '都可以 不会影响表
    2. concat(str1,str2) sql中的字符串拼接命令 将str2拼接到str1 后面
  • distinct 关键字
    • select distinct [字段] from tableName 从表中查找有关字段的数据并且重复的数据只保留一个
  • 查询的不同功能
    1. 查询函数 select version(); 查询sql版本
    2. 查询表达式 select 100*3-1 ; 计算
    3. 查询变量 select @@auto_increment_increment ; 查询步长

where条件子句

有多个表达式组成 其结果是布尔值

  • 逻辑运算符
  • 在这里插入图片描述
    模糊运算符
    在这里插入图片描述
  • 注意
    1. 只有like中 可以使用 ‘%’ ‘_’ in 中是不可以使用的
    2. between a and b 是[a,b] 包括a和b
    3. 即使数据类型是整形 其书写格式也是like ‘1%’ 在这里插入图片描述
    4. 判空时 需要判断两点 其本身没有属性值为null 或其属性值为空 例如空字符串等等
    5. in的模糊查找可以使得语句更加精简 in的模糊查找只能一个属性一个属性书写 ()里不能穿插逻辑表达式
      下面两段的结果是一样
SELECT `subjectno` AS '科目编号'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值