视频出处
总体来讲还可以 逻辑很清晰
如果是初学者建议学完事务后直接跳到idea配置
索引那里对初学者不太友好 以后有项目经验再学可能会更好
随看随记
- MySQL数据库中的数据类型总结、
- decimal(num1,num2) 表示有num1个位数 其中有num2个小数位
数据库分类
关系型数据库(SQL)
- MySQL , Oracle , Sql Server , DB2 ,SQLite
- 通过表与表之间,行与列之间进行数据的存储 其存储方式类似Excle表格
非关系型数据库(NoSQL Not Only SQL)
- Redis , MongDB
- 对像存储 通过自身的属性来决定
SQL操作语句
MySQL的基础命令行操作
所有的语句结尾都要有;
mysql -uroot -p123456
登陆MySQLupdate 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
- 默认
- 设置默认的值 ,如果不指定该列的值 则会用默认值进行填充
新建数据库表
- 新建表的字段的基本语法
- 注意点
- create …后面是用() 来限制代码块的
- 字段使用`` 括起来
- 建立表格 不要使用unsigned 就算是int类型也不要使用unsigned 目前我也不知道为什么 但是使用unsigned就报错
- 字符串的使用是使用’ ’ 括起来的
- 所有的语句都要加, 但是所后一个语句不需要
- PRIMARY KEY ( `
id
`) 设置主键 一个表的主键一般只有一个
- 偷懒创建目录的方式 三个语句
- show create database bdtabaseName 显示创建该数据库的语句
- show create table tableName 显示创建该表的语句
- 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
- 注意 :
- 字段名使用 `` 进行包裹
- 在删除 或者添加操作 尽量添加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') ;
- 注意点:
- 字段用反引号`` , varchar属性用 ’ ’
- value \ values 两个关键词都可以
- 字段是可以省略的 但是后面的内容必须和表格中的字段要一一对应。
删 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`='张三' ;
- 注意:
- set就算写多个字段也不要加()
- 如果不写where 表示表中的数据全部修改!!!
- 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`)
- 注意:
- as 后面的别名加不加 ’ '都可以 不会影响表
- concat(str1,str2) sql中的字符串拼接命令 将str2拼接到str1 后面
- distinct 关键字
- select distinct [字段] from tableName 从表中查找有关字段的数据并且重复的数据只保留一个
- 查询的不同功能
- 查询函数 select version(); 查询sql版本
- 查询表达式 select 100*3-1 ; 计算
- 查询变量 select @@auto_increment_increment ; 查询步长
where条件子句
有多个表达式组成 其结果是布尔值
- 逻辑运算符
模糊运算符
- 注意:
- 只有like中 可以使用 ‘%’ ‘_’ in 中是不可以使用的
- between a and b 是[a,b] 包括a和b
- 即使数据类型是整形 其书写格式也是like ‘1%’
- 判空时 需要判断两点 其本身没有属性值为null 或其属性值为空 例如空字符串等等
- in的模糊查找可以使得语句更加精简 in的模糊查找只能一个属性一个属性书写 ()里不能穿插逻辑表达式
下面两段的结果是一样
SELECT `subjectno` AS '科目编号'