day41

数据库

什么是数据库?

字面意思:存数据的仓库

为什么使用数据库?(*************)

之前都是使用Excel来进行管理数据,

Excel的缺点:

  1. 管理不了大量的数据(10w量级的数据)
  2. 并发操作同一个数据表格
  3. 数据支持高级的操作,比如:分组,连表等

数据库的分类:(*********)

关系型数据库

对每一列的数据类型会有约束,id(整型),name(字符串)

maridb,MySQL ——》用的比较多,免费

SqlServer ——》微软,大学,政府(汽车之家)

Oracle ——》甲骨文,收费,金融公司,阿里

sqlite ——》小型的文件数据库,自己玩玩

非关系型数据库

memcache ——》十年前的产品(新浪博客)

mongodb ——》文档型数据库

redis ——》微博

使用类似字典的格式 {"name":'zekai'}

最大区别:

关系型数据库,把数据存在硬盘中

非关系型数据库,把数据存在内存中

mysql的架构

类似于 socket 的客户端和服务端

流程:

  1. mysql服务端先启动,监听在某一个特定的端口(3306)
  2. mysql客户端连接服务端
  3. mysql客户端就可以发送相关的操作命令,去操作服务端 的数据

mysql的安装(windows)

windows安装:

先去官网(https://dev.mysql.com/downloads/mysql/)

1、下载:

MySQL Community Server 5.7.28

http://dev.mysql.com/downloads/mysql/

2、解压

如果想要让MySQL安装在指定目录,那么就将解压后的文件移动指定目录

3、添加环境变量

【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】

4、初始化

mysqld --initialize-insecure 创建data目录,初始化的数据

5、启动MySQL服务

mysqld 启动MySQL服务

6、启动MySQL客户端并连接MySQL服务

mysql -u root -p 连接MySQL服务器

mysql服务端不会阻塞住

制作windows的服务:

"D:mysql-5.7.28\bin\mysqld" --install

修改mysql的密码:

C:\Windows\system32>mysqladmin -uroot -p "原密码" password "新密码"

出现的错误:

C:\Windows\system32>mysql -uroot -p
Enter password:
ERROR 1045 (28000):Access denied for user 'root'@'localhost'(using password:NO)

如果出现上述错误,代表密码输入错误

常用参数:(*********************)

-u : user 用户名
-p : password 密码

-h : host 主机名或ip # mysql -uroot -p -h 192.168.0.1
-P : port 默认端口是3306 # mysql -uroot -p -h 192.168.0.1 -P 3307

忘记密码,操作方式:

  1. 关闭mysqld的服务
  2. 在cmd中执行:mysqld --skip-grant-tables ===》不用密码就能登录,绕过密码验证额权限
  3. 在cmd中执行:mysql ===》mysql -uroot -p
  4. 执行如下sql指令:
update mysql.user set authentication_string=password('') where user='root';
flush parivileges;
  1. tskill mysqld 或taskkill -f/PID 7832
  2. 重新启动mysql服务

初始mysql

SQL指令

操作数据库(*******************************************************)

create database 数据库名称 charset utf8;
命名规范:
	可以用字母、数字、下划线、@、#、$
	区分大小写
	唯一性
	不能使用关键字 如 create select
	不能单独使用数字
	最长128位
show create database 数据库名

drop database 数据库名称;

删除再添加

如果数据库中有数据的话,直接drop会导致数据库中的数据丢失

在线上环境,不能够直接删除数据,在删除之前,需要进行备份

show databases;

使用数据库

user 数据库名;

操作数据表

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

DROP TALE 表名

1.修改表名
alter table 表名
rename 新表名;

2.增加字段
alter table 表名
add 字段名 数据类型 [完整性约束条件...],
add 字段名 数据类型 [完整性约束条件...];
alter table 表名
add 字段名 数据类型 [完整性约束条件...] first;
alter table表名
add 字段名 数据类型 [完整性约束条件...] after 字段名;

3.删除字段
alter table 表名
drop 字段名;

4.修改字段
alter table 表名
modify 字段名 数据类型 [完整性约束条件...];
alter table 表名
change 旧字段名 新字段名 旧数据类型 [完整性约束条件...];
alter table 表名
change 旧字段名 新字段名 新数据类型 [完整性约束条件...];

describe 表名; #查看表结构,可简写为desc 表名

show create table 表名\G; # 查看表详细结构

复制表

create table new_service select * from service # 复制表结构+记录

create table t4 like employees; # 复制表结构

操作记录

插入数据insert

1. 插入完整数据(顺序插入)
    语法一:
    INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);

    语法二:
    INSERT INTO 表名 VALUES (值1,值2,值3…值n);

2. 指定字段插入数据
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

3. 插入多条记录
    语法:
    INSERT INTO 表名 VALUES
        (值1,值2,值3…值n),
        (值1,值2,值3…值n),
        (值1,值2,值3…值n);
        
4. 插入查询结果
    语法:
    INSERT INTO 表名(字段1,字段2,字段3…字段n) 
                    SELECT (字段1,字段2,字段3…字段n) FROM 表2
                    WHERE …;

更新数据update

语法:
    UPDATE 表名 SET
        字段1=值1,
        字段2=值2,
        WHERE CONDITION;

示例:
    UPDATE mysql.user SET password=password(‘123’) 
        where user=’root’ and host=’localhost’;

删除数据delete

语法:
    DELETE FROM 表名 
        WHERE CONITION;

示例:
    DELETE FROM mysql.user 
        WHERE password=’’;

练习:
    更新MySQL root用户密码为mysql123
    删除除从本地登录的root用户以外的所有用户
posted @ 2019-10-28 19:13  Isayama  阅读(342)  评论(0编辑  收藏  举报