导图社区 MYSQL数据库、SQL语句知识点笔记
sys: 主要存储数据库服务器的性能参数创建数据库:DDL mysqladmin -u root -p1 password ‘123’ mysql -u root -pQianFeng@123 -e “show databases” mysql -u root -pQianFeng@12...
编辑于2022-11-14 13:56:33 广东MYSQL数据库、SQL语句知识点笔记
数据库
数据库:就是一个文件系统,但是这个文件访问需要通过标准SQL语句.
关系型数据库:关系型的数据库通常保存的是实体之间关系.
常见的关系型数据库:
MYSQL:免费的小型的数据库,现在已经被Oracle收购了.
SQLServer:微软公司研发的数据库产品.收费的中型数据库.
Oracle:Oracle公司研发的数据库产品.收费的大型的数据库.
DB2 :IBM公司研发的数据库产品.收费的大型的数据库.
SyBase:数据库已经退出历史舞台.留下PowerDesigner:数据建模工具.
SQLite:嵌入式数据库.Android系统中使用.
MYSQL的安装和卸载:
先卸载干净:
1.找到MYSQL的安装路径: C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini
2.找到两个路径: basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/" datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
3.在控制面板中卸载MYSQL:
4.需要将记录的路径中的残留的文件删除:
再安装:
1.自定义安装:
服务器安装路径: C:\Program Files (x86)\MySQL\MySQL Server 5.5\ 数据存放的路径: C:\ProgramData\MySQL\MySQL Server 5.5\
2.MYSQL默认端口号
3.设置MYSQL数据库字符集
4.勾选:Include Bin Directory in Windows PATH.
5.设置MYSQL数据库最高管理员root的密码
6.四个对勾全部选中的情况下说明安装成功
7.测试MYSQL是否安装成功: 在cmd的命令下输入:mysql -u root -p
1.2.3重置root密码:
1.停止mysql服务: services.msc进入服务界面:
2.打开cmd的窗口: 输入:mysqld --skip-grant-tables 回车.(相当于启动了一个MYSQL的服务,跳过权限认证)
3.重新打开一个cmd的窗口: mysql -u root -p 输入密码: 直接回车
4.使用数据库: use mysql;
5.输入命令: update user set password = password('123') where user='root';
6.关闭两个cmd的窗口:
7.在任务管理器中结束一个进程:mysqld.
8.进入到服务界面:重启mysql服务.
MYSQL内部存储结构:
一个软件对应一个数据库,在数据库内部可以存在多张表:一个实体类对应一张表.表中可以有多条记录的.一般情况下:一个类的实例对应一条记录.
数据服务器和数据库的关系:一对多,数据库与数据库表的关系:一对多,表与表记录的关系:一对多
SQL语句
什么是SQL:
SQL:Structured Query Language.结构化查询语言.
SQL的特性:
非过程性语言
过程性与非过程性区别:
过程性语言:一条语句的执行需要依赖其他的语句
非过程性语言:一条语句的执行,就会有一个结果.不需要依赖其他语句.
为了增强SQL语言能力,各个数据库生产商增强了SQL语言. * Oracle数据库中提供了PL/SQL * SQL Server:T-SQL.
SQL的分类:
1. DDL :Data Definition Language.数据定义语言.
* create 、alter、drop ...
2. DML :Data Manipulation Language.数据处理语言.
* update 、 insert 、 delete...
3. DCL :Data Control Language.数据控制语言.
* if 、grant...
4. DQL :Data Query Language.数据查询语言.
* select
SQL操作数据库:
创建数据库:
create database 数据库名 [character set 字符集 collate 字符集校对规则];
查看数据库:
show databases;
细节:show create database 数据库名;查看前面创建的mydb2数据库定义信息
删除数据库:
drop database 数据库名;
修改数据库:
alter database 数据库名 character set 字符集 collate 校对规则;
切换数据库:
use 数据库名;
显示当前正在使用的数据库:
select database();
java与数据库对应的字段
byte TINYINT short SMALLINT int INT long BIGINT float FLOAT double DOUBLE boolean BIT Date DATE/TIME/DATETIME/TIMESTAMP * datetime与timestamp区别? * datetime :既有日期又有时间的日期类型.必须手动传入一个日期. * timestamp :既有日期又有时间的日期类型.如果没有给这个列设置值,采用系统的当前的时间存入到这个列上. File BLOB/TEXT * BLOB :存放一个二进制文件. * TEXT :存放一个文本文件. ***** 在Oracle数据库中用BLOB和CLOB
注意:实际开发中一般是把大数据如图片存储到服务器硬盘上,把路径存储到表中,不会直接向表中直接存储大数据数据库,如果存储到数据库会导致数据库变得很臃肿,效率降低,直接和硬盘进行IO流操作效率较高
SQL操作表:
创建表:
建表约束:(单表约束)---为了保证数据完整性
* 主键约束:primary key.可以唯一确定表中一条记录的字段.(非空唯一).主键是整形可以使用auto_increment.
* 唯一约束:unique.创建表中这个字段的时候,这个字段不允许出现重复的值.
* 非空约束:not null.代表创建表中的这个字段的时候,不可以向这个字段插入空值.
create table 表名 (字段名 字段类型(长度) 约束,字段名 字段类型(长度) 约束..)character set 字符集 collate 校对规则;
查看表:
show tables;
查看表结构:desc 表名;
修改表:
* alter table 表名 add 字段名 类型(长度) 约束; ---修改表添加字段. * alter table 表名 modify 字段名 类型(长度) 约束; ---修改表修改字段的类型长度和约束. * alter table 表名 drop 字段名; ---修改表删除表中这个字段. * alter table 表名 change 旧的字段名 新的字段名 类型(长度) 约束; ---修改表修改字段名 * rename table 旧表名 to 新表名; ---修改表名. * alter table 表名 character set 字符集; ---修改表的字符集.
删除表:
drop table 表名;
SQL操作数据:
添加记录:
语法一:向表中插入部份字段. insert into 表名 (字段名1,字段名2,字段名3...) values (值1,值2,值3...);
向表中插入所有字段. insert into 表名 values (值1,值2,值3...);
注意: * 1.添加的过程中,字段的个数与类型与值的个数与类型一致! * 2.添加字段的值的时候,值的长度不能超过字段设置最大长度! * 3.添加字段的值的类型如果是字符串或者日期类型,那么在插入的值的时候,就需要使用单引号引起来.
修改记录:
update 表名 set 字段名 = 值,字段名=值 [where 条件];
删除记录:
delete from 表名 [where 条件]
注意: * 删除的是一条记录,不能删除一条记录的某个字段(修改). * 删除的是表的记录,而不是整个表.删除整个表 drop table; * 删除的时候一旦有外键的关联,删除表中记录的时候,先解除外键关系. * 删除表中的记录truncate table 表名; 删除表中所有记录:delete from 表名;
查询记录:
1.基本查询语句: select [distinct] *|[列名,列名...] from 表名; distinct:去掉查询记录的中重复的值.
2.执行运算及起别名: select 表达式 from 表; select 列名 as 别名,列名 as 别名 from 表名; ----as关键字可以省略的.
3.select语句的条件过滤: select *|列名,列名 from 表名 where 条件;
4.查询记录的排序 select * from 表 where 条件 order by 列名 asc/desc; ---asc:代表排序的时候按照升序排序.desc:代表排序的时候按照降序排序.默认值:asc:升序.
5.聚集函数:(分组函数). * count() :统计表中记录的个数. * 语法: * select count(*|列名) from 表名;
avg() :求平均值. select avg(列名) from 表名;
max() :求最大值.select max(列名) from 表名;
min() :求最小值. select min(列名) from 表名;
6.分组统计: select * from 表 where 条件 group by 列名;
7.查询语句的总结: S...F...W...G...H...O...: select *|列名 from 表名 where 条件 group by 列名 having 分组条件过滤 order by 列名;
where与having的区别
1、where不支持聚集函数
2、having支持聚集函数,主要是对分组以后的数据进行条件过滤
数据库的备份和还原:
数据库的备份:
cmd>mysqldump -u root -p 数据库名称 > c:/web015.sql
数据库的还原:
要还原数据库:首先必须有一个空的数据库: cmd>mysql -u root -p 数据库名称 < c:/web015.sql 进入到mysql数据库中进入到数据库: source c:/web015.sql