护网笔记(五)--数据库基础
数据库的知识很多,本博文只记录了一部分基础的知识与操作。
数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
数据库管理系统(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 表名
增删改查
插入
insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
insert into 表名(字段1,字段2,字段3) values (a值1,a值2,a值3),(b值1,b值2,b值3);
查询
-
select * from 表名;*
-
select 字段1,字段2,字段3 from 表名;
-
select * from 表名 where 字段=某个值;
修改
-
update 表名 set 字段=某个值 where 条件;
-
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 表.格
宽松模式和严格模式
-
严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误; 非严格模式下,会静默失败并返回false
-
严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错
-
严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会
-
严格模式不允许八进制整数直接量(如:023)
-
严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,arguments对象里的元素和对应的实参是指向同一个值的引用
-
严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明
-
严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常
-
严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,
-
严格模式中 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"
本文来自作者:CK_0ff,转载请注明原文链接:https://www.cnblogs.com/Ck-0ff/p/15779563.html