20201014+袁鑫
学习日志:
知识总结:
MySQL
数据库
什么是数据库
数据库是以月底ing方式存储在一起、能与多个用户共享,具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件钟的数据进行新增、查询、更新、删除等操作。
数据的存储方式
-
数据保存在内存
例如:数组,集合;new出来的对象存储在堆中,堆是内存中的一小块空间
优点:内存速度快 缺点:断电/程序退出,数据就清除了,内存价格贵; -
数据保存在普通文件 优点: 永久保存 缺点:查找,增加,修改,删除数据比较麻烦,效率低
-
数据保存在数据库 优点:永久保存,通过SQL语句比较方便的操作数据库
数据库的优点
数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的搞笑的解决方案。
数据库管理系统
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于简历,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据
数据库管理系统、数据库和表的关系
数据库管理程序(DBMS)可以管理多个和数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库管理系统、数据库和表的关系如图所示:
现有数据库--> 再有表-->再有数据 一个库包含多个表
查看一个数据库中表的数据:
show tables
常见数据库
MySQL:开源免费的数据库,小型的数据库。已经被Oracle收购了MySQL6.x版本也开始收费。
Oracle : 收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MySQL。
DB2: IBM公司的数据库产品,收费的。常应用在银行系统中
SQLServer : MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。SyBase : 已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
SQLite: 嵌入式的小型数据库,应用在手机端。
常用数据库: MySQL、Oracle 在web应用中使用最多的就是MySQL数据库,原因如下:
-
开源、免费
-
功能足够强大,足以应付web应用开发#
-
关闭MySQL服务,net stop mysql
-
以管理员身份在命令题是窗口(cmd )中进入到mysql->bin文件夹,输入:
mysqld --skip-grant-tables
跳过权限认证 -
重新打开一个cmd窗口,输入mysql
mysql -
链接权限数据库
use mysql -
修改数据库连接密码:
update user set authentication_string = password("123456") where user = "root"; -
刷新权限
flush privileges; -
退出
exit
quit -
修改root密码后,需要执行下面的语句和修改的新密码。不然开启mysql时会出错
mysqladmin -u root -p shutdown
重启mysql服务
将mysql添加到环境变量
将mysql的bin目录地址添加到系统环境变量-->path中
将mysql添加到服务
以管理员的方式移动cmd(命令提示窗口),使用命令进入到[mysql]\bin,执行如下命令。
mysqld --install( 服务名 )
如
mysqld --install Mysql 5.7
删除服务命令是:
mysqld --remove 服务名
建库 建表
数据库句的关键词建议最好大写
- 创建数据库语法结构:
- create database if not exists db_name
- create database 表示创建数据库,是SQL中的关键词
- db_name 是要创建的数据库名称
- 使用数据库:
- USE db_name
- 使用USE关键词来指定要使用的数据库
- 删除数据库语法结构
- drop database db_name
- 使用DROP关键字删除数据库
创建数据表
- 创建数据表的语法结构
- create table tab_name(
col_name datatype default null/number comment ' 注释',
col_name datatype
)CHARACTER set 编码格式; - 使用create table 关键词创建数据表
- tab_name 是数据表的名称
- col_name 是列的名称
- datatype是列的数据类型
- default是默认值
- comment是注释
- create table tab_name(
查看表结构
DESCRIBE dept;
创建和某表结构一样的表
CREATE TABLE d LIKE dept;
删除表
DROP TABLE table_name
添加列:
ALTER TABLE d ADD id int;
修改列:
ALTER TABLE d MODIFY id VARCHAR(20);
修改列名
ALTER TABLE d CHANGE id ss VARCHAR(20);
删除列
ALTER TABLE d DROP ss;
重命名表
RENAME TABLE d to dd;
CRUD操作
对数据表中的数据操作通常有添加(Create)、查询(Retrieve)、修改(Update)、删除(Delete)、简称 为CRUD。
添加数据
value和values的区别,values可以同时插入多条数据用逗号隔开
dept和dept(列名,列名。。。)区别,如果不写列表必须按照列表创建时的顺序每一列都要添加
有列名的按照列名排列顺序添加
查询数据
查询所有数据
SELECT *FROM dept;
查询某列的数据
SELECT deptname FROM dept;
根据条件查询
SELECT deptno FROM dept WHERE deptname='销售部';
修改数据
--全部修改为6
UPDATE dept SET deptno=6;
--根据条件修改
UPDATE dept SET deptno=1 WHERE deptname='研发部';
UPDATE dept SET deptno=2 WHERE deptname='销售部';
UPDATE dept SET deptno=3 WHERE deptname='行政部';
UPDATE dept SET deptno=4 WHERE deptname='技术部';
UPDATE dept SET deptno=5 WHERE deptname='安保部';
删除数据
-- 删除数据 ,一定要加 where 条件
DELETE FROM dept WHERE deptno=5;
-- 全部删除
DELETE FROM dept;
-- 清空/截断 所有数据(慎用)
TRUNCATE TABLE dept;
delete from dd;
truncate table dd; d
elete 是清空表中的数据
truncate 是清空表数据,重新创建一个一样表
数据备份和还原
命令行备份
mysqldump -h127.0.0.1 -uroot -proot db_name>path;
使用mysqldump 命令备份数据库
-h指定数据库所在的服务器的ip地址
-u指定登录数据库的密码
db_name是要备份的数据库的名称
使用输出目标操作符>,指定输出的文件具体路径c:/back.sql
命令行还原
mysql -h127.0.0.1 -uroot -proot db_name
约束
主键约束
主键约束最显著的特征是主键列中的值是不允许重复的,通过主键约束可强制表的实体完整性。当 创建或更改表时可通过定义 primary key约束来创建主键。一个表只能有一个primary key约束, 且primary key约束中的列不能接受NULL值。
alter table tab_name add constraint pk_name primary key (deptno);
自增长列
并不是所有表在设计完成后都能找到适合作为主键的列,为此数据库提供了自增长列,自增长列是int类 型的,其值是int类型的,其值是由数据库自动维护的,是永远都不会重复的,因此自增长是最适合作为 主键列的。在创建表时,通过auto_increment关键字来标识自增长列,在MySQL数据库中自增长列必 须时主键列。
自增长与主键
CREATE TABLE emp(
empNo INT PRIMARY KEY AUTO_INCREMENT,
job VARCHAR(10),
)CHARACTER SET utf8;
唯一约束
对于非主键列中的值也要求唯一性时,就需要唯一约束
默认约束
为列中的值设置默认值,default ....,如果已经定了值,默认值就无效了
外键约束
表中列的值来自于另外一张表的主键或唯一键的列称为外键FK,将被引用值得表称为主表或父表,将引 用值得表称为从表或子表。
alter table userinfo add constraint foreign key fk_dept_no (dept_no)
REFERENCES dept(deptno);
-
dept 是主表, userinfo 是从表
-
在 userinfo 表中添加或修改时, dept_no 列的值必须是 dept 表中 deptno 字段中的存在值
-
删除从表数据可以直接删除
-
删除主表数据时,会先检查从表中有没有对此数据的关联,如果有不能直接删除
on delete CASCADE/ on update CASCADE 级联删除 / 级联更新
近期评论