护网笔记(五)--数据库基础

数据库的知识很多,本博文只记录了一部分基础的知识与操作。

数据库

数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

数据库作用

​ 1) 持久保存

​ 2) 方便查询并提取满足条件的数据, 数据访问速度快

​ 3) 处理并发访问

​ 4) 权限管理

常见的数据库管理系统

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

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

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

SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。

SyBase :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。

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

Java相关的数据库:MYSQL,Oracle.

MySql

MySQL 属性 C / S 结构

mysqld.exe 服务器端程序

mysql.exe 客户端程序

连接方式

​ 1).命令行

​ 2).B/S结构

​ 3).图形界面

数据库管理系统中, 可以有很多库, 每个数据库中可以包括多张数据表

操作数据库的步骤:

  • 连接数据库服务器
  • 打开数据库
  • 操作
  • 关闭退出

登录MySQL数据库

MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。

格式1:cmd> mysql –u用户名 –p密码

例如:mysql -uroot –proot

在这里插入图片描述图中使用mysql -h 127.0.0.1 -uroot -p登陆,输入本行后需要输入密码。

可以使用use;查看数据库和表

在这里插入图片描述
数据库语法:
指令可以换行,但必须使用分号;作为结尾。
命令不分大小写,关键字和函数建议使用大写。
如果提示符为'>则需要输入一个'回车
如果命令打错了换行之后不能修改,但是可以通过/c取消这个命令

登陆:

myaql -h localhost -u root -p

退出:

exit;

字符类型

char 定长字符串

char(7) 不管实际插入多少字符, 它实际都会占用7个字符位置(中文一个汉字也是一个位置)

varchar 变长字符串

varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置

​ char和varchar的区别

1、char列的长度固定为创建表时候声明的长度,长度为0~255,varchar值为0~65535,它是变长的。

​ 2、char是固定长度的,所以处理速度快。对于长度变化不大的对查询有较高要求的时候使用char。

​ 3、char类型删除了尾部的空格,而varchar类型保留了这些空格。

​ 4、char和varchar在超出长度时都会截取字符串到指定的长度。

数据库操作
use 加上库名
查看库
show databases
创建库:
creat database 库名 default charset=utf-8;
删除库
drop database 库名;
数据表操作
查看表:
show tables;
创建表:
creat table 表名(字段名1 类型,字段名2 类型)engine = innodb default charset=utf-8
在这里插入图片描述
如果表名不存在则创建:
creat table if not exists 表名(字段名1 类型,字段名2 类型)engine = innodb default charset=utf-8

修改列名:
alter table 表名 change 原列名 新列名 类型
添加表字段
alter table 表名 add 字段名 类型

删除表字段:
alter table 表名 drop 字段名

修改表名:
alter table 表名 rename to 新表名
修改字段类型:
alter table 表名 modify 字段 类型

查看表结构,查看表的所有字段:
desc 表名
删除表
drop table 表名

增删改查

插入

  1. insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
  2. insert into 表名(字段1,字段2,字段3) values (a值1,a值2,a值3),(b值1,b值2,b值3);

查询

  1. select * from 表名;*

  2. select 字段1,字段2,字段3 from 表名;

  3. select * from 表名 where 字段=某个值;

修改

  1. update 表名 set 字段=某个值 where 条件;

  2. update 表名 set 字段1=值1,字段2=值2 where 条件;

删除
delete from 表名 where 字段=某个值;

数据库备份

备份数据表

DOS命令行

mysqldump -u root -p 数据库名 表1 表2 > 导出文件名 导出数据库中的指定的数据表

mysqldump -u root -p 数据库名 > 文件名 导出整个库中的所有表 不包含库本身

备份数据库
DOS命令行

mysqldump -u root -p --databases 库名1 库名2 > 导出文件名 导出指定的数据库

mysqldump -u root -p --all-databases > 导出文件名 导出所有的数据库

还原数据

DOS命令行

mysql -u root -p 已存在的库名 < 要导入的文件 还原备份的数据表 (不写分号)

mysql -u root -p < 要导入的文件 还原备份的数据库 (不写分号)

mysql命令行

选择数据库后 source 数据表文件路径

示例:   MariaDB [xxoo] > source d:/data.sql (source后边为sql文件存放位置)

导出数据库的结构

mysqldump -u root -p -d 数据库名 > 导出的文件名

管理密码

修改管理员密码

DOS命令行

mysqladmin -u root -p password abcd   #把管理员密码设置为  abcd (不要加单引号)

修改用户密码

mysql命令行 root权限修改

set password for '用户名'@'登录主机'=password('新密码');

MySQL忘记root密码

步骤:

1.结束正在运行的数据库服务器进程 mysqld.exe

2.在DOS命令行执行 mysqld --skip-grant-tables

3.再打开一个DOS窗口, 可直接输入 mysql 以管理员的身份强行进入.

4. use mysql

5. update user set password=password('新密码') where user='root';

6. 刷新权限 flush privileges;

数据库用户权限

添加一个用户并给予权限
grrant 具体权限 on 库.表 to '用户名'@'%'identified by '密码';
%表示允许除本机外的 任意地址进行连接
密码可以为空
flush privileges; 刷新权限

添加用户:
create user '新用户名'@'localhost' identified by '密码';
查看用户:
select user,host from mysql.user;
show grants for 'user'@'host';

收回权限:
revoke [权限] on 表.格

宽松模式和严格模式

  1. 严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误; 非严格模式下,会静默失败并返回false

  2. 严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错

  3. 严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会

  4. 严格模式不允许八进制整数直接量(如:023)

  5. 严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,arguments对象里的元素和对应的实参是指向同一个值的引用

  6. 严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明

  7. 严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常

  8. 严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,

  9. 严格模式中 call apply传入null undefined保持原样不被转换为window

mysql命令行下临时修改

set sql_mode=ANSI; 宽松模式

set sql_mode=STRICT_TRANS_TABLES; 严格模式

​ my.ini 配置文件中修改

​ 在 [mysqld] 下面进行添加以下的命令修改严格模式

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

posted @ 2022-01-08 20:55  CK_0ff  阅读(135)  评论(0编辑  收藏  举报