MySQL笔记

创建带字符的数据库

create database 数据库名 character set字符集;

修改数据库字符集

alter database 数据库名 character set 字符集;

删除数据库

drop database 数据库名;
drop table if exists 表名;

char与character的区别

char类型适合存储 固定长度的字符串,比如 密码 ,性别一类
varchar类型适合存储 在一定范围内,有长度变化的字符串

创建表

CREATE TABLE 表名(
     字段名称1 字段类型(长度),
    字段名称2 字段类型 注意 最后一列不要加逗号
);

快速创建一个表结构相同的表(复制表结构)

create table 新表明 like 旧表名

修改表

rename table 旧表名 to 新表名

修改表的字符集

alter table 表名 character set 字符集

向表中添加列, 关键字 ADD

alert table 表名 add 字段名称 字段类型
例句:ALTER TABLE category ADD cdescVARCHAR(20);

修改表中列的 数据类型或长度 , 关键字 MODIFY

alter table 表名 modify 字段名称 字段类型
例句:ALTER TABLE category MODIFY cdescVARCHAR(50);

去重

distinct

修改列名称 , 关键字 CHANGE

修改列名称 , 关键字 CHANGE
例句:ALTER TABLE category CHANGE cdesc description VARCHAR(30);

删除列 ,关键字 DROP

alter table 表名 drop 列名;

插入数据

insert into 表名 (字段名1,字段名2…) values(字段值1,字段值2…);
方式1: 插入全部字段,将所有字段名都写出来
INSERT INTO student (sid,sname,age,sex,address)VALUES(1,‘孙悟空’,20,‘男’,‘花果 山’);
 
插入全部字段,不写字段名
INSERT INTO studentVALUES(2,‘孙悟饭’,10,‘男’,‘地球’);
 
插入指定字段的值
INSERT INTO category (cname)VALUES(‘白骨精’);

更改数据

不带条件的修改
update 表名 set 列名 = 值
例句:UPDATE student SET sex = ‘女’;
 
带条件的修改
update 表名 set 列名 = 值 [where 条件表达式:字段名 = 值 ]
例句:UPDATE student SET sex = ‘男’ WHERE sid = 3;
 
一次修改多个列, 将sid为 2 的学员,年龄改为 20,地址改为 北京
例句:UPDATE student SET age = 20,address = ‘北京’ WHERE sid = 2;

删除数据

语法格式1:删除所有数据 delete from 表名
语法格式2: 指定条件 删除数据
如果要删除表中的所有数据,有两种做法

  1. delete from 表名; 不推荐. 有多少条记录 就执行多少次删除操作. 效率低
  2. truncate table 表名: 推荐. 先删除整张表, 然后再重新创建一张一模一样的表. 效率高

查询数据

select 列名 from 表名

请添加图片描述

请添加图片描述

排序

SELECT 字段名 FROM 表名 [WHERE 字段 = 值] ORDER BY 字段名
[ASC / DESC] ASC表示升序排序DESC表示降序排序
 
只按照某一个字段进行排序, 就是单列排序
 
使用 salary 字段,对emp 表数据进行排序 (升序/降序)
默认升序排序 ASC SELECT * FROM emp ORDER BY salary;
 
降序排序
SELECT * FROM empORDER BY salary DESC;
 
同时对多个字段进行排序, 如果第一个字段相同 就按照第二个字段进行排序,以此类推
在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以id 做降序排序
SELECT * FROM emp ORDER BY salary DESC, eid DESC;

聚合函数

请添加图片描述

where 与 having的区别

请添加图片描述

limit 关键字

limit是限制的意思,用于 限制返回的查询结果的行数 (可以通过limit指定查询多少行数据
limit 语法是MySql的方言,用来完成分页
 
limit 语法是 MySql的方言,用来完成分页 limit offset , length;
关键字可以接受一个 或者两个 为0 或者正整数的参数
offset 起始行数, 从0开始记数, 如果省略 则默认为 0, length返回的行数

约束

主键约束 primary key 不可重复 唯一 非空 eid INT PRIMARY KEYAUTO_INCREMENT,
DELETE:只是删除表中所有数据,对自增没有影响
TRUNCATE:truncate是将整个表删除掉,然后创建一个新的表自增的主键,重新从 1开始

唯一 约束 unique 表中的某一列的值不能重复( 对null不做唯一的判断 )
ename VARCHAR(20) UNIQUE

主键约束与唯一约束的区别:

  1. 主键约束 唯一且不能够为空
  2. 唯一约束,唯一 但是可以为空
  3. 一个表中只能有一个主键 , 但是可以有多个唯一约束

非空 not null 某一列不予许为空 ename VARCHAR(20) NOT NULL,

外键 foreign key 外键指的是在 从表 中 与 主表 的主键对应的那个字段,比如员工表的dept_id,就是外键
 
新建表时添加外键
FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
已有表添加外键
ALTER TABLE 从表 ADD FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);

事务

开启事务 start transaction; 或者 BEGIN;
提交事务 commit;
回滚事务 rollback;

手动提交事务流程

执行成功的情况: 开启事务 -> 执行多条 SQL 语句 -> 成功提交事务
执行失败的情况: 开启事务 -> 执行多条 SQL 语句 ->事务的回滚

事务的四大特性 ACID

原子性:每个事务都是一个整体,不可再拆分,事务中所有的 SQL 语句要么都执行成功, 要么都失败。
一致性:事务在执行前数据库的状态与执行后数据库的状态保持一致。如:转账前2个人的 总金额是 2000,转账后 2 个人总金额也2000
隔离性:事务与事务之间不应该相互影响,执行时保持隔离的状态.
持久性:一旦事务执行成功,对数据库的修改是持久的。就算关机,数据也是要保存下来的

事务隔离级别

读未提交:read uncommitted 不可以解决脏读,不可重复读,幻读
读已提交:read committed 可解决脏读
可重复读:repeatable read 可解决脏读,不可重复度
串行化: serializable 可以解决脏读,不可重复读,幻读

read uncommitted < read committed < repeatable read < serializable

表和表的关系

一对多:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键;
多对对:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
一对一:外键唯一主表的主键和从表的外键(唯一),形成主外键关系,外键唯一 UNIQUE

多表查询的分类

隐式内连接
SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;
 
显式内连接
SELECT 字段名 FROM 左表[INNER] JOIN 右表 ON 条件
 
左外连接
SELECT 字段名 FROM 左表 LEFT JOIN 右表 ON 条件
 
右外连接
SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件

子查询

where型 子查询: 将子查询的结果, 作为父查询的比较条件
where型 子查询: 将子查询的结果, 作为父查询的比较条件
exists型 子查询: 子查询的结果是单列多行, 类似一个数组, 父层查询使用 IN 函数 ,包含子查询的结果

索引

主键索引 (primarykey) 主键是一种唯一性索引,每个表只能有一个主键, 用于标识数据表中的每一条记录
唯一索引(unique) 唯一索引指的是 索引列的所有值都只能出现一次, 必须唯一.
普通索引 (index) 最常见的索引,作用就是 加快对数据的访问速度

添加主键索引
ALTER TABLE 表名 ADD PRIMARY KEY ( 列名 )
添加唯一索引
create unique index索引名 on 表名(列名(长度))
添加普通索引
create index 索引名 on 表名(列名[长度])
添加删除索引
ALTER TABLEtable_name DROP INDEX index_name;

索引的优点

  1. 大大的提高查询速度
  2. 可以显著的减少查询中分组和排序的时间。

 
索引的缺点

  1. 创建索引和维护索引需要时间,而且数据量越大时间越长
  2. 当对表中的数据进行增加,修改,删除的时候,索引也要同时进行维护,降低了数据的维护速度

JDBC

什么是jdbc:java访问数据库的标准规范,
作用是统一了访问数据库的标准规范,可以使用一套代码操作所有的关系型数据库。

ResultSetHandler实现类

请添加图片描述

在类中表示一对多的关系

Java类表示一对多关系,可以在多的一方添加一个成员变量,这个成员变量的类型 就是一的一方的类型

在类中表示多对多的关系

Java类表示多对多关系,可以在中间表分别创建成员变量,这个成员变量的类型 就是一的一方的类型

在类中表示多对一的关系

Java类表示多对多关系,可以在一的一方添加一个集合,集合中保存的就是多的一方的数据信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值