mysql基本操作

基本功操作

mysql [–h 服务器名] –u登录名 [–P 端口号] -p; 登录mysql
set names gbk; 设置编码为gbk
show charset; 彰显当前选取编码
show databases; 呈现全体数据库
show tables; 展现全体数据表
show create table 表名; 显示表的开创语句
desc/describe 表名; 突显表的布局
mysql>set password for root@localhost = password(‘123’);
修改root密码为123

数据库及表的操作

增:

创办数据库:create database mpc [charset
utf8];(设置数据库编码)

创建数据表:create table [if
not exists]
表名(字段1,字段2…[索引1,索引2…,约束1,约束2…])[表选项1,表选项2…];

字段设定情势:
字段名 类型 [字段属性1,字段属性2…]
类型:int ,tinyint, float, double, char, varchar, text, datetime, date,
time, timestamp…
字段属性:
auto_increment:整数自增(一定是主键)
primary
key:设定主键,且是独一的,三个表里面只好设置贰个,不可能为空(null)
unique
key:设定独一索引,一个数据表里面能够安装八个独一索引,那一个字段中能够三个值为空(null)
not null:不能够为空
default:设定默许值
comment ‘字段表明文字’:字段的验证;

create table if not exists createtest(
id int auto_increment primary key,
name varchar(40) not null unique key,
password varchar(40) not null,
age tinyint default 18,
email varchar(40) comment '电子邮件'
);

目录:对数据库内部的某些表全数数量实行事先的某种排序;
常备索引:key(字段名);
独一索引:unique key(字段名);
主键索引: primary key(字段名);
联机主键:primary key(五个字段名用逗号隔绝);
全文索引:fulltext(字段名);
外键索引:foreign key(字段名) references
表名(字段名);(三个表的字段是另贰个表的有个别字段(一定得是主键),假使输入的值不再外面表的字段里,则不可能录入)

create table tab1_key(
id int auto_increment,
name varchar(20) not null,
emai varchar(50) not null,
age int not null default 18,
grades1 int,
primary key(id),
unique key(name),
foreign key(grades1) references tab2_key(grades2)
);
create table tab2_key(
stu_id int not null,
teacher varchar(20) not null,
floor int not null,
grades2 int auto_increment primary key
);

封锁:供给数据满意哪些条件的一种规定
独一约束:unique key(字段名);
主键约束: primary key(字段名);
外键约束:foreign key(字段名) references
表名(字段名);(多个表的字段是另二个表的某部字段(一定得是主键),借使输入的值不再外面表的字段里,则不能够录入)
非空约束:not null;设定贰个字段时不能够为空值
暗许约束:default XX值,设定叁个字段的默认值为xx;
自己讨论约束:check(某种判别语句)

create table tab_check(
age tinyint,
check (age>0 and age<100)
);-- 但是mysql并不能生效,语法能够通过

表选项:创立三个表的时候,对该表的一体化设定:
charset=要选拔的字符编码;
engine=要选用的仓库储存引擎(也叫表类型);(默许是InnoDB)

关全面据库表是用于存储和组织新闻的数据结构,能够将表明白为由行和列组成的报表,类似于Excel的钟表格的款型。有的表简单,有的表复杂,有的表根本不用来囤积任何长时间的多少,有的表读取时一点也不慢,可是插入数据时去比很差;而作者辈在实质上付出进程中,就恐怕必要五颜六色的表,不一样的表,就表示囤积不相同类别的数目,数据的管理上也会存在着差别,那么。对于MySQL来讲,它提供了很各体系型的囤积引擎,我们得以依赖对数码管理的须要,采用分化的仓库储存引擎,从而最大限度的应用MySQL强大的效果。那篇博文将计算和解析各样引擎的特征,以及适用场馆,并不会纠结于更加深层次的事物。小编的读书方法是先学会用,了解怎么用,再去精晓毕竟是怎样能用的。上面就对MySQL支持的囤积引擎举办简要的牵线。

冠亚体育手机网站 1

auto_increment=设定当前表的自拉长字段的启幕值,默许是1
comment=‘该表的有的注脚文字’create table 表2 like 表1;

遵守多少个表的构产生立四个新表:created table 表1 like 表2;

在已部分表结构中插入相似表结构表中的装有数据:insert into 表1 select *
from 表2;

删:

删除数据库:drop database [if exists]
数据库名;(if exists假使不设有不会报错)

删除数据表:drop table [if exists]
表名;(if exists要是不设有不会报错)

改:

添加字段:alter table 表名 add 新字段名 字段类型 [字段属性列表];
修改字段:alter table 表名 change 旧字段名 新字段名 新字段类型 [新字段属性列表];
修改字段(只改属性):alter table 表名 modify 字段名 新字段类型 [新字段属性列表];
修改表名:alter table 表名 rename [to] 新表名;
删除字段:alter table 表名 drop 字段名;
添加普通索引:alter table 表名 add key (字段名1[,字段名2,字段名3…]);
删除普通索引:alter table 表名 drop key 字段名;
添加唯一索引(约束):alter table 表名 add unique key(字段名1[,字段名2,字段名3…]);
添加主键索引(约束):alter table 表名 add primary key(字段名1[,字段名2,字段名3…]);
删除主键索引(约束):alter table 表名 drop primary key;#每一个表最多一个主键
添加外键索引(约束):alter table 表名1 add foreign key (字段名1[,字段名2,字段名3…]) references 表名2 (字段名1[,字段名2,字段名3…]);
删除外键索引(约束):alter table 表名1 drop foreign key 字段名;
添加字段默认值(约束):alter table 表名 alter 字段名 set default 默认值;
删除字段默认值(约束):alter table 表名 alter 字段名 drop default;

数码的操作

增:

形式1、insert [into]
表名[(字段名1,字段名2,…)]
values(值表达式1,值表达式2,…),(…),…;

  最常用的插入语句,能够二次性插入多行数据,用逗号隔绝;其中的值表明式能够是多少个“直接值”或“函数调用结果”;借使对应字段是字符或时刻等级次序,值应该使用单引号;

形式2、replace
[into]表名[(字段名1,字段名2,…)]
values(值表达式1,值表达式2,…),(…),…;

  用法和款式1一律,独一差异是借使插入语句的主键或唯一键同样,则会一贯调换已经存在的数据;

形式3、insert
[into] 表名[(字段名1,字段名2,…)] select 字段名1,字段名2,…from
其余表名;

  将select语句询问的结果数据都插入到钦命的表中,须求当心select语句询问出来的照管字段;

形式4、insert
[into] 表名 set 字段名1=值表明式1,字段名2=值表明式2,…;

款式5、load
data infile ‘文件名(绝对路径)’ into table 表名;

冠亚体育手机网站,  load
data:适用于载入如下图所示的“结构整齐的文书数据”(要注意有的编辑器会给文书档案尾部增添BOM字符来占位,以至于不可见载入)

冠亚体育手机网站 2

删:

delete from 表名 [where 条件] [order by 排序字段] [limit
限定行数];

  删除数据依然是以“行”为单位张开,平常删除数据都应该带上where条件不然就能够删除全数数据(非常危急),order
by 和limit 是为着筛选一些特定的数额,在实际上利用中用得相当少;

改:

update 表名 set 字段1=值1,字段2=值2,…[where 条件] [order by
排序字段] [limit 限定行数];

  日常update语句也都带上where条件,不然就是对具备数据开展改变(极其危险),order
by 和limit 是为着筛选一些一定的数量,在实际应用中用得少之又少;

查:

select [all | distinct] 字段或表达式列表
[from子句] [where 子句]
[group by 子句] [having 子句] [order by 子句] [limit
子句]

字段:来源于表,表明式:类似于8+3,now()等

冠亚体育手机网站 3 冠亚体育手机网站 4

all默许值:展现全部数据;
distinct:展现全体非重复的数额;
as:另起外号。select id as 序号 from tab1;

where
类似于任何语言的if条件决断语句,有true 和false 表示永真和永假

   where子句是对from子句中的“数据源”中的数据开展筛选的原则设定,筛选的体制是“一行一行”实行判断,其作用和别的语言的
if
语句相似;where子句经常都急需采取各类运算符:算术运算符(+,-,*,/,%),比较运算符(>,<,>=,<=,[=,<>]国际标准的极度和不对等,==,!=),逻辑运算符(and,or,not),别的运算符(is,in,beween
and,like);

  is运算符是对空值和布尔值的剖断,常见4种采纳处境:xx
is null(判定有个别字段是“null”值),xx is not
null(剖断有个别字段不是“null”值),xx is true(判定有些字段为“真”),xx
is false(推断某些字段为“假”[false,0,0.0,”,null])

  in运算符用于表示字段属于有些值中的三个,而那几个值平日是心碎而无规律的,xx
In (值1,值2,值3…);

  between
and运算符用于判定某些字段的数据值是不是在某些给定的范围,xx between
值1 and 值2;也就是xx>=值1 and xx<=值2;

  like运算符用于对字符串进行模糊查找,xx
like ‘特征值’;
特征值有2个奇特的标识,%(百分号)表示其他个数的自由字符,_(下划线)表示一个放肆字符;假如特征值中包括六个特殊符号则用转义字符(\%和\_),‘%x%’钦赐字段饱含x的数量行,’x%’钦点字段以x初始的数目行,‘%x’内定字段以x结尾的数码行,‘x_’钦定字段以x开端并独有八个字符的多寡行,‘_x’内定字段以x结尾并独有七个字符的数目行,‘%\%%’钦定字段中富含%的数据行

select * from test where id>2 and sex!='man'; id大于2且sex不等于man;
select * from test where id>2 or sex='man'; id大于2或者sex等于man;
select * from test where not(sex='man'); sex不等于man;

 

group
by子句是用于对已经查询出的数量开展分组

  group by 字段1[desc|asc],字段2[desc|asc],…;
分组的结果能够钦命排序格局暗许是asc(正序),常常分组使用二个字段,2个以上的字段非常少

  分组过后的数额就剩下三个贰个组了,所以尽量不出口全数字段,有的字段不能针对二个组(比方含有姓名,年龄,性别字段的数据表以性别字段分组过后,姓名和年龄字段就从未意思了),所以分组过后相似有用的新闻便是总数[count(*)得出该组共有多少数量],和原本数据中的数据类型字段的汇集音信[max(age)得出最大岁数,min(age)得出最谢节龄,avg(age)得出平均年龄,sum(age)得出全体人年龄的总额](原则是独有被用来分组的字段和聚合字段)。

  select 班级,count(*) as 人数, max(体育成就) as
体育成就最高分,min(体育战表) as 体育战绩最低分,avg(体育成就) as
体育成就平均分,sum(体育成绩) as 全部人体育成绩总和 from test group by
班级;

having
子句的效应和where完全同样,可是是对已有的分组数据开展筛选,所以having子句一定在group
by子句使用后技巧采纳

  select 班级id,count(*) as 人数, max(体育战绩) as
体育成绩最高分,min(体育成就) as 体育成就最低分,avg(体育成绩)
as 体育战表平均分,sum(体育成就) as 全数人体育成就总和 from test group by
班级id having 体育成绩平均分>60;

order by
子句是将眼前早就收获的数额以设定的字段实行排序后输出(desc倒序,asc顺序,暗中同意是asc)

  order by 字段1 [asc|desc], 字段2 [asc|desc], …;
四个字段的排序都以赤手空拳在上贰个排序的根基上万一还应该有“相等值”再持续排序;

  select * from test order by age;

  select * from test order by age, weight;

limit 子句用于将已经赢得的数据抽取内定的几行出来

  limit 初叶行号, 收取的行数;
伊始行号从0初始计时,起先行号能够轻便,省略后暗中认可从第0行开头抽出多上行;

  select * from test where order by age desc limit 0,1;

在select语句的款型上众多的子句都足以轻易,不过借使出现他们的逐个不可能被打乱,where子句信任from子句,having子句注重group
by子句,select
的字段信任于from子句,有依据关系的无法在所信赖的对象在此以前出现也不可能凭空出现;用from语句询问出多少,使用where语句将查询的多少开展按需筛选,使用group
by语句将筛选过的多寡实行分组,使用having子句将分组的数据开展筛选,使用order
by语句将筛选后的数量实行排序,用limite x,y语句将排序后的一定行输出。

  select classid,avg(age) as age from test where sex=’man’ group by
classid order by desc limit 0,1;

接二连三查询:

  表1 [连日情势] join 表2 [on 连接条件] [[连日来方式] join 表3
[on 连接条件]…];

  交叉连接:表1 jion
表2;表示交叉连接(格局有3种);

select * from test1,test2;
select * from test1 join test2;
select * from test1 cross join test2;

冠亚体育手机网站 5 冠亚体育手机网站 6

冠亚体育手机网站 7冠亚体育手机网站 8

  内连接:表1 [inner] join 表2
on 连连条件;
总是条件平时是五个表有共同字段,然后将四个表的联手字段等起来,有一点相像于七个表的外键关系

select * from test1 join test2 on test1.id=test2.id;

冠亚体育手机网站 9

  外接连:左外连接、右外连接和全外连接(full
[outer]
join)mysql不援助全外连接;左右外接连就是将多少个表的内链接结果再加多有些表数据多余(左右表,左表多余叫左连接,右表多余叫右连接)的那部分。
  表1(左表) left [outer] join 表2(右表) on 连接条件;
  表1(左表) right [outer] join 表2(右表) on 连接条件;

冠亚体育手机网站 10  冠亚体育手机网站 11  冠亚体育手机网站 12 冠亚体育手机网站 13

冠亚体育手机网站 14

一路查询(union):将多少个有着同等字段数量的查询语句的结果以“上下聚积”的措施合併成二个查询结果,所以三个select语句的询问结果的字段数必得是同等的,日常也应有让字段类型具备一致性,也得以拓宽越来越多的联合签字:select
语句1 union [all/distinct] select 语句2;默许自动清除重复行,order
by和limit语句是对一齐后的话语举办筛选:select 语句1 union
[all/distinct] select 语句2 order by子句 limit 子句;

select id,d1,d2 from test0 union select id,c1,c2 from test2;

冠亚体育手机网站 15

 有了union,所以能够行使左右外连接然后在联合就可以做到mysql的全外连接了。

any、all、some、exists子查询:

  some和any有一致的情趣,是别的一个的乐趣,当满意自便贰个即能够查询出来,而all则要求满意全数的值才行,何况some、all都以对准列子查询,即只好针对一组值。

select * from test2 where id > any(select id from test1);
select * from test2 where id > all(select id from test1);

冠亚体育手机网站 16 冠亚体育手机网站 17

冠亚体育手机网站 18

冠亚体育手机网站 19

   exists子查询为 where
exists(子查询);该子查询假诺有多少行,则exists的结果是true,不然正是false,所以后往出现任何抽取可能都不抽出而错过了他的实际意义,所以该子查询往往不是独自的子查询,而会和主查询中的数据表建构某种关系(例如总是关系),创建的法子是隐式的在代码上并未反映关系,但却在内部有一连的落到实处(在子查询的where条件语句中使用了主查询的字段)。

select * from test1 where exists(select * form test2 where type like '%x%' and id=test1.id);

代表查询test1中的数据种类包蕴‘x’字样的数据(而数据种类存在test第22中学,而test中并未type字段,八个表可以通过id关联)
假定三个询问须要不仅可以够用三翻五次查询也足以使用子查询,则援引应用连接查询功能越来越高

视图

create view 视图名 as select语句;
  视图也便是其余编程语言中的函数,把select语句询问出来的具备数据封装起来作为二个视图,而在运用视图是当成贰个数据表使用就好,删除视图也和删除数据表相似;

create view viewtest as select id,name,age,email from test where id between 50 and 100;
select * from view test where id>80;
drop view [if exists] viewtest;

数据备份

导出的时候注意是切换成根目录之后
1.导出成套数据库
  mysqldump -u 顾客名 -p 数据库名 > 导出的文本名
  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sq
2.导出三个表
  mysqldump -u 客户名 -p 数据库名 表名> 导出的公文名
  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出叁个数据库结构
  mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc
>d:wcnc_db.sql
注:  -d 不多 –add-drop-table 在各种create语句以前扩充二个drop
table
4.导入数据库
  mysql –h 服务器名 –u登陆名 –p 数据库名<文件名
5.导入数据表
  常用source 命令
  步向MySQL数据库调整台,
mysql -u root -p
mysql>use 数据库
  然后选用source命令,后边参数为脚本文件(如这里运用的.sql)
mysql>source d:wcnc_db.sql

冠亚体育手机网站 20

冠亚体育手机网站 21

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注