数据库学习之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是专为数据库而建立的操作命令集,是一种功能 ...
随机推荐
- P3064 [USACO12DEC]伊斯坦布尔的帮派 (模拟)
题目传送门 题意: 一片草地,每次可以只可以让一种牛占领,问你怎样安排牛的次序 最后剩下的是1号牛,并且输出其数量 思路: 看到n到100 ,所以可以(n^3)暴力,第一重遍历次序,第二枚举是哪只牛 ...
- Untiy3D学习笔记记录
一,原点和中心点 pivot(原点):位置移动的点(模型的原点不会发生变化) center(中心点):计算模型的中心,会发现变化(比如有两个cube,他的中心点会计算在两个模型的中间) 二,prefa ...
- SQL Server 查找字符串中指定字符出现的次数
要查找某个指定的字符在字符串中出现的位置,方法比较简单,使用 len() 函数和 replace() 函数结合就可以. SELECT TOP 200 approveInfo approveInfo2, ...
- unity2017 光照与渲染(一)
光照&渲染(基于unity2017.2.0) Custom Skybox 天空盒 最丰富的环境光 a. TextureShape 改成 Cube. b. 把图片直接丢给天空,就会自动生成材质. ...
- Linux性能优化从入门到实战:13 内存篇:内存指标/工具总结、问题定位和调优
内存性能指标 系统内存指标 已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存. 共享内存是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小.tmpfs 其实也是一种特 ...
- Django中如何将javascript中的变量传给位于javascript内的{% url %}中的参数?
这个问题困扰了我一天,不知道困扰了你多久,希望能帮助你 django 中的url模版使用起来可以说是非常方便的,但是怎么在url模版中传入参数的 {% url "url.index" ...
- The list of list is modified unexpected, python
Be careful! The list of list is modified unexpected, python # code patch A: list = [1,2,3,4,5,6,7] p ...
- basic deepwalk
Get to know How deepwalk works by this project. Two steps: 1. gen the graph, and gen the corpus on t ...
- Dubbo学习-3-管理控制台搭建
dubbo 2.6.x 的dubbo-admin管理控制台搭建 1.下载源码:https://github.com/apache/incubator-dubbo-ops 打开后切换到master分支 ...
- vue框架搭建--移动端
由于Vue官方提供了vue-cli手脚架,所以快速构建出个简单的项目框架.在做移动端项目时,因为移动端的特性可能会用到些比较常用的插件,就在这里简单介绍如何使用 这里只介绍怎么在项目中安装引用和简单的 ...