JAVA高级工程师课程笔记整理——(七)Mysql
来源:互联网 发布:阿里云怎么提现 编辑:程序博客网 时间:2024/06/05 16:36
(七)Mysql
登录mysql:
mysql -uroot -p
启动mysql服务:
net start mysql
DBMS---数据库管理系统
关系型数据库
非关系型数据库:
NoSql
mysql默认端口是:3306
查看所有数据库:
show databases
数据库语句:
创建数据库:
create database 数据库名;
使用数据库:
use 数据库名
查看数据库下所有的表
show tables
删除数据库:
drop database 数据库名
sql语句:
数据定义语言(DDL):
CREATE、DROP、ALTER
数据操作语言(DML):
insert,delete,update
数据查询语言(DQL):
select
数据控制语言(DCL)
GRANT、COMMIT、ROLLBACK
创建表:
create table `subject`(
`SubjectNo` int(11) PRIMARY KEY,
`SubjectName` varchar(50),
`ClassHour` int(4),
`GradeID` int(4)
);
mysql数据库数据类型:
数值类型:
tinyint 非常小的整型数据
int 标准整数
double 双精度小数
字符串类型:
char ----固定长度的字符串
varchar ---可变长度字符串
text----文本串
日期和时间型数值类型
datetime --- yyyy-MM-dd HH:mm:ss
NULL值:
没有值
字段属性:
UNSIGNED 无符号
ZEROFILL 0填充
AUTO_INCREMENT 自动增长
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
Null和NOT NULL
设置字段可以为空或不能为空
DEFAULT
设置字段的默认值
mysql数据库语句注释:
单行注释:#
多行注释: /* */
数据表的类型:
InnoDB
支持事务,不支持全文索引,支持外键约束
MyISAM
不支持事务,支持全文索引,不支持外键约束
使用MyISAM: 节约空间及相应速度
使用InnoDB: 安全性,事务处理及多用户操作数据表
修改表:
修改表名:
alter table 旧表名 RENAME AS 新表名;
#添加字段 ctrl+shift+r
alter table stu add wechat VARCHAR(20)
#修改字段
alter table stu modify wechat VARCHAR(30)
#删除字段:
alter table stu drop wechat
查看创建表的sql语句:
show create table 表名
查看表的所有字段:
desc 表名
删除表:
Drop table 表名
增删改查---CRUD
DML:
添加数据 insert
insert into 表名(字段1,字段2...)
values (值1,值2...);
更新数据 update
update 表名 set 字段1=值1,字段2=值2
[where 条件]
删除数据 delete
delete from 表名 [where 条件]
清空表数据:
#删除所有数据
DELETE from student
#清空表
TRUNCATE student
用于完全清空表数据,
但表结构、索引、约束等不变
DQL语句:
SELECT VERSION() 查询数据库版本
SELECT 3*4
查询一张表里的所有数据:
select * from 表名
*代表所有字段
取别名 AS
字段取别名和表名取别名
as可以省略,但最好不要省略
DISTINCT 去重复查询
ALL是默认的
NULL和空字符
联合查询:
内连接:
等值和非等值连接
自身连接查询
inner join 简写 join
外连接:
left join
right join
inner join
on接条件
left join
优先查询左边的表的所有记录
即便在右边的表没有匹配的行
right join
优先查询右边表的所有记录
即便在左边的表没有匹配的行
自身连接查询:
排序
order by
默认是升序ASC
降序 DESC
分页查询:
limit 0,5
limit 5,5
子查询:
mysql常用函数
count() 统计记录数
count(*) 不建议放*,效率低
count(1)
分组查询
group by
having 对分组后条件筛选
having可以脱离group by单独使用吗?
mysql中可以
#查询所有男学生
SELECT * FROM student AS s HAVING s.Sex=1
sql优化:
sql条件执行是从右往左执行
筛选记录越多的条件放后面
比如100名学生,男女各占50%,姓张的人
一共有6个:
select * from student as s
where s.gender='男'
and s.name like '张%' (这个效率高)
select * from student as s
where s.name like '张%'
and s.gender='男'
mysql索引
主键索引
给字段添加主键,主键就是主键索引
CREATE TABLE student(
sid int(11),
sname VARCHAR(30) not NULL,
PRIMARY KEY(sid)
);
最常见的索引类型
确保数据记录的唯一性
确定特定数据记录在数据库中的位置
唯一索引 unique key
CREATE TABLE student(
sid int(11) PRIMARY KEY,
sname VARCHAR(30) not null,
idcard VARCHAR(18),
UNIQUE KEY uq_idcard (idcard)
);
常规索引 index
提高查询效率
不宜添加太多常规索引,
影响数据的插入、删除和修改操作
#添加一般索引
alter TABLE student
ADD INDEX index_cid (cid);
全文索引
只能用于MyISAM类型的数据表
只能用于CHAR、VARCHAR、TEXT数据列类型
适合大型数据集
ALTER TABLE student ENGINE=MyISAM;
ALTER TABLE student ADD FULLTEXT(StudentName);
#查看所有索引
SHOW INDEX FROM student
#删除索引
ALTER TABLE 表名 DROP INDEX 索引名;
添加规则:
在WHERE,ORDER BY 子句中经常使用的字段
字段的值是多个(例如性别字段则不适合)
字段内容不是经常变化的
经常变化的字段,添加索引反而降低性能
不宜过多添加索引
每添加一条索引都会占用磁盘空间
备份和恢复数据库
# 备份myschool数据库如:
> mysqldump -uroot -p myschool>d:/myschool.sql
EnterPassword: *****
-c insert语句有字段
-t 忽略创建表的语句
-d 只创建表,没有insert语句
导入数据库
mysql -uroot -p myschool<c:/tm4.sql
在mysql命令行中:
source c:/tm4.sql
事务管理
MySQL事务处理只支持InnoDB和BDB数据表类型
事务的原则:
原子性
隔离性
持久性
一致性
mysql默认开启事务自动提交
使用事务时应先关闭自动提交
关闭事务自动提交:
set autocommit = 0;
开启事务
start transaction
事务提交:
COMMIT
事务回滚:
ROLLBACK
登录mysql:
mysql -uroot -p
启动mysql服务:
net start mysql
DBMS---数据库管理系统
关系型数据库
非关系型数据库:
NoSql
mysql默认端口是:3306
查看所有数据库:
show databases
数据库语句:
创建数据库:
create database 数据库名;
使用数据库:
use 数据库名
查看数据库下所有的表
show tables
删除数据库:
drop database 数据库名
sql语句:
数据定义语言(DDL):
CREATE、DROP、ALTER
数据操作语言(DML):
insert,delete,update
数据查询语言(DQL):
select
数据控制语言(DCL)
GRANT、COMMIT、ROLLBACK
创建表:
create table `subject`(
`SubjectNo` int(11) PRIMARY KEY,
`SubjectName` varchar(50),
`ClassHour` int(4),
`GradeID` int(4)
);
mysql数据库数据类型:
数值类型:
tinyint 非常小的整型数据
int 标准整数
double 双精度小数
字符串类型:
char ----固定长度的字符串
varchar ---可变长度字符串
text----文本串
日期和时间型数值类型
datetime --- yyyy-MM-dd HH:mm:ss
NULL值:
没有值
字段属性:
UNSIGNED 无符号
ZEROFILL 0填充
AUTO_INCREMENT 自动增长
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
Null和NOT NULL
设置字段可以为空或不能为空
DEFAULT
设置字段的默认值
mysql数据库语句注释:
单行注释:#
多行注释: /* */
数据表的类型:
InnoDB
支持事务,不支持全文索引,支持外键约束
MyISAM
不支持事务,支持全文索引,不支持外键约束
使用MyISAM: 节约空间及相应速度
使用InnoDB: 安全性,事务处理及多用户操作数据表
修改表:
修改表名:
alter table 旧表名 RENAME AS 新表名;
#添加字段 ctrl+shift+r
alter table stu add wechat VARCHAR(20)
#修改字段
alter table stu modify wechat VARCHAR(30)
#删除字段:
alter table stu drop wechat
查看创建表的sql语句:
show create table 表名
查看表的所有字段:
desc 表名
删除表:
Drop table 表名
增删改查---CRUD
DML:
添加数据 insert
insert into 表名(字段1,字段2...)
values (值1,值2...);
更新数据 update
update 表名 set 字段1=值1,字段2=值2
[where 条件]
删除数据 delete
delete from 表名 [where 条件]
清空表数据:
#删除所有数据
DELETE from student
#清空表
TRUNCATE student
用于完全清空表数据,
但表结构、索引、约束等不变
DQL语句:
SELECT VERSION() 查询数据库版本
SELECT 3*4
查询一张表里的所有数据:
select * from 表名
*代表所有字段
取别名 AS
字段取别名和表名取别名
as可以省略,但最好不要省略
DISTINCT 去重复查询
ALL是默认的
NULL和空字符
联合查询:
内连接:
等值和非等值连接
自身连接查询
inner join 简写 join
外连接:
left join
right join
inner join
on接条件
left join
优先查询左边的表的所有记录
即便在右边的表没有匹配的行
right join
优先查询右边表的所有记录
即便在左边的表没有匹配的行
自身连接查询:
排序
order by
默认是升序ASC
降序 DESC
分页查询:
limit 0,5
limit 5,5
子查询:
mysql常用函数
count() 统计记录数
count(*) 不建议放*,效率低
count(1)
分组查询
group by
having 对分组后条件筛选
having可以脱离group by单独使用吗?
mysql中可以
#查询所有男学生
SELECT * FROM student AS s HAVING s.Sex=1
sql优化:
sql条件执行是从右往左执行
筛选记录越多的条件放后面
比如100名学生,男女各占50%,姓张的人
一共有6个:
select * from student as s
where s.gender='男'
and s.name like '张%' (这个效率高)
select * from student as s
where s.name like '张%'
and s.gender='男'
mysql索引
主键索引
给字段添加主键,主键就是主键索引
CREATE TABLE student(
sid int(11),
sname VARCHAR(30) not NULL,
PRIMARY KEY(sid)
);
最常见的索引类型
确保数据记录的唯一性
确定特定数据记录在数据库中的位置
唯一索引 unique key
CREATE TABLE student(
sid int(11) PRIMARY KEY,
sname VARCHAR(30) not null,
idcard VARCHAR(18),
UNIQUE KEY uq_idcard (idcard)
);
常规索引 index
提高查询效率
不宜添加太多常规索引,
影响数据的插入、删除和修改操作
#添加一般索引
alter TABLE student
ADD INDEX index_cid (cid);
全文索引
只能用于MyISAM类型的数据表
只能用于CHAR、VARCHAR、TEXT数据列类型
适合大型数据集
ALTER TABLE student ENGINE=MyISAM;
ALTER TABLE student ADD FULLTEXT(StudentName);
#查看所有索引
SHOW INDEX FROM student
#删除索引
ALTER TABLE 表名 DROP INDEX 索引名;
添加规则:
在WHERE,ORDER BY 子句中经常使用的字段
字段的值是多个(例如性别字段则不适合)
字段内容不是经常变化的
经常变化的字段,添加索引反而降低性能
不宜过多添加索引
每添加一条索引都会占用磁盘空间
备份和恢复数据库
# 备份myschool数据库如:
> mysqldump -uroot -p myschool>d:/myschool.sql
EnterPassword: *****
-c insert语句有字段
-t 忽略创建表的语句
-d 只创建表,没有insert语句
导入数据库
mysql -uroot -p myschool<c:/tm4.sql
在mysql命令行中:
source c:/tm4.sql
事务管理
MySQL事务处理只支持InnoDB和BDB数据表类型
事务的原则:
原子性
隔离性
持久性
一致性
mysql默认开启事务自动提交
使用事务时应先关闭自动提交
关闭事务自动提交:
set autocommit = 0;
开启事务
start transaction
事务提交:
COMMIT
事务回滚:
ROLLBACK
阅读全文
0 0
- JAVA高级工程师课程笔记整理——(七)Mysql
- JAVA高级工程师课程笔记整理——(十三)Linux
- JAVA高级工程师课程笔记整理——(十)Servlet
- JAVA高级工程师课程笔记整理——(一)初识JAVA
- JAVA高级工程师课程笔记整理——(二)JAVA基础
- JAVA高级工程师课程笔记整理——(三)面向对象
- JAVA高级工程师课程笔记整理——(四)高级特性
- JAVA高级工程师课程笔记整理——(五)XML解析
- JAVA高级工程师课程笔记整理——(六)网页三剑客
- JAVA高级工程师课程笔记整理——(八)tomcat与九大内置对象
- JAVA高级工程师课程笔记整理——(九)JDBC与DBUtil
- JAVA高级工程师课程笔记整理——(十一)EL表达式与JSTL
- JAVA高级工程师课程笔记整理——(十二)jquery和ajax
- 笔记整理(java基础七-----问题整理)
- 面试总结——Java高级工程师(二)
- 面试总结——Java高级工程师(三)
- 面试总结——Java高级工程师(三)
- 面试总结——Java高级工程师(二)
- [SQL]只更新表中某一部分数据的实现方法
- eclipse使用技巧
- TLV 解析(Java)
- ReentrantReadWriteLock的简单使用
- ffmpeg Intel硬件加速总结
- JAVA高级工程师课程笔记整理——(七)Mysql
- AndroidStudio 出现问题
- jquery获得radio的值
- jQuery选择器之特殊选择器this
- 乘积最大(加乘)
- Printer Errors
- POJ2061 Subsequence
- 复制构造函数调用私有成员
- linux 关机和重启