数据库学习之mysql数据库
参考链接网站:
http://c.biancheng.net/view/2361.html
Mysql的版本以及版本号
MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。
MySQL Enterprise Server(企业版):该版本能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能,但是该版本需要付费使用,官方提供电话技术支持。
Mysql服务器端实用工具:
http://c.biancheng.net/view/2395.html
Mysql数据库的安装教程:
自行百度
Mysql创建数据库
create dababase [if not exists] 数据库名
default character set utf8
default collate utf8_chinese_ci;
Mysql查看数据库
show database [like '数据库名'];
Mysql修改数据库
alter database [数据库名]
default character set utf8
default collate utf8_chinese_ci;
Mysql删除数据库
drop database [数据库名];
Mysql选择数据库
use [数据库名];
Mysql存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
在Mysql5.5.5之后,InnoDB作为默认的存储引擎
查看支持的引擎
show engines
修改默认引擎
set default_storage_engine=[引擎名];
当再次重启时,还是原来的引擎
Mysql常见的数据类型
http://c.biancheng.net/view/2421.html
Mysql创建数据表
创建表
create table 表名
(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型
);
查看表结构
desc 表名
show create table 表名\G;
Mysql修改数据表
常见的修改表的操作有修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等
添加字段
alter table 表名 add 新字段名 数据类型 约束条件[first|after 已存在的字段名];
FIRST 为可选参数,其作用是将新添加的字段设置为表的第一个字段;AFTER 为可选参数,其作用是将新添加的字段添加到指定的已存在的字段名的后面。
修改字段数据类型
alter table 表名 modify 字段名 数据类型;
删除字段
alter table 表名 drop 字段名;
修改字段名称
alter table 表名 change 旧字段名 新字段名 新数据类型:
修改表名
alter table 旧表名 rename to 新表名:
Mysql删除数据表
drop table 表名;
Mysql主键
“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。
创建设置主键约束
create table 表名
(
id int(11) primary key,
name varchar(25)
);
或者
create table 表名
(
id int(11),
name varchar(25),
primary key(id)
);
Mysql外键约束
MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。
外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表中主键的某个值。
外键是表的一个字段,不是本表的主键,但对应另一个表的主键。定义外键后,不允许删除另一个表中具有关联关系的行。
创建设置外键约束
首先创建主键
create table name1
(
id int(11) primary key,
name varchar(22) not null,
location varchar(50)
);
建立外键约束
create table name2
(
id int(11) primary key,
name varchar(25),
deptid int(11),
salary float,
foreign key(depid) references name1(id)
);
在修改表时添加外键约束
ALTER TABLE tb_emp2
ADD CONSTRAINT fk_tb_dept1
FOREIGN KEY(deptId)
REFERENCES tb_dept1(id);
删除外键约束
ALTER TABLE tb_emp2 DROP FOREIGN KEY fk_tb_dept1;
查看表中的约束
show create table 表名;
Mysql去重
select distinct 字段名 from 表名;
Mysql设置别名
表名 as 别名
列名 as 列别名
Mysql限制查询结果的记录条数
limit 位置偏移量 行数
limit 4,3和mysql中可以使用的limit 4 offset 3一样
Mysql对查询结果进行排序
order by {列名|表达式|位置} [ASC|DESC]
Mysql条件查询
单一条件:
select name,height from users where name='zhangsan';
多条件的查询语句:
select * from users where age>21 and height>=175;
使用like的模糊查询:
表达式1 not like 表达式2
Mysql支持的通配符:
百分号%
百分号是Mysql中常用的一种通配符,在过滤条件中,百分号可以表示任何字符串,并且该字符串可以实现任意次。
下划线_
下划线通配符和百分号通配符的用途一样,下划线只匹配单个字符,而不是多个字符,也不是0个字符
Mysql常用运算符
算术运算符:
加、减、乘、除、取余
比较运算符:
= < <= > >= <=> <>或!=
isnull
is not null
betwwen and
least
greatest
in
not in
逻辑运算符:
not或者! 逻辑非
and或者&& 逻辑与
or或者|| 逻辑或
xor 逻辑异或
位运算符:
| 按位或
& 按位与
^ 按位异或
<< 按位左移
~ 按位取反,反转所有比特
无法确定优先级的情况下,可以使用()来改变优先级。
Mysql内连接查询
内连接是通过在查询中设置连接方式,来移除查询结果集中某些数据行后的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。
在MySQL FROM 子句中使用关键字 INNER JOIN 连接两张表,并使用 ON 子句来设置连接条件。
select 列名1,列名2 from 表名 inner join 表名 [on 子句]
内连接是系统默认的表连接,所以在from子句后可省略Inner关键字,只用关键字join。
Mysql外连接查询
外连接先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足的条件
左外连接又称为左连接,在 FROM 子句中使用关键字 LEFT OUTER JOIN 或者 LEFT JOIN,用于接收该关键字左表(基表)的所有行,并用这些行与该关键字右表(参考表)中的行进行匹配,即匹配左表中的每一行及右表中符合条件的行。
左外连接:
select name,dept_name form tb_students_info s left outer join tb_departments d on s.dept_id=d.dept_id;
右外连接:
select name,dept_name form tb_students_info s right outer join tb_departments d on s.dept_id=d.dept_id;
Mysql子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从Mysql4.1开始引入,在select子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表
子查询中常用的运算符
IN 子查询
[not] in
比较运算符子查询
{= | < | > | >= | <= | <=> | < > | != }{ ALL | SOME | ANY}
子查询实例:
select name from users where dept_id in (select dept_id from users2 where dept_type='a');
select name from users where dept_id <> (select dept_id from users2 where dept_type='a');
select name from users where exists (select dept_id from users2 where dept_type='a');
Mysql分组查询
允许使用group by子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合。
group by {列名|表达式|位置} [ASC|DESC]
select dept_id,group_concat(name) as names from users group by dept_id;
Mysql指定过滤条件
having子句过滤分组条件(主要用来过滤组)
having 条件
实例:
select dept_id,group_concat(name) as names from users group by dept_id having count(name)>1;
Mysql正则表达式查询
Mysql插入数据
1.insert...values语句
insert into 表名(列名) values(值);
2.insert...set语句
insert into 表名 set 列名1=值1 列名2=值2;
Mysql修改语句
update 表名 set 字段1=值1[,字段2=值2...][where 子句][order by 子句][limit 子句]
Mysql删除数据
删除表中的数据
delete from 表名 [where 子句][order by 子句][limit 子句]
Mysql视图简介
视图是数据库系统中一种非常有用的数据库对象。
视图是一个虚拟表,其内容由查询定义。
Mysql自定义函数
create function 函数名(参数1 类型1[,参数2 类型2])
return 类型
函数主体
create function StuNnameById()
return varchar(45)
return
(select name from 表 where id=1);
删除自定义函数
drop function 自定义函数名
Mysql存储过程简介
存储过程是一组为了完成特定功能的 SQL 语句集合。一个存储过程是一个可编程的函数,它在数据库中创建并保存,一般由 SQL 语句和一些特殊的控制结构组成。
Mysql触发器简介
触发器与表关系密切,主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。
Mysql索引
索引是 MySQL 数据库中的重要对象之一,用于快速找出某个列中有某一特定值的行。
Mysql创建用户
创建用户
create user 用户名 [identified] by [password] 口令
用户名:指定创建用户账号,格式为 'user_name'@'host_name'。这里user_name是用户名,host_name为主机名,即用户连接 MySQL 时所在主机的名字。若在创建的过程中,只给出了账户的用户名,而没指定主机名,则主机名默认为“%”,表示一组主机。
password:可选项,用于指定散列口令,即若使用明文设置口令,则需忽略PASSWORD关键字;若不想以明文设置口令,且知道 PASSWORD() 函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字PASSWORD。
identified by子句:用于指定用户账号对应的口令,若该用户账号无口令,则可省略此子句。
口令:密码
create user 'james'@'localhost' identified by 'tiger';
mysql -h localhost -u james -p;
修改用户
rename user 旧用户 to 新用户
eg:rename user james@'localhost' to jack@'localhost';
修改用户密码
set password for 'jack'@'localhost'=password('lion');
Mysql删除用户
drop user 'jack'@'localhost';
Mysql用户授权
转载链接:http://c.biancheng.net/view/2615.html
当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限,可以使用show grant for查看用户的权限
语法格式:
GRANT
[ ( ) ] [ , [ ( ) ] ]
ON TO
其中的格式:
[ IDENTIFIED ] BY [ PASSWORD ]
[ WITH GRANT OPTION]
| MAX_QUERIES_PER_HOUR
| MAX_UPDATES_PER_HOUR
| MAX_CONNECTIONS_PER_HOUR
| MAX_USER_CONNECTIONS
eg:grant select,insert on . to 'testUser'@'localhost' identified by 'testpwd' with grant option;
Mysql删除用户权限
转载链接:http://c.biancheng.net/view/2616.html
Mysql数据库中可以使用revoke语句删除一个用户的权限,此用户不会被删除
revoke insert on . from 'testuser'@'localhost';
Mysql事务
MySQL 数据库中事务是用户一系列的数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
数据库备份
使用select into outfile
SELECT * FROM test_db.tb_students_info
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/file.txt'
FIELDS TERMINATED BY '"'
LINES TERMINATED BY '?';
数据库导入
create table name;
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/
Uploads/file.txt'
INTO TABLE test_db.name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '?';
mysql字符串函数、Mysql数字函数、Mysql高级函数
转载链接: https://www.runoob.com/mysql/mysql-functions.html
数据库学习之mysql数据库的更多相关文章
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)
1.简介 在实际工作中,我们经常会听到数据库的性能和稳定性等等,这些有时候也需要测试工程师去评估和测试,上一篇文章宏哥主要介绍了jmeter连接和创建数据库测试计划的过程,宏哥在文中通过示例和代码非常 ...
- 怎样将Sqlserver数据库转成mysql数据库
手上有一个网站之前是用asp.net做的,所使用的数据库是sqlserver,现在打算用PHP+MYSQL架构.因原来的站点有一定排名,直接改版的话,会导致产生很多错误页,网站排名和收录结果要恢复过来 ...
- Vc数据库编程基础MySql数据库的表查询功能
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select ...
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- Vc数据库编程基础MySql数据库的常见库命令.跟表操作命令
Vc数据库编程基础MySql数据库的常见操作 一丶数据库常见的库操作 1.1查看全部数据库 命令: show databases 1.2 创建数据库 命令: Create database 数据库名 ...
- 通过JSP网页连接MySQL数据库,从MySQL数据库中读出一张表并显示在JSP网页中
1.安装所需软件 ①安装java和tomcat,建立JSP网页最基础的软件②安装MySQL数据库(下载地址:https://www.mysql.com/)③安装Navicat Premium来查看数据 ...
- MySQL数据库迁移与MySQL数据库批量恢复
目录 一.MySQL数据库迁移或备份 1. 了解使用InnoDB引擎创建数据库所产生的文件 2. 迁移数据库步骤 1. 从A服务器迁移至B服务器 2. MySQL重装并导入之前数据库 二.MySQL数 ...
- 数据库学习之MySQL基础
数据库基础 一.数据库简介 数据库:存放数据的仓库 sql及其规范 sql是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能 ...
随机推荐
- 构建CRD工程 - 程序员学点xx 43 k8s
目录 Kubernetes -3- 这是yann的第98篇分享 本日状态: 帮同事排了一天bug. Kubernetes -3- 这是yann的第98篇分享 第 1 部分 承前 昨天用视屏的方式演 ...
- 成为k8s大佬,从这个操作开始(伪) - 程序员学点xx 42 k8s
目录 Kubernetes -2- 这是yann的第97篇分享 本日状态: 饿着肚子写公众号的 yann 同学. 第 1 部分 反省 昨天的内容被熊哥批评了. 熊哥说,「你光想着自己爽,一句我认为 ...
- Django 的 logging日志文件配置
在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...
- vue 一个轮播的组件
当我们进行开发的时候,并不是说所有信息都会在写一个组件中 作为项目的老大,我们要去思考每个文件下面需要放什么业务,分的越细.越合理为好 我们在componts文件下新建一个Banner.vue 组件 ...
- 实现斐波那契数列之es5、es6
es5实现斐波拉契函数数列: <script type="text/javascript"> function fibonacci(n) { var one = 1; ...
- Maven 集成Tomcat插件(引用)
Maven已经是Java的项目管理标配,如何在JavaEE开发使用Maven调用Web应用,是很多同学关心的问题.本文将介绍,Maven如何介绍Tomcat插件. Maven Tomcat插件现在主要 ...
- C# 模拟页面登录
using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys ...
- 记录cobbler报错
出现下面这个错误解决方法 httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Ori ...
- 阿里云ECS VSFTP上传本地文件
开始终端 购买云服务,获得公网IP,内网IP 控制台首页获得 获得终端连接密码 连接终端,输入连接密码 获得终端界面,进入终端 上传文件 ## .安装VSFTP服务器程序 yum install vs ...
- 为什么有线宽带提供商获得ASN非常重要?
光纤和同轴电缆的组合(数据有线电视服务接口规范),由此产生的网络在世界引入了高速互联网接入.我们能够从网络运营中心向家庭用户提供10Mbps的下载速度. 拥有自己的自治系统编号(ASN)和IP块意味着 ...