数据库学习之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 ‘localhost‘ to ‘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 ‘?‘;

相关推荐