目录
1.MySQL介绍
MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
这里有两个关键词,数据库系统DBS和数据库管理系统DBMS,至于这两个关键字是什么,我这里就不多讲了,用的多了就清除了。
关系型数据库的特点:
1.数据集中控制,在文件管理方法中,文件是分散的,这些文件之间一般是没有联系的,因此不能按照统一的方法来控制、维护和管理。而数据库则可以集中控制、维护和管理有关数据。
2.数据独立,数据库中的数据独立于应用程序,包括数据的物理独立性和逻辑独立性,给数据库的使用、调整、优化和进一步扩充提供了方便。
3.数据共享,数据库中的数据可以供多个用户使用,每个用户只与库中的一部分数据发生联系;用户数据可以重叠,用户可以同时存取数据而互不影响。
4.减少数据冗余,数据库中的数据不是面向应用,而是面向系统。数据统一定义、组织和存储,集中管理,避免了不必要的数据冗余。
5.数据结构化,整个数据库按一定的结构形式构成,数据在记录内部和记录类型之间相互关联,用户可通过不同的路径存取数据。
6.统一的数据保护功能,在多用户共享数据资源的情况下,对用户使用数据有严格的检查,对数据库规定密码或存取权限,以确保数据的安全性、并发控制。
数据库的默认端口:
mysql的默认端口是3306,可以编辑用户目录下的 .my.cnf 文件进行修改。
sqlserver默认端口号为:1433
oracle 默认端口号为:1521
DB2 默认端口号为:5000
PostgreSQL默认端口号为:5432
2.MySQL的安装与配置
对于数据库的安装,我个人比较喜欢手动配置,步骤如下
mysql下载地址:https://dev.mysql.com/downloads/mysql/
配置环境变量,在path中添加MySQL安装路径\bin
解压后直接在MySQL的bin目录下打开cmd,执行mysqld --initialize --console
将生成的这个记下来。这是登入数据库的初始密码
继续执行mysqld --install
显示 Service successfully installed. 则说明安装成功
执行 net start mysql 启动mysql服务
然后登陆mysql:输入mysql -u root -p
密码就是刚刚生成的那一串东西
登陆进来过后,要修改自己数据库的密码,命令如下
alter user 'root'@'localhost' identified by 'youpassword';
查看一下数据库,若出现mysql这个库,则说明数据库root密码修改成功,并且以root用户登录。
软件安装就已经全部完成了。
旧版本安装
进入改文件夹,新建一个my.ini
[mysql]
; 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
;设置3306端口
port = 3306
; 设置mysql的安装目录
basedir=C:\mysql-5.6.17-winx64
; 设置mysql数据库的数据的存放目录
datadir=C:\mysql-5.6.17-winx64\data
; 允许最大连接数
max_connections=200
; 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
; 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
添加环境变量
用管理员打开cmd
安装好过后默认没有密码的。按照以下命令修改密码
退出以后就可以用新密码登录了。
3.MySQL语法
在MySql数据库中,SQL语句主要可以划分为以下几类:
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引、约束)的操作。
CREATE、DROP、ALTER、RENAME、 TRUNCATE等
DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。
INSERT、DELETE、UPDATE、SELECT等
DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。
3.1 创建数据库
#create database 数据库名字;.
#一个例子
create database javaee_db01;
#选则创建的数据库
use javaee_db01;
#显示所有数据库
show databases;
3.2 创建表
CREATE table countries(
id int(2) not null PRIMARY KEY auto_increment,
country VARCHAR(15) not null
);
#查看表结构
desc countries;
#PRIMARY KEY主键
#auto_increment自动递增
#int数据类型,varchar、char......
3.3 表的修改删除等操作
MySQL更改数据:
新增字段-->alter table table_name add column col_name 类型;
修改字段-->alter table table_name change oldc_name newc_name 类型;
修改类型-->alter table table_name modify col_name 类型;
修改表名-->alter table oldt_name rename to newt_name;
更新数据-->update table_name set col_name = colnew_value where col_name = colold_value ;
MySQL删除数据:
删除数据表-->drop table if exists table_name;
记录删除-->delete from table_name where 条件;
3.4 查询语句
MySQL查询语句:
查询所有-->select * from table_name;
指定查询-->select col_name1,col_name2…… from table_name;
条件查询-->select * from table_name where 限定条件;
(where语句中的关键字:and or like betwing in 排序)
like模糊查询-->select * from table_name col_name like '-%';#_表示匹配任意一个字符 %表示通配符,匹配0个到多个字符。
排序查询-->select * from table_name order by col_name desc; #desc表示升序,asc表示降序,如果需要多个字段排序,直接在后面加
3.5 多表查询
1. 交叉连接:不带WHERE 子句它返回被连接的两个表所有数据行,使用cross join关键字进行交叉连接
-->select 字段1,字段2,…… from 表一 cross join 表二;
2. 内连接:指定了关键字为INNER的连接为内连接,内连接分三种:等值连接、自然连接、不等连接;
-->SELECT * FROM table_name INNER JOIN table2_name on 连接条件;
3. 外连接:指定了关键字为OUTER的连接为外连接,外连接分为两种,左外连接和右外连接
左外连接-->会显示所有左表数据,右表只显示匹配到的数据,无匹配,以null填充
SELECT * FROM table_name LEFT OUTER JOIN table2_name ON 连接条件;
右外连接-->会显示所有右表数据,左表只显示匹配到的数据,无匹配,以null填充
SELECT * FROM table_name RIGHT OUTER JOIN table2_name ON 连接条件;
4. 全连接,左表和右表的数据将会全部显示,中间用UNION连接
SELECT * FROM table_name LEFT OUTER JOIN table2_name ON 连接条件
UNION
SELECT * FROM table_name RIGHT OUTER JOIN table2_name ON 连接条件;
5.子查询:一个查询语句嵌到另一个查询语句的子句
-->select * from table1_name where 字段1 =(
SELECT 字段 from table2_name where 条件
);
查询table1_name表中的字段,查询条件是字段1等于后面这个查询语句的结果
3.6 MySQL函数
1. 聚合函数:
-->AVG() 返回某列的平均值;
-->COUNT() 返回某列的行数
-->MAX() 返回某列的最大值
-->MIN() 返回某列的最小值
-->SUM() 返回某个列之和
2. 分组查询 group by
-->Select 分组字段或聚合函数 from 表 where 条件 group by 分组字段 having 条件 order by 字段
3. 数学函数
-->ABS(x) 返回x的绝对值
-->RAND() 0-1的随机数
-->ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
-->MOD(x,y) 返回x/y的模(余数)
-->PI() 返回pi的值(圆周率)
-->SQRT(x) 返回一个数的平方根
-->GREATEST(x1,x2,...,xn) 返回集合中最大的值
-->LEAST(x1,x2,...,xn) 返回集合中最小的值
4. 字符串函数
-->ASCII(str) 返回字符串的ASCII码
-->CONCAT(str1,str2,...) 将给定字符串拼接
-->LENGTH(str) 返回给定字符串长度
-->LEFT(str,len) 返回给定字符串最左len个字符
-->RIGHT(str,len) 返回给定字符串最右len个字符
-->SUBSTRING(str,pos) 字符串str的起始位置pos返回一个子串
-->REVERSE(str) 将str顺序反转
-->LOWER(str) Str转为小写
-->UPPER(str) Str转为大写
5. 时间函数
-->CURTIME() HH:MM:SS或HHMMSS返回当前时间值
-->NOW() YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS
-->CURDATE() YYYY-MM-DD’或YYYYMMDD
-->WEEKDAY(date) 返回日期的星期索引(0开始)
-->DAYOFYEAR(date) 返回给定日期的天数
本人联系方式2329095893,欢迎各位进行学习讨论
转载:https://blog.csdn.net/chen_hao_181/article/details/101308505