文章目录
前言
mysql学习-day01MySQL数据库
1.认识数据库
数据库:数据的仓库,保存大量数据的地方,有利于对数据的维护。增删改查很方便。
数据库分类:
层次型数据库:现实世界中很多事物是按层次组织起来的。层次数据模型的提出,首先是为了模拟这种按层次组织起来的事物。
网状型数据库:处理以记录类型为结点的网状数据模型的数据库。处理方法是将网状结构分解成若干棵二级树结构,称为系。
关系型数据库:mysql SQLserver oracle
[都使用SQL语句操作]
分布式数据库:是指数据分存在计算机网络中的各台计算机上的数据库
mysql 数据库
mysql :
世界上最流行的开源数据库,支持几乎任何平台的操作系统
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL 是开源的,所以你不需要支付额外的费用。
MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL 使用标准的 SQL 数据语言形式。
MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
2 关系型数据库概念
a,由 E.F.Codd博士在1970年提出关系型数据库系统模型
b,它是关系型数据库管理系统的基础
c,关系型数据库模型包含以下3部分内容
i 包含一系列【关系】和【对象】
ii 包含一系列对于关系的操作–>增删改查
iii 包含数据完整性约束
-
关系型数据库中的关系是指:
把实际问题的数据分别归成若干个简单的二元关系,
一个二元关系都可以建一个满足一定条件的二维表格关系==二维表格
3 关系型数据库是由一系列二维表组成
二维表:每张表由行和列组成
可以通过Structured Query Language 操作数据库表中的数据
二维表:一行 一条数据
一列(字段) 一类数据
Primary Key:主键
主键:表中的一个列,随便是什么列
要求:非空且唯一
主要用于 唯一的表示一条数据
Foreign Key:外键
为了表结构的优化,所产生的操作,
使用外键进行表和表的关联
外键:值可以为空,可以重复,
如果有值必须是关联表主键中的值.
4 完整性约束条件
【不满足 完整性,数据不能保存到数据库中】
关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则
在关系模型中,关系完整性主要是指以下三方面:
a、实体完整性(主键约束):所谓的实体完整性就是指关系(所谓的关系就是表)的主键不能取空值;
比如学生表通常是取学号为主键
b、参照完整性(外键约束):是指参照关系中每个元素的外码要么为空(NULL),要么等于被参照关系中某个元素的主码;
比如今天是9月2日是开学日,大学新生刚来报道,在学生表里,有的学生可能还没来得及分配具体的班,所以这些还未来得及分班的学生教务处可以在学生表里的班级属性取空值NULL(空值代表“不确定”),而哪些已分了班的学生就必须取班级表里的某些属性,比如班级类别,即学生属于哪个班。比如取“软件工程”,”计算机技术应用“等等。参照关系也称为外键表,被参照关系也称为主键表。
c、用户定义的完整性(自定义约束):指对关系中每个属性的取值作一个限制(或称为约束)的具体定义。比如 性别属性只能取”男“或”女“ ,再就是年龄的取值范围,可以取值0-130 ,但不能取负数,因为年龄不可能是负数
横着看:就是看行,是一条数据。
竖着看:就是看列,是某一类数据。
看数据库:
圆饼累加的圆柱都代表数据库,
在关系型数据中都是一张一张表存放的。
每一张表放大都是一个二维表
mysql数据库是不区分大小写的:
列(属性)不区分大小写
sql关键字不区分大小写
'字符串' 区分 大小写
和数据库字符的设置有关
排序规则 : utf8_bin
5. 学习mysql需要了解
mysql中的对象
table:表 。重点学习的对象。
注意:mysql表分为两类
1.系统表:主要用于存储和MySQL数据库服务器相关的数据或者配置;
2.用户表:主要用于存储MySQL的使用者(程序)产生的数据;
view:视图,假表。在表的基础上,以后可能是一个结果作为一个视图
sequence :序列。将来这个序列就是用来产生id主键,主键要求唯一不重复
index:索引,提高我们的检索速度
Program unit:程序单元 在PL/SQL中声明的 存储过程,函数,包Program unit
mysql的组成:
内 ------------------> 外
Data-------------->operation System --> mysql --------->sql,pl/sql----->tools
电脑内存中的数据 打开操作系统 安装mysql软件 执行sql命令 使用各种工具
sql和plsql区别:
sql:structured query language
有结构的 查询 语言 ---->结构化查询语言
第三代: 高级语言
面向对象+面向过程
第四代: 有结构的查询语言
只关心做什么 不关心怎么做
sql 命令 需要 ; 结尾,标示一条sql语句结尾
需求 : 得到名字叫张三的学生 所有信息
select * from student where name = 'zhangsan';
pl/sql:在存储过程中,在sql语言的基础上增加了逻辑控制功能。
BEGIN
IF c_id <= 0 THEN
RAISE ex_invalid_id;
ELSE
SELECT name, address INTO c_name, c_addr
FROM customers
WHERE id = c_id;
DBMS_OUTPUT.PUT_LINE ('Name: '|| c_name);
DBMS_OUTPUT.PUT_LINE ('Address: ' || c_addr);
END
6.sql主要操作
1.select语句
2.数据操纵语言(DML语句)data manipulation language
insert, update, delete
插入 更新 删除
3.数据定义语言(DDL语句)data definition language
create(创建), alter(修改), drop(删除), rename(重命名), truncate(删除表中的数据)
会提交事务
4.事务控制语句(TCL语句)transction control language
commit(提交), rollback(回滚), savepoint(记录点,用来回滚)
5.数据控制语言(DCL语句)data control language
grant【授权】, revoke【回收】
7.安装数据库
3306端口号 mysql的主服务端口号:
使用mysql必须开启mysql主服务
window:安装:安装包(msi)安装
参考0_资料文档中的mysql安装.doc
window:安装:安装包(zip)安装
绿色版:所有配置文件都在解压的位置.
1,下载: mysql-8.0.21-winx64.zip
https://dev.mysql.com/downloads/mysql/
2,解压
3,编写MySQL服务器程序的配置文件,在MySQL的安装目录下创建名为my.ini的文件;
[mysqld]
basedir=C:\\mysql-8.0.21-winx64
datadir=C:\\mysql-8.0.21-winx64\\data
tmpdir=C:\\mysql-8.0.21-winx64\\tmp
bind-address=0.0.0.0
character-set-server=UTF8
port=8021
4.对MySQL数据库服务器进行初始化:
在cmd命令行中输入:
mysqld --initialize-insecure --console
注意:如果要重新初始化,则必须删除data目录中的所有数据才能再次执行该命令;
如果报错 不是内部外部命令,需要把mysql的解压路径 添加到path中
5.将MySQL服务器的启动命令注册为Windows服务;
mysqld install MySQL8021 --defaults-file=c:\mysql-8.0.21-winx64\my.ini
6.启动MySQL服务器:
1.执行命令:net start MySQL8021
2.通过服务管理程序启动;
8.mysql基础前导操作
1.以管理员方式登录mysql
mysql -h 主机名 -u 用户名 -p
eg: mysql -h localhost -u root -p
输入完回车
会显示 Enter password:
然后输入安装mysql时候输入的root用户密码 root
注意:这里密码输入错误会提示:
C:\Users\gene>mysql -h localhost -u root -p
Enter password: *********
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这个error就是错误信息,看到这个玩意,就是密码错了。
补充 : mysql -u briup -pbriup mytest
用户名 密码 使用的数据库名
-p后面的是密码
-P 指定端口号
eg: mysql -h 127.0.0.1 -P 3306 -u root -p
-p指定密码
eg: mysql -u root -proot
2.切换需要操作的数据库
语法: use 数据库名
选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
3,查看mysql数据库下有哪些数据库
show databases;
4,查看定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
show tables;
5,创建数据库
语法: create database if not exists mytest default charset utf8 collate utf8_general_ci;
eg:
mysql> CREATE DATABASE mytest;
Query OK, 1 row affected (0.00 sec)
6,删除数据库
语法:drop database 数据库名;
eg:
mysql> drop database mytest;
Query OK, 0 rows affected (0.02 sec)
7,添加新用户 : mysql数据库 中有一个mysql数据仓库中有一张表 user
mysql数据库使用mysql库下的表user进行维护用户信息。
添加新用户只要向user表中添加一行数据即可。
首先 进入到mysql库中(前提已经使用root用户连接了mysql)
语法:use 数据库名;
eg:
mysql> use mysql;
Database changed
然后使用sql插入一条数据向user表中
INSERT INTO user (host, user, password, select_priv, insert_priv, update_priv) VALUES('localhost', 'briup', PASSWORD('briup'), 'Y', 'Y', 'Y');
但是5.1版本以上就会报错,说某个列不能为null;
所以换:
mysql> create user 'briup'@'%' identified by 'briup';
Query OK, 0 rows affected (0.00 sec)
创建的briup是任意主机都可以连接
用户就创建好了
8.激活用户:使用户生效
使用先创建用户,再授权的方式创建用户,需要执行下面的命令,使用户权限生效。
flush privileges;
补充:
设置与修改密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
9.给新用户briup授权
创建并且授权:
grant all on databasename.tablename to 'briup'@'localhost' identified by 'briup';
使用这种方式创建用户,如果用户存在了,权限不会有变化,但可以修改密码。如果用户不存在,则创建用户并授权,立即生效。
eg:
mysql> grant all on *.* to 'briup'@'%' identified by 'briup';
Query OK, 0 rows affected (0.00 sec)
10,导入sql文件(前提,某用户登入,use了某个数据库)
source sql文件路径
eg:
C:\Users\gene>mysql -u briup -p
创建了mytest数据库,如果有的可以忽略
create database if not exists mytest default charset utf8 collate utf8_general_ci;
mysql> use mytest
Database changed
mysql> source D:\bigData\mysql\0_资料文档\briup.sql
注: 这个路径是直接拖拽到cmd中自动显示的
show命令:
show databases [like “%abc%”];查看当前连接的 MySQL 服务器上的所有数据库名;
show tables [from db_name][like “%b%”];查看当前所操作的数据库中的所有表的名字;
show columns from tbl_name;查看某个表中的所有字段/列名,等同于 desc tbl_name;
show index from tbl_name;查看某一张表中的所有索引;
show status;查看 MySQL 服务器的状态信息;
show [session] variables;查看 MySQL 数据库中的变量,如果跟了 session 参数,则查看的是当前连接的会话的变量,反之则是全局变量;
show table status from db_name;查看某个数据库中的表的详细信息;
show grants for user;查看 MySQL 服务器某个用户的权限信息,显示的是给该用户进行授权的 SQL 语句;
show engines;查看 MySQL 数据库所支持的以及默认的数据库引擎;
use 数据库名;选中或者使用某一个数据库。
查看表有哪些列?
desc 表名
总结
以上就是mysql学习day01啦,希望能够帮到大家