mysql数据库(1)

MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

安装

本人此次用的版本是:mysql-8.0.13-winx64

选择安装包

www.mysql.com/download(下载)/Community(社区版)/mysql server(服务器)
打开下载页后 operating system(选择操作系统) 选Microsoft windows(微软windows系统)
点击download下载,点no thans不登录直接下载。

  • msi microsoft windows installer 也就是.exe安装包。好处:有安装向导,自动添加环境变量,自动生成配置文件,自动注册windows服务。
  • zip archive 也就是.zip压缩包。包含mysql主要文件,但跟windows结合部分环境变量、服务就需要手动建立。好处:版本最新,控制力强。

安装

  1. 新建文件夹C:\Program Files\MySQL 允许权限
  2. .zip安装包解压至刚才新建的文件夹。报解压错误,原因无权限。解决先解压到D盘,然后剪切至目录,弹窗时允许权限。
开启服务
  1. 介绍mysql工程的主要文件夹和文件作用。
  • bin文件夹。可执行二进制程序。客户端mysql.exe,服务端mysqld.exe,备份mysqldump.exe
  • data。存放具体数据。
  1. my.ini。数据库服务启动时的默认配置文件,定义了mysql目录,引擎,字符集,日志等关键信息。需要手动建立。
    my.ini -记事本的内容:
[mysqld]
# set basedir to your installation path
basedir=C:\\Program Files\\MySQL\\mysql-8.0.13-winx64
# set datadir to the location of your data directory
datadir=C:\\Program Files\\MySQL\\mysql-8.0.13-winx64\data

[mysql]
  1. 初始化data文件夹和生成root密码。mysqld --defaults-file=C:\my.ini --initialize --console 成功后注意记住生成的随机root密码。data文件夹下可以看到许多文件。
    可能出现的错误–initialize specified but the data directory has files in it. Aborting,解决删除data下文件。管理员cmd下重新命令。
  2. 开启服务 mysqld --console 出现3306等字样成功,窗口不要关闭。
  3. 客户端登录 mysql -u root -p刚才生成的密码
    可能出现的错误:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)服务器没有启用
  4. 登录进去后改密码。ALTER USER “root”@“localhost” IDENTIFIED BY “新密码”; 123456 \q退出后可以用mysql -u root -p 重新登录。
  5. 注册windows服务 mysqld --install MySQL80 --defaults-file=“C:\my.ini”
    在这里插入图片描述
    在这里插入图片描述
    数据库这就连接成功了。下面我们我们来修改密码,
    在这里插入图片描述
    退出程序后,我们根据mysql -u root -p 重新登录。登录成功即可。
    下面还有最后一步,开辟一个新窗口, 注册windows服务。
    在这里插入图片描述

sql语法(重要)

create table,select、update、delete基础语句
下面排序、分组、统计、表连接。
http://www.w3school.com.cn/sql/index.asp

语法

(高) create table,select、update、delete

  1. 列值 去重(中)。SELECT DISTINCT Company FROM Orders
  2. 多个限定条件同事满足。SELECT * FROM Persons WHERE FirstName=‘Thomas’ AND LastName=‘Carter’
  3. 多个限定条件满足任一。SELECT * FROM Persons WHERE firstname=‘Thomas’ OR lastname=‘Carter’
  4. 排序单列倒序 SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC; descend
  5. 排序多列顺序 SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC; 默认顺序排。ascend
  6. 取结果集10到20的条目。 mysql中 select * from table limit 10,20; oracle中根据rowcount。
  7. 取结果集前10 select * from table limit 10; select top 10 * from table;
  8. 模糊查找 SELECT * FROM Person WHERE City LIKE ‘N%’; %表示通配符,_匹配一个字符。 'N%‘匹配’New’ ‘New York’'New Y_k’匹配’New York
  9. 列的值在一个列表当中 SELECT * FROM Person WHERE LastName IN(‘Adams’, ‘Carter’); 注意效率。
  10. 别名 SELECT LastName AS Family, FirstName AS Name FROM Persons
  11. 分组 select * from table GROUP BY 字段
  12. 授予权限 GRANT ALL ON menagerie.* TO ‘your_mysql_name’@‘your_client_host’;

语法 join表连接

需求:设计订单表。 第一次设计的order表含字段:id,order_no, person_name, person_address, person_vip, product_info。如果这样设计,发现问题,一是字段越来越多、各种维度信息混合在一起不好维护,二是person_list_info列表信息不好表达。
所以我们按字段分类设计成两张表。
表一:person(id, name, address, vip, phone)
表二:order(id, order_no, price, person.id)。
这里的person.id是“外键 foreign key”。
外键的好处:分类清晰,保证数据一致性; 缺点:影响效率。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

SELECT P.LastName, P.FirstName, O.OrderNo
FROM Persons, AS p
INNER JOIN Orders AS o
ON P.Id_P = O.Id_P;

INNER省略的话默认join就是inner join内连接。给表起别名减少代码量。
left join左表中的列不管有没有匹配到右边的表中数据,都会展示出左边表的数据行。right join相反 以右表为主。full join笛卡尔积消耗资源。一般情况下主要inner join,少量left join,其他join几乎用不到 用到再查。

管理数据库

新建schema库 >>> CREATE DATABASE database_name
新建表 >>> CREATE TABLE 表名称(列名称1 数据类型,列名称2 数据类型,)
约束constrain>>> 针对insert语句。 not null非空 unique唯一 主键 外键
索引 CREATE INDEX >>> index_name ON table_name (column_name); 索引好像书本前的目录,空间换时间,增加建立索引那列的查询速度。
丢弃 DROP TABLE 表名称 >>> 删除整张表结构和数据和索引。delete只删除数据。
修改 ALTER TABLE >>> table_name ADD column_name datatype。
创建用户,权限等用到再查文档。

函数

平均值 avg(字段)
技数 count(字段)
时间 now()
如果分组后统计 select * from table group by vip HAVING 筛选条件;
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
如果分组后还要跟
mysql -u root -p 开启sql服务


命令行创建表内容

先创建一个menagerie库,并切换到库
用到的某些语法:

  1. 模糊匹配 like ‘阿_/%’
  2. 排序 order by
  3. 不相等 !<>
  4. 唯一 去重 distinct describe 详细
  5. timestampdiff 时间 month 月份 (add)

步骤

  1. 启动服务 shell>mysqld
  2. 客户端 shell> mysql --help
  3. 客户端登录 mysql -u root -p、如果服务器在另一台计算机 需要ip地址和端口参数 mysql -h 127.0.0.1 -p 3306 -u root -p
    登录时指定数据库 mysql -u root -p 库名
    mysql -h 127.0.0.1 -u root -p远程登录
  4. 执行各种sql

sql

  1. select version(), current_date;
    大小写都写,函数可以省略(),每句分号结尾。
  2. create database 库名; show databases;
    刚连接mysql后,mysql只有几个保存系统信息的内置数据库(表信息 权限信息)我们不应该 所有动内置库。schema是逻辑上的大分块,schema下包含库。当有一个项目想保存信息时,我们需要先新建一个库 datebase,然后再datebase下新建表,表里存信息。有些数据库中schema
  3. USE 库名;切换数据库。否则跨数据库查询需要跟命名空间。
  4. show tables;查看库下所有表
  5. describe table;查看表字段定义

可能出现的问题:

  1. sqlite数据库文件和mysql数据库文件混淆,它们的数据库存储方式和数据存储位置不同。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值