数据库MySQL
2017-05-18 20:26:03 10 举报
AI智能生成
数据库是一个用于存储、管理和检索数据的计算机系统。它以结构化的方式组织数据,使得用户可以轻松地查找、更新和分析信息。数据库通常由一个或多个表组成,每个表包含一系列相关的数据记录。这些记录以行和列的形式排列,其中每一列代表一个特定的数据类型(如文本、数字或日期),而每一行则表示一个独立的数据项。数据库管理系统(DBMS)负责处理对数据库的所有操作,包括添加、删除和修改数据,以及执行复杂的查询和报告任务。常见的数据库类型包括关系型数据库(如MySQL、Oracle和SQL Server)、非关系型数据库(如MongoDB和Redis)以及分布式数据库(如Hadoop和Cassandra)。
作者其他创作
大纲/内容
JDBC操作数据库的六个步骤:\u00A0\u00A0
注册驱动;Class.forName(\"com.mysql.jdbc.Driver\");
获取数据库;Connection con=DriverManager.getConnection(\"jdbc:mysql://localhost:3306/baby\
通过con获取Statement对象;Statement st =con.createStatement();
发送并执行SQL语句;String sql=\"select * fromstudent where name like'刘__'\"; ResultSet rs = st.executeQuery(sql);
遍历结果集;while(rs.next()){ //有结果集就进去\u00A0\u00A0\u00A0\u00A0 \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 System.out.println(\"id:\"+rs.getInt(\"id\"));\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 }\u00A0\u00A0
关闭数据源。
事务
con.setAutoCommit(false);//手动事务\u00A0
con.rollback();//回滚
con.commit();//提交
函数
逻辑函数
subString(字段 from num for num):将字段从第几个截取到第几个
1、upper(字段):将字段转大写;
lower(字段):将字段转小写
position(‘元素’ in 列名):元素在字段的哪个位置
character_length(字段):统计字段的长度
trim(字段):去两侧空格
聚合函数:(不跟where和order by 语句)
1、count(*):统计多少行;
max(字段):最大值
min(字段):最小值
avg(字段):平均值
sum(字段):求和
其他函数:包括数学函数
分组函数:group by
having:子语句,分组后过滤;
ceil(列):向上取;
floor(列):向下取
mod(列,列):取余
ABS(列):取绝对值
limit 分页
一、limit num:取前num条数据 limit num1,num2 从第num条开始,取num条后num1条数据;
笔试题 having与where 区别?
1.Where是用于分组前进行过滤,having是用于分组后进行过滤。
2.where后面不可以使用聚合 函数,having后面可以使用
子查询
按结果分
单行单列:span lang=\"EN-US\
多行单列:in(),any(),and()
多行多列:
按性质分(子有没有用到父的条件)
相关子查询
非相关子查询
自连接
select * from 表 as 名span lang=\"EN-US\
视图
create view 图名 as select语句;
如果视图中的SQL使用了group up,having,span lang=\"EN-US\
视图的优点
简化查询
简化结构
安全性
数据完整性
视图缺点
性能不高,数据更新受限
修改数据库密码
1) 停止mysql服务器 运行输入services.msc 停止mysql服务
2) 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
3) 新打开cmd 输入mysql -u root -p 不需要密码 use mysql; update user set password=password('abc') WHERE User='root';
4) 关闭两个cmd窗口 在任务管理器结束mysqld 进程
5) 在服务管理页面 重启mysql 服务
密码修改完成
DOS窗口数据库命令
show databases:查看数据库
use 数据库名字:进入数据库
show tables;查看表。
数据库MySQL
基本内容
什么是数据库?
存储持久型数据的集合。(本质是文件系统)
数据库规则
数据库里的数据集合都存放在数据表里
数据表有数据行(row)和数据列组成
一个数据行就是数据表里的一条记录
记录可以包含多个信息项,数据表里的每一个数据列都对应一个信息项
数据库的的作用?
子主题
什么是关系型数据库?
关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。表与表之间的数据记录有关系。用户用查询(Query)来检索数据库中的数据。
主键
关系型数据库中的一条记录中由若干个属性,若其中某一个属性组能唯一标识一条记录,该属性组就可以称之为一个主键
外键
外键用于与另一个表的关联,是能确定另一张表记录的字段,用于保持数据的一致性。span style=\
MySQL特点
优点
MYSQL短小精悍,容易上手,操作简单,免费供用的。相对其它数据库有特色又实用的语法多一些。
缺点
缺点分析:MYSQL难担当大系统的数据仓库,运行速度慢,不够稳定,有掉线的情况。
预备键(Preparekey)
候选关键字。
DDL—数据定义语言(Create,Alter,Drop,DECLARE)
建库、建表、设置约束等:\u00A0\u00A0
DML—数据操纵语言(Select,Delete,Update,Insert)\u00A0\u00A0
数据授权,收回授权.\u00A0\u00A0
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)\u00A0\u00A0
主要指数据的增删查改。\u00A0\u00A0
引用表(referencelist)
11、包含外键的表。也叫子表。被引用的表叫做父表。\u00A0\u00A0
引用完整性(Referential Integrity)
11、字表中的外键仅限于附表中的值。\u00A0\u00A0
自引用(ForTable)
外表可以引用自己表的主键。
11、数据类型:\u00A0\u00A0
int范围是:-2147483648到2147483647
integer是int的同义词;
bigint范围-2^63到2^15-1;
smallint范围是-2^15到2^15-1;
double和float:浮点型,存放数据最多5位;
decimal:浮点型,保存对精准度有重要要求的值;
date:日期类型,只有年月日,没有时分秒;
datetime:日期类型,既有年月日,又有时分秒
time:时间类型,只有时分秒没有年月日;
timestamp:时间类型:既有年月日,又有时分秒;
11、 范式:
1) 第一范式:\u00A0\u00A0
每个字段为最小单位,不可分割;有主键。\u00A0\u00A0
1) 第二范式:\u00A0\u00A0
包括第一范式再加上不能部分依赖。\u00A0\u00A0
1) 第三范式:\u00A0\u00A0
第二范式再加上不能传递依赖
11、char和varchar区别:
char是一个定长字符串,指定长度不会随着内容的不足而改变;varchar是一个长度可变的字符串,他根据信息自动改变长度(只在字符串长度小于指定字符串的情况下)。
11、标识符:
标识符后的字符可以是“_”、“@”、“#”、“$”及数字;
标识符不允许是SQL的保留字;\u00A0\u00A0
标识符内不允许有空格和特殊字符。\u00A0\u00A0
增删改查:
查询(select):
格式 :select 字段\u00A0 from 表名\u00A0 where 条件;\u00A0\u00A0
比较运算符\u00A0\u00A0
= = =!=()\u00A0\u00A0
as 重命名\u00A0\u00A0
逻辑运算符
and\u00A0 or\u00A0 not\u00A0\u00A0
.between ...and
。
in()
可以比较多个值\u00A0\u00A0
like” ”
模糊查询,like只对字符串起作用,对数字、日期不起作用。\u00A0\u00A0
通配符使用:\u00A0\u00A0
% 匹配多个
._ 匹配一个,一个下划线代表一个字。
null值操作\u00A0\u00A0
is null; 判断为空is not null; 判断不为空
distinct去重
select distinct 字段 from table;\u00A0\u00A0
插入(insert):
1)插入部分:
insert into table(列,列...)values (值,值...);
1)插入全部:
insert into tablevalues (值,值...)
注:自增时,在栏位-主键-自动递增打钩,选项-自动递增注明起始数值
更新(update):
update table set 字段=“值” where 字段=“值”;
注:前一个字段为更新的值。\u00A0\u00A0
删除
drop table 表名;删除表结构和数据;
delete from 表名;删除表数据;
delete from 表名where 字段=“”
truncate table 表名;把表删除,在创建一个同名无数据表。
关于delete 与truncate的区别?(笔试题)\u00A0\u00A0
1.delete是一行一行删除\u00A0\u00A0 truncate是将表结构销毁,在重新创建表结构.\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 如果数据比较多,truncate的性能高。\u00A0\u00A0
2.delete是dml语句\u00A0 truncate dcl语句\u00A0 \u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 delete是受事务控制. 可以回滚数据.\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0\u00A0 truncate是不受事务控制. 不能回滚.\u00A0\u00A0
在SQL表中,什么是空、空串和null?
空就是将表设置为null;空串是表中什么都不写;null是表中写入null,是长度为4的字符串。
怎样将表导出后再复制创建新表?
导出表—复制—查询—粘贴—改表名—刷新
IFNULL(字段,0)
如果字段为空,则将其赋值为0,在参与其运算。
逻辑函数(标量函数)
upper(字段):将字段转大写;
lower(字段):将字段转小写;
position(‘元素’ in 列名):元素在字段的哪个位置;
聚合函数:(不跟where和order by 语句)\u00A0\u00A0
count(*):统计多少行;
min(字段):最小值;
avg(字段):平均值;
limit 分页 limit num:取前num条数据 limit num1,num2 从第num条开始,取num条后num1条数据;
span lang=\"EN-US\" style=\
外连接
把有关联和无关联的数据都查出来。
左外连接
表1 left outer join 表2 on 条件;以左表为参考(outer可省略)
右外连接
表1 left outer join 表2 on 条件;以右表为参考(outer可省略)
全外连接
MySQL不支持
内连接
联系有关联数据
交叉连接:表 cross join 表 where 表.d_id =另表.d_id
相等连接:表 inner join 表 on表.d_id=另表.d_id 。(inner可省略) 表 join 表 using(字段)
隐式连接:表,表where表.d_id =另表.d_id
自然连接:表 natural join 表 。(字段相对应)
集合操作
union:合并行(去重)连接select语句
union all:合并行(不去重)连接select语句
intersect:查找相同行 mysql不支持
except:查找不同行 MySQL不支持
exists:存在 条件跟的是不相同的字段。不跟相同字段。
索引
创建普通索引
create index 索引名 on 表名 (字段);
创建唯一索引
create unique index 索引名 on 表名 (字段);
创建组合索引
create index 索引名 on 表名 (字段,字段)
删除索引
drop index 索引名 on 表名
explain 展示表中信息
慢查询:
show variableslike ‘%quer%’;
setlong_query_time=2;
set globalslow_query_log=’on’;
备份数据库:
库内备份
新建数据库—》右击需备份库—》数据传输—》源:连接,数据库—》目标:连接,数据库—》选择对象—》开始
恢复数据库
和备份一样。
库外备份
Mysqldump –u 库用户名 –p 库名>路径/备份后库名.sql 回车password:密码;
库外恢复:
Mysql –u 库用户名 –p 库名(需在Navicat中创建)<路径/备份后库名.sql 回车password:密码;
库内恢复
create database 数据库的名字; 第二:进入数据库 第三:sourced:mydb1.sql
0 条评论
回复 删除
下一页