• 学习笔记总结,比较多, 建议直接 ctrl + f 快速查询关键词。
  • 本文中可能有少量叠词,请多多包涵。
连接数据库

命令:

mysql -h服务器器地址 -u⽤用户名 -p #不要再p后面直接跟密码

数据库操作命令:
#1.查看库
show databases;
#2. 创建库
create database 数据库名 default charset=utf8;# 数据库名不要纯数
字,不要用汉字
#3. 删除库
drop database 数据库名;
#4. 选中库
use 数据库名;
#5. 查看表
show tables;
#6.查看数据库创建语句句
show create database 数据库名
#7.查看选中的数据库
select database()
#8 修改数据库字符集
alter database student default charset=utf8;

注意事项:
每条命令结束必须使用; 或者 \g 结束
退出mysql使用命令quit或exit


创建表:
create table [if not exists] 表名(
列名1 类型 [限制],
列名2 类型 [限制],
...
列列名n 类型 [限制] #最后⼀列列没有逗号
) [engine=myisam | innodb][ default charset=utf8];
primary key 主键 不允许有重复值,不允许为空
auto_increment ⾃增⻓,只对int型主键起作⽤
#复合主键
mysql> create table grade(
sid int ,
cid int,
score float,
primary key(sid,cid));

删除表

drop table 表名;

复制表结构

create table 表名 like 其他表名;

查看表结构

desc 表名;

查看建表语句

show create table 表名;

修改表

#### 修改字段类型
alter table 表名 modify 字段名 类型 [限制]#增加字段
alter table 表名 add [column] 字段名 类型 [限制];#删除字段
alter table 表名 drop [column] 字段名;修改字段名和类型
alter table 表名 change [column] 旧字段名 新字段名 类型 [限制];#修改表名
alter table 表名 rename 新表名
alter table 表名 [engine=myisam] [default charset=utf8];#### 可以通过first、 after指定插⼊位置
alter table student add sno varchar(3) not null after sid; //在
sid列后插⼊入alter table student add sid int primary key auto_increment
first;//在第⼀列插⼊

字段限制

primary key 不不允许空值,唯⼀一
not null ⾮非空
unique 唯⼀一
default 缺省,默认值

数据类型

char 和 varchar 的区别:

  • char的执行行效率高于varchar , varchar 相对于 char 节省存储空间
    如果使用char 传入的数据的长度 小于指定的长度的时候 存储的实际长度
    不不够的会拿空格来填充
  • 如果使用 varchar 传入的数据的长度 小于指定的长度的时候 存储的实际长度 为传进来的数据的长度

日期时间型

枚举enum

#是⾃定义类型,可以多选一,实际上存的值是1, 2, 3...
alter table user add sex enum('男','⼥女女') default '男';

集合 set

类似复选框,可以存多个值
alter table student add hobby set('看电影','玩游戏','敲代码','烫
头')

增删改查

insert

写法⼀一: insert into 表名(字段1,字段2...) values(值1,值2...);
省略了字段列表,则按照建表时的字段顺序进⾏行插入,每一列都要给值
写法⼆: insert into 表名 values(值1,值2...);
写法三:插⼊入多个记录
insert into 表名(字段1,字段2...)
values(值1,值2...),
(值1,值2...),
(值1,值2...)....
写法四: insert into 表名(name,age,sex)
select name,age,sex from stars;
insert into histroy_student select * from student;

update

update 表名 set 字段1=值1,字段2=值2... where 条件 #不不加where修改的是所
有的记录

delete

删除表中的数据,⾃增主键的值不不会重新开始
delete from 表名 where 条件; #如果不加条件,会删除表中所有数据,慎重使⽤
alter table 表名 auto_increment = 5 # 设置自增主键开始值
清空表,⾃自增主键的值重新开始编号
truncate
truncate table 表名,清空表中所有记录,等价于delete from 表名;
delete和truncate差别, truncate后,表中自增主键值从1开始

数据查询

基本结构 : select 字段名列表 from 表名

1 基础查询 :

select username,password from user;
select usernname as ⽤用户名, password as 密码 from user; #可以给字段起
别名
select * from user; #查询所有字段,慎用,一般不不建议使⽤用,会导致无法优化
sql语句句
select 2018,username,password from user; #可以有常量量,表达式
select sname,2018-year(sbirthday) from student; #year是mysql的内置函数
select distinct username from user; #去除重复记录 distinct 针对查询结
果去除重复记录,不针对字段

2 条件查询 (where):

关系运算:

  • 关系运算符: > 、 >=、 <、 <=、 =、 !=、 <>、 between and
select username,password from user where uid <10
select username,password from user where uid != 10
select username,password from user where uid between 10 and 20
  • 逻辑运算
    逻辑运算符: and 、 or、 not
select username,password from user where uid < 100 and uid > 20;
select username,password from user where uid > 100 or uid < 20;
  • 集合运算
    集合运算符: in、 not in
select username,password form user where uid in (2,3,4)
select username,password form user where uid not in (2,3,4)
  • 判空
    判空运算: is null、 is not null
select username,password from user where username is null
  • 字符串串的模糊查询(like)
    通配符 _代表一个字符, %代表任意长度字符串串
select * from user where username like '王_';
select * from user where username like '王%';

3 排序(order by)
asc 升序(默认)、 desc 降序

select * from user order by age asc;
select * from user order by age desc;
多字段排序
select name,age from php_user_history order by age desc,name;#
如果在第⼀一列上有相同的值,在具有相同的age的记录上再按name升序排列

4 限制结果集(limit)
limit n # 取前n条记录
limit offset,n #从第offset条开始取,取n条

select * from php_user_history limit 3;
select * from php_user_history limit 4,2;
注意结果集中记录从0开始数数, offset相对于0开始
实现分页必须的技术点
limit (page-1)*num,num

5 集合函数

count统计结果集中记录数
max 最大值
min 最小值
avg 平均值,只针对数值类型统计
sum 求和,只针对数值类型统计
注意,集合函数不能直接使用在where后面的条件里,但可以在子查询中
select count(*) num from user;
select count(distinct age) num from user; //去除重复记录
select * from student where sno = max(sno);//错误

6 分组(group by)
将结果集分组统计,规则:
出现了groub by的查询语句句, select后面的字段只能是集合函数和group by后
面有的字段,不要跟其它字段
对分组进⾏行过滤,可以使用having

select uid, count(*) num from php_forum group by uid;
select uid,title, count(*) num from forum group by uid having
count(*) >=2;
having和where的区别:
where针对原始表进行过滤
having 是针对分组进行过滤

查询小结:
整体顺序不不能颠倒
[]表示可选,可以有也可以没有
select 字段 from 表名 [where 条件][group by ] [having][order by ] [limit]

8 字符集和存储引擎

  • 为了能够正常显示中文,必须把数据库的字符集设置为utf8
修改mysql的配置⽂文件
cd /etc/mysql/mysql.conf.d
sudo cp mysql.cnf mysql.cnf.bak
sudo vim mysql.cnf
在[mysqld]下增加一句:
character_set_server = utf8
保存并重启服务
sudo systemctl restart mysql.service #重启服务
  • 数据库引擎
    可以使⽤用show engines命令查看数据库引擎
show engines \G


通过上面的比较我们可以了了解到, InnoDB是唯⼀一能够支持外键、事务以及行行锁的
存储引擎,所以我们之前说它更适合互联网应用,而且它也是较新的MySQL版本
中默认使用的存储引擎。

  • myisam和innodb的区别
    myisam查询速度快,不支持事务、不支持外键、支持表锁
    innodb增删改效率高,支持事务、⽀支持外键,支持行锁

最全面实用的MySql操作大全。相关推荐

  1. Xtrabackup备份、还原、恢复Mysql操作大全

    环境:CentOS 6.7  + Mysql 5.7.19 + Xtraback 2.4.8 innobackupex常用参数: --user=USER 指定备份用户,不指定的话为当前系统用户 --p ...

  2. mysql xtrabackup还原_Xtrabackup备份、还原、恢复Mysql操作大全

    #数据目录:/data/mysql $ mkdir -pv /backup/3306/20171107/{full,inc1,inc2} #本地 单实例 全量备份 $ innobackupex --d ...

  3. cmd中mysql的操作语句,mysql命令行操作大全 mysql命令行操作总结

    摘要 腾兴网为您分享:mysql命令行操作大全 mysql命令行操作总结,悦作业,英语字典,银万财富,小书亭等软件知识,以及webex,过租号,宁夏教育云,百货通,准妈妈课堂,京客隆网上超市,壁纸生成 ...

  4. 干货!MySQL 资源大全

    干货!MySQL 资源大全 2016-06-09 程序员的那些事 程序员的那些事 英文:shlomi-noach 译者:伯乐在线 - 夏了夏天 链接:http://blog.jobbole.com/1 ...

  5. MySQL 资源大全

    shlomi-noach 发起维护的 MySQL 资源列表,内容覆盖:分析工具.备份.性能测试.配置.部署.GUI 等. 伯乐在线已在 GitHub 上发起「MySQL 资源大全中文版」的整理.欢迎扩 ...

  6. MySQL 语句大全

    转载:http://5ih.org/?post=185 MySQL 语句大全: 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 dro ...

  7. mysql资源教程_MySQL 超级入门教程以及MySQL 资源大全的分享

    MySQL简介 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅 ...

  8. linux mysql 命令 大全

    linux mysql 命令 大全 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.l ...

  9. SQL语句操作大全(本文系转载)

    SQL语句操作大全(本文系转载) SQL语句操作大全(本文系转载) --通过知识共享树立个人品牌. 本文分为以下六个部分: 基础部分 提升部分 技巧部分 数据开发-经典部分 SQL Server基本函 ...

最新文章

  1. 陆奇宣布卸任COO后首度露面,将担任李彦宏的个人顾问
  2. Android Training - 使用IntentService运行任务(Lesson 2 - 发送任务给IntentService)
  3. 概述nodejs核心机制
  4. 解惑小微企业信息化系统上云的顾虑
  5. JS中typeof的用法
  6. C#发送电子邮件 (异步) z
  7. linux kill命令信号,Linux kill 命令详解
  8. oracle 结果缓存,Result cache结果缓存
  9. LPTHW 笨办法学python 37章 python关键字/关键词介绍
  10. html 特效隐藏div,如何实现用css3显示隐藏一个div特效
  11. break continue
  12. GDUFE ACM-1096
  13. 205.同构字符串 (力扣leetcode) 博主可答疑该问题
  14. LAMP兄弟连PHP高薪就业班2012召集令
  15. CT一般扫描参数_工业CT检测服务
  16. 请客必备:【转】100元以内南宁市有特色的餐馆
  17. 2019年图灵奖Edwin E. Catmull和Patrick M. Hanrahan简介
  18. DID会固定年份吗_你了解渐进式DID平行趋势图的几种画法吗?
  19. 儿童吹泡泡水简单配方_请问儿童吹泡泡液如何制作?
  20. 电脑变wifi 用电脑建立无线网

热门文章

  1. 树莓派第三代跨越发展,采用64位处理器内建WiFi及蓝牙
  2. CloudStack无法添加模板和iso
  3. 光盘压制:八种加密方法保护光盘数据安全
  4. SATA硬盘如何使用GHOST
  5. JavaScript中window.open用法实例详解
  6. 最大子段和——分治与动态规划
  7. java中普通类、抽象类、接口的区别?
  8. C语言的词法分析在长度规则方面采用的是什么策略?
  9. 设计模式:单例模式之静态内部类
  10. 电脑回收站删除的文件怎么恢复,原来这么简单