当前位置: 移动技术网 > IT编程>数据库>Mysql > MYSQL 笔记

MYSQL 笔记

2019年04月10日  | 移动技术网IT编程  | 我要评论

本人是一名学生,正在学习过程中,所以笔记涵盖的还不是很广,不过也算基本够用,希望以后能更加完善。

登陆数据库

mysql -h 主机名 -u 用户名 -p

> mysql -u root -p

列出数据库

show databases;

选择数据库

use 数据库名;

查看当前数据库

select databases;

查看数据库定义

show create database 数据库名;

创建数据库

create databases 数据库名;

default 默认约束

collate 字符序

(例 create database `test` default character set utf8 collate utf8_general_ci)

修改数据库

alter databases 数据库名;

删除数据库

drop database <数据库名>;

 

数据备份:

备份一个数据库:

 mysqldump -u username -p dbname table1 table2 ...> path/backupname.sql

(dbname为数据库文件名如:word.sql,table1,table2为参数表名,当没有表名时,将备份整个数据库,path/to/your/dictionary为你要备份到什么地方的路径)

备份多个数据库

mysqldump -u username -p  --databases  dbname1  dbname2...> path/backupname.sql

备份所有数据库

 mysqldump -u username -p  --all-databases  > path/backupname.sql

直接复制整个数据库目录,简单粗暴:

show variables like '%datadir%';

数据恢复

 1. mysql -uusername  -p  dbname  < path/to/your/dictionary

  2.进入mysql后选择数据库 source 后面直接接路径

 

 

显示表

show tables;

显示数据表的属性

show columns from 数据表;

查看表的结构

desc 表名;

查看表的定义结构

show create table 表名;

创建数据表

create table table_name (column_name column_type);

默认数据

default

(建表示例:

    create table customers(

       id int not null auto_increment,

       name char(20) not null,

       address char(50) null,

       city char(50) null,

       age int not null,

       love char(50) not null default 'no habbit',

       primary key(id)

     )engine=innodb default charset=utf8;

     

  #引擎类型,多为engine = innodb,如果省略了engine=语句,则使用默认的引擎(myisam)

  #默认字符集,default charset,一般为utf8或gbk。

)

删除数据表

drop table table_name ;

重命名数据表

rename table 表名 to 新表名

更新表(alter table 表名)

添加列

alter table 表名 add 列名 数据类型

删除列

alter table 表名 drop column 列名

修改列名

alter table 表名 change 列名 新列名 数据类型

修改列的数据类型

alter table 表名 modify 列名 数据类型

 

 

自动编号(必须与主键组合使用)

auto_increment

主键(主键保证记录的唯一性,主键自动为not null)

primary key

外键(指定该列记录属于主表中的一条记录,参照另一条数据)

foreign key

(

外键:删除和更新有四种设置方式

(1)cascade:级联,当父表更新、删除,子表会同步更新和删除

(2)set null:置空,当父表更新、删除的时候,字表会把外键字段变为null,所以这个时候设计表的时候该字段要允许为null,否则会出错

(3)restrict:父表在删除和更新记录的时候,要在子表中检查是否有有关该父表要更新和删除的记录,如果有,则不允许删除个更改

(4)no action:和restrict一样

导入表时外键建立不了,查看引擎是否为innodb,(innodb支持外键和事务)

修改表的存储引擎为innodb

alter table 表名 engine='innodb'

)

唯一约束(指定某列和几列组合的数据不能重复)

unique

非空约束(指定某列不为null)

not null

默认约束

default

 

 

插入数据

insert into 表名(列名1,列名2……)values ( 数据1,数据2……)

insert into 表名 values (数据1,数据2……)

批量插入

insert into 表名 values (数据1,数据2……),(数据1,数据2……),(数据1,数据2……)

删除数据

delete from 表名 [where 条件] (没有条件则删除整个表)

truncate table 表名:先删除表再重建表 (删除表)

更新数据

update 表名 set 列名=值,列名=值 [where 条件];

查询数据

select[distinct][*][列名1,列名2] from 表名 where 条件 group by…… having 条件过滤 order by 排序;

去重

distinct

限制结果

limit

完全限制表名

表名+.

排序(order by)

asc:ascend 升序(默认)

desc:descend 降序

分组

group by

合并结果

union

过滤数据

 

where子句

=   等于

<>  不等于

!=  不等于

<   小于

<=  小于等于

>   大于

>=  大于等于

between……and……  指定两个值之间

is null  为空值

and  两个条件同时满足   or  满足其中一条

(and 和 or 可以组合使用,and优先级高于or)

in 指定条件范围 (例 in(1002,1003))

not 否定后跟条件关键字 ====> not in,not like...

分组数据

group by 分组数据

having 过滤分组

having和where的区别

   having 与where使用方式类似,在分组之后使用

   where是判断数据从磁盘读入内存的时候

   having是判断分组统计之前的所有条件

   having子句中可以使用字段别名,而where不能使用

   having能够使用统计函数,但是where不能使用

 

通配符

like 操作符 =====> select prod_id from products where prod_name like '%a-';

% 任意字符出现任意次数

_ 单个字符

正则表达式

regexp 操作符

.   任意一个字符

a|b   两个串之一(或,类同于or)

[a,b,c]  或 (例[123]匹配1或2或3,等同于[1|2|3]的缩写)

[^……] 非或 不匹配括号中的内容

[a-b] 范围区间 (例[1-3] 匹配1到3之间的数 [a-z]匹配任意字符)

binary 区分大小写

\\  特殊字符需要用\\引导 (例如查询 - 则输入 \\-)

元字符

换页

换行

回车

制表

纵向制表

字符类

[:alnum:]        文字数字字符

[:alpha:]        文字字符

[:blank:]        空白字符

[:cntrl:]        控制字符

[:digit:]        数字字符

[:graph:]        图形字符

[:lower:]        小写文字字符

[:print:]        图形或空格字符

[:punct:]        标点字符

[:space:]        空格、制表符、新行、和回车

[:upper:]        大写文字字符

[:xdigit:]       十六进制数字字符

(^)字符

匹配字符串的开始位置,如“^a”表示以字母a开头的字符串。

($)字符

匹配字符串的结束位置,如“x$”表示以字母x结尾的字符串。

(.)字符

这个字符就是英文下的点,它匹配任何一个字符,包括回车、换行等。

[[:<:]]     词的开始

[[:>:]]     词的结尾

重复字符

(*)字符

星号匹配0个或多个字符,在它之前必须有内容。如:

(+)字符

加号匹配1个或多个字符,在它之前也必须有内容。加号跟星号的用法类似,只是星号允许出现0次,加号则必须至少出现一次。

(?)字符

问号匹配0次或1次。

{} 区间

{n} 指定数目的匹配

{n,} 不少于指定数目的匹配

{n,m} 匹配数目的范围(m不超过255)

这是一个更全面的方法,它可以实现前面好几种保留字的功能

a*可以写成a{0,}

a+可以写成a{1,}

a?可以写成a{0,1}

计算字段

+ 加

- 减

* 乘

/ 除

(select后可以跟计算公式)

concat() 拼接字段

(例 mysql> select concat(’my’, ‘s’, ‘ql’);  ---> ‘mysql’)

函数

聚集函数

avg()  返回某列的平均值

count()  返回某列的行数

max()  返回某列的最大值

min()  返回某列的最小值

sum()  返回某列值之和

 

连接

inner join(内连接,或等值连接):获取两个表中字段匹配关系的记录。

left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

right join(右连接): 与 left join 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

 

视图(视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。)

-- 1.创建视图

create view 视图名 as  sql语句;

--2.删除视图

drop view 视图名;

--3.修改视图

alter view 视图名称 as sql语句

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

  • MySQL InnoDB表空间加密示例详解

    前言从 mysql5.7.11开始,mysql对innodb支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数... [阅读全文]
  • 如何解决mysql无法关闭的问题

    如何解决mysql无法关闭的问题

    mysql关闭不了的解决办法:右键点击电脑的任务栏,打开任务管理器点击服务,找到mysql服务右键点击该服务,选择停止就可以了内容扩展:mac系统mysqld进... [阅读全文]
  • mysql不是内部命令的错误解决方案

    mysql不是内部命令的错误解决方案

    出现mysql不是内部命令的错误是因为没有把mysql的bin目录路径添加到环境变量中解决方法:打开电脑的环境变量,选择系统变量,打开path,将mysql的b... [阅读全文]
  • 关于MySQL主从复制的几种复制方式总结

    关于MySQL主从复制的几种复制方式总结

    异步复制mysql的复制默认是异步的,主从复制至少需要两个mysql服务,这些mysql服务可以分布在不同的服务器上,也可以在同一台服务器上。mysql主从异步... [阅读全文]
  • 详细分析MySQL主从复制

    详细分析MySQL主从复制

    前言:在mysql中,主从架构应该是最基础、最常用的一种架构了。后续的读写分离、多活高可用架构等大多都依赖于主从复制。主从复制也是我们学习mysql过程中必不可... [阅读全文]
  • MySQL单表恢复的步骤

    正休息的时候一个电话将我的睡意完全打散,“开发童鞋写update sql的时候忘了加where条件了”,相信每一个dba同学听到这个消息的时候都有骂街的冲动吧。... [阅读全文]
  • MySQL性能优化之如何高效正确的使用索引

    实践是检验真理的唯一途径,本篇只是站在索引使用的全局来定位的,你只需要通读全篇并结合具体的例子,或回忆以往使用过的地方,对整体有个全面认识,并理解索引是如何工作... [阅读全文]
  • MySQL如何优化查询速度

    前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的mysql来说是必不可少的。 但这些还完全不够,还需要合理的设计查询。 如果查询写... [阅读全文]
  • MySQL优化SQL语句的技巧

    在面对不够优化、或者性能极差的sql语句时,我们通常的想法是将重构这个sql语句,让其查询的结果集和原来保持一样,并且希望sql性能得以提升。而在重构sql时,... [阅读全文]
  • 简述MySql四种事务隔离级别

    隔离级别:隔离性其实比想象的要复杂。 在sql标准中定义了四种隔离级别, 每一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。较低级别的隔离通... [阅读全文]
验证码:
移动技术网