20201014+袁鑫

学习日志:

知识总结:

MySQL

数据库
什么是数据库

数据库是以月底ing方式存储在一起、能与多个用户共享,具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件钟的数据进行新增、查询、更新、删除等操作。

数据的存储方式
  1. 数据保存在内存

    例如:数组,集合;new出来的对象存储在堆中,堆是内存中的一小块空间
    优点:内存速度快 缺点:断电/程序退出,数据就清除了,内存价格贵;

  2. 数据保存在普通文件 优点: 永久保存 缺点:查找,增加,修改,删除数据比较麻烦,效率低

  3. 数据保存在数据库 优点:永久保存,通过SQL语句比较方便的操作数据库

数据库的优点

数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的搞笑的解决方案。

数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于简历,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据

数据库管理系统、数据库和表的关系

数据库管理程序(DBMS)可以管理多个和数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库管理系统、数据库和表的关系如图所示:

image-20201014224701683

现有数据库–> 再有表–>再有数据 一个库包含多个表

查看一个数据库中表的数据:

show tables
常见数据库

MySQL:开源免费的数据库,小型的数据库。已经被Oracle收购了MySQL6.x版本也开始收费。

Oracle : 收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MySQL。

DB2: IBM公司的数据库产品,收费的。常应用在银行系统中

SQLServer : MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。SyBase : 已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

SQLite: 嵌入式的小型数据库,应用在手机端。

常用数据库: MySQL、Oracle 在web应用中使用最多的就是MySQL数据库,原因如下:

  1. 开源、免费

  2. 功能足够强大,足以应付web应用开发#

  3. 关闭MySQL服务,net stop mysql

  4. 以管理员身份在命令题是窗口(cmd )中进入到mysql->bin文件夹,输入:

    mysqld –skip-grant-tables
    跳过权限认证

  5. 重新打开一个cmd窗口,输入mysql
    mysql

  6. 链接权限数据库
    use mysql

  7. 修改数据库连接密码:
    update user set authentication_string = password("123456") where user = "root";

  8. 刷新权限
    flush privileges;

  9. 退出
    exit
    quit

  10. 修改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是注释

image-20201014231908351

查看表结构
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 级联删除 / 级联更新

标签

评论