认知mysql第三篇,发出的原委切合初读书人,借使财富源关切自个儿的博客,能够完备的调控mysql的常用知识,后续笔者也会断断续续发出python相关的知识,关怀笔者,和本人合计升高吧!

—恢复生机内容初叶—

昨日是MySQL的第四篇,难度会有一点点加大,加油!

1、表字段的操作
1、语法 :alter table 表名 实施动作;
2、增添字段(add卡塔尔(قطر‎
alter table 表名 add 字段名 数据类型;
alter table 表名 add 字段名 数据类型 first;
alter table 表名 add 字段名 数据类型 after 字段名;
3、删除字段(drop卡塔尔国
alter table 表名 drop 字段名;
4、改善数据类型(modify卡塔尔
alter table 表名 modify 字段名 新数据类型;
5、表重命名(rename卡塔尔
alter table 表名 rename 新表名;
6、练习
1、创建库 studb2
2、在库中开创表 t1 ,字段有3个:name、age、phnumber
use studb2;
create table t1(
name char(20),
age tinyint unsigned,
phnumber char(11)
);
3、查看表构造
desc t1;
4、在表中首先列增多二个 id 字段
alter table t1 add id int first;
5、把 phnumber 的数据类型改为 bigint
alter table t1 modify phnumber bigint;
6、在表中最后一列增加四个字段 address
alter table t1 add address varchar(50);
7、删除表中的 age 字段
alter table t1 drop age;
8、查看表构造
desc t1;
2、数据类型
1、数值类型
2、字符类型
1、字符类型宽度和数值类型宽度的差别
1、数值类型宽度为展现上升的幅度,只用于select查询呈现,和占用存款和储蓄非亲非故,可用zerofill查看效果
2、字符类型的拉长率超过之后则无从积累
3、枚举类型
1、单选(enum) :字段名 enum(值1,值2,…)
2、多选(set) :字段名 set(值1,值2,…)
## 插入记录时: “F,study,Python”
create table t5(
id int(3) zerofill,
name varchar(15),
sex enum(“M”,”F”,”Secret”),
likes set(“F”,”M”,”study”,”Python”)
);
insert into t5(likes) values(“F,study,Python”);
4、日期时间档期的顺序
1、date :”YYYY-MM-DD”
2、time :”HH:MM:SS”
3、datetime :”YYYY-MM-DD HH:MM:SS”
4、timestamp :”YYYY-MM-DD HH:MM:SS”
5、注意
1、datetime :不给值暗中认可重临NULL值
2、timestamp :不给值暗许重临系统当下岁月
create table t7(
id int,
name varchar(15),
birthday date,
money int,
shijian datetime
);
insert into t7 values(2,”王”,date(now()),10000,now());
3、日期时间函数
1、now(卡塔尔(قطر‎ 重回服务器当前光阴
2、curdate(卡塔尔(英语:State of Qatar) 再次来到当前些天期
3、curtime(卡塔尔(英语:State of Qatar) 重回当前几天子
4、year(date卡塔尔 再次回到内定时期的年度
5、date(date卡塔尔(英语:State of Qatar) 重回指准时间的日期
6、time(date卡塔尔 再次回到指按期间的时刻
7、练习
1、在表中插入3条记下
insert into t7 values
(3,”小昭”,19000520,3000,20180630000000),
(4,”赵敏”,19000521,4000,20180702000000),
(5,”周芷若”,19010522,3500,20180702100000);
2、查找二零一八年一月2日有啥样客户充钱了
select * from t7 where date(shijian)=”2018-07-02″;

实在,这生龙活虎种说法是不完全准确的。首先第一点,mysql的query_cache的键值实际不是总结的query,而是query加databasename加flag。那一个从源码中就可以见到。在那地不做首要描述,后续能够针对于那一点再具体深入分析。重要的是第二点,是或不是加了空格,mysql就觉着是例外的查询呢?实际上那么些是要分情状来讲的,要看这些空格加在哪。
假诺空格是加在query以前,举个例子是在query的开场处加了空格,这样是毫发不影响query
cache的结果的,mysql认为那是一条query,
而如若空格是在query中,那会耳熏目染query
cache的结果,mysql会感到是例外的query。

1、SQL查询
  1、实行各种
    3、select …聚合函数 from 表名
      1、where …
      2、group by …
      4、having …
      5、order by …
      6、limit …
  2、group by
    1、作用 :给查询结果实行分组
    2、示例
      1、查询表中一齐有多少个国家

1、MySQL概述

开始吧!

3、查找二〇一八年五月份充钱的音信
select * from t7
where
date(shijian)>=”2018-07-01″ and date(shijian)<=”2018-07-31″;

上面大家通过试验及源码具体深入分析。首先,大家先试验须臾间:

      2、总结每一种国家的平分攻击力
      select country,avg(gongji) from sanguo
      group by country;
    3、查找全体国家中奋勇数量最多的前2名的 国家名称和飒爽数量
      select country,count(id) as number from sanguo
      group by country
      order by number desc
      limit 2;
3、注意
  1、group by之后的字段名必定要为select之后的字段名
  2、即使select之后的字段名和group
by之后的字段不均等,则必需对该字段实行联谊管理(聚合函数卡塔尔(قطر‎
  3、having语句
1、作用
对查询的结果开展更为筛选
2、示例
  1、搜索平均攻击力>105的国家的前2名,显示国家名和平均攻击力
  select country,avg(gongji) as pjgj from sanguo
  group by country
  having pjgj>105
  order by pjgj DESC
  limit 2;
3、注意
  1、having语句日常和group by语句联合使用,过滤由group
by语句重返的记录集
  2、where只好操作表中实际上存在字段,having可操作由聚合函数生成的展示列
4、distinct
  1、成效 :不出示字段重复值
  2、示例
1、表中都有怎么样国家
  select distinct country from sanguo;
2、总结元朝蓬蓬勃勃共有个别许个大胆
  select count(distinct id) from sanguo
  where country=”蜀国”;
3、注意
  1、distinct和from之间有着字段都平等才会去重
  2、distinct不能够对此外字段做聚合管理
5、查询表记录时做数学生运动算
1、运算符
  + – * / %
2、示例
1、查询时全体大胆攻击力翻倍
select id,name,gongji*2 as gj from sanguo;

  1.哪些是数据库?

1、外键(foreign  key)

4、查找四月十日10:00-12:00充钱的消息
select * from t7
where
date(shijian)=”2018-07-31″ and
time(shijian)>=”10:00:00″ and
time(shijian)<=”12:00:00″;
4、日期时间运算
1、语法格式
select * from 表名
where 字段名 运算符 (时间-interval 时间间距单位卡塔尔国;
岁月间隔单位:
1 day | 2 hour | 1 minute | 2 year | 3 month
2、练习
1、查询1天以内的记录
select * from t7
where shijian > (now()-interval 1 day);
age > 20
2、查询1年早先的笔录
select * from t7
where shijian < (now()-interval 1 year);
3、查询1天以前,3天之内的笔录
select * from t7
where
shijian < (now()-interval 1 day) and
shijian > (now()-interval 3 day);
5、表记录处理
1、删除表记录
1、delete from 表名 where 条件;
2、注意
delete语句后假诺不加where条件,全部记录整个清空
2、更新表记录
1、update 表名 set 字段1=值1,字段2=值2,… where 条件;
2、注意
必须加where条件
3、练习(表hero)
1、查找全部汉朝人的新闻
select * from hero where country=”蜀国”;
2、查找全体娥皇豪的全名、性别和国家
select name,sex,country from hero
where sex=”女”;
3、把id为2的记录改为典韦,性别男,国家燕国
update hero set name=”典韦”,sex=”男”,country=”魏国” where id=2;
4、删除全体隋代大侠
delete from hero where country=”蜀国”;
5、把任红昌的国籍改为燕国
update hero set country=”魏国”
where name=”貂蝉”;
6、删除全数表记录
delete from hero;
4、运算符操作
1、数值比较/字符比较
1、数值相比较 := != > >= < <=
2、字符比较 := !=
3、练习
1、查找攻击力高于150的奋不管不顾身的名字和攻击值
select name,gongji from sanguo where gongji>150;
2、将常胜将军的攻击力设置为360,防卫力设置为68
update sanguo set gongji=360,fangyu=68
where name=”赵云”;
2、逻辑相比较
1、and (多少个或多个尺码还要建设构造卡塔尔(قطر‎
2、or (大肆一个原则建马上可卡塔尔(英语:State of Qatar)
3、练习
1、找寻攻击值高于200的曹魏硬汉的名字、攻击力
select name as n,gongji as g from sanguo
where gongji>200 and country=”蜀国”;
2、将北魏铁汉中攻击值为110的自己要作为范例据守规则的攻击值改为100,堤防力改为60
update sanguo set gongji=100,fangyu=60
where country=”吴国” and gongji=110;
3、查找西楚和宋国的威猛新闻
select * from sanguo
where country=”蜀国” or country=”魏国”;
3、范围内相比较
1、between 值1 and 值2
2、where 字段名 in(值1,值2,…)
3、where 字段名 not in(值1,值2,…)
4、练习
1、查找攻击值100-200的南梁大侠新闻
select * from sanguo
where gongji between 100 and 200 and
country=”蜀国”;
2、找到东汉和东汉以外的国家的女铁汉音讯
select * from sanguo
where country not in(“蜀国”,”吴国”)
and sex=”女”;
3、找到id为1、3或5的西楚英豪 和 任红昌的消息
select * from sanguo
where
(id in(1,3,5) and country=”蜀国”) or name=”貂蝉”;
4、匹配空、非空
1、空 :where name is null
2、非空:where name is not null
3、示例
1、姓名字为NULL值的东晋女壮士新闻
select * from sanguo
where
name is null and country=”蜀国” and sex=”女”;
2、姓名字为 “” 的威猛新闻
select * from sanguo where name=””;
4、注意
1、NULL :空值,只能用 is 或者 is not 去匹配
2、”” :空字符串,用 = 或许 != 去匹配
5、模糊比较
1、where 字段名 like 表达式
2、表达式
1、_ : 相配单个字符
2、% : 匹配0到八个字符
3、示例
select name from sanguo where name like “_%_”;
select name from sanguo where name like “%”;
## NULL不会被总结,只好用is、is not去相称
select name from sanguo where name like “___”;
select name from sanguo where name like “赵%”;
5、SQL查询
1、总结
3、select …聚合函数 from 表名
1、where …
2、group by …
4、having …
5、order by …
6、limit …;
2、order by
1、给查询结果开展排序
2、… order by 字段名 ASC/DESC
3、升序:ASC(默认)
降序:DESC
4、示例
1、将最先受到攻击按堤防值从高到低排序

先是,我们看一下mysql query_cache的状态:

## sudo apt-get install python3-pip
## sudo pip3 install pymysql
2、约束
  1、作用 :保障数据的完整性、生龙活虎致性、有效性
2、约束分类
  1、暗中认可限定(default卡塔尔(英语:State of Qatar)
  1、插入记录,不给该字段赋值,则应用暗许值
2、非空节制(not NULL卡塔尔国
  1、不容许该字段的值有NULL记录
  sex enum(“M”,”F”,”S”) not null defalut “S”

  存款和储蓄数据的客栈

  1.定义:让前段时间表字段的值在另多个表的界定内选拔

2、将清代大侠按攻击值从高到低排序

图片 1

3、索引
  1、定义
  对数码库表的一列或多列的值进行排序的少年老成种结构(Btree情势卡塔尔(قطر‎
  2、优点
  加速数据检索速度
3、缺点
  1、占用物理存款和储蓄空间
  2、当对表中数量更新时,索引需求动态维护,裁减数据敬性格很顽强在艰难险阻或巨大压力面前不屈速度
4、索引示例
  1、开启运营时刻检查测试 :set profiling=1;
  2、实施查询语句
  select name from t1 where name=”lucy99999″;
3、查看实施时间
  show profiles;
4、在name字段创制索引
  create index name on t1(name);
5、再实行查询语句
  select name from t1 where name=”lucy88888″;
6、查看实施时间
  show profiles;
5、索引
1、普通索引(index卡塔尔(قطر‎
1、使用准绳
1、可安装八个字段
2、字段值无束缚
3、key标志 :MUL
2、创建index
1、成立表时
  create table 表名(…
  index(字段名),index(字段名));
2、已有表
  create index 索引名 on 表名(字段名);
  create index name on t3(name);
3、查看索引
  1、desc 表名; –> KEY标志为:MUL
  2、show index from 表名\G;
  4、删除索引
  drop index 索引名 on 表名;
2、独一索引(unique卡塔尔国
  1、使用法规
    1、可安装几个字段
    2、约束 :字段值不容许再度,但可为 NULL
    3、KEY标志 :UNI
    2、创建
    1、创建表时开创
    unique(字段名),
    unique(字段名)
2、已有表
  create unique index 索引名 on 表名(字段名);
3、查看、删除 同普通索引
3、主键索引(primary key卡塔尔
自增加属性(auto_increment,合营主键一同使用卡塔尔
1、使用准绳
1、只可以有一个主键字段
2、限定 :不许再一次,且无法为NULL
3、KEY标志 :PRI
4、平常设置记录编号字段id,能唯风姿洒脱锁定一条记下
2、创建
1、成立表时
  (id int primary key auto_increment,
  )auto_increment=10000;##安装自拉长开始值
本来就有表增添自增加属性:
  alter table 表名 modify id int auto_increment;
本来就有表重新钦定开头值:
  alter table 表名 auto_increment=20000;
2、已有表
  alter table 表名 add primary key(id);
3、删除
1、删除自拉长属性(modify卡塔尔(英语:State of Qatar)
  alter table 表名 modify id int;
2、删除主键索引
  alter table 表名 drop primary key;
4、外键索引
4、数据导入
1、作用 :把文件系统的从头到尾的经过导入到数据库中
2、语法
load data infile “/var/lib/mysql-files/文件名”
into table 表名
fields terminated by “分隔符”
lines terminated by “\n”;
3、将scoretable.csv文件导入到数据库的表中
1、在数据库中开创对应的表
create table scoretab(
id int,
name varchar(15),
score float(5,2),
number bigint,
class char(7)
);
2、把文件拷贝到数据库的默许搜索路线中
1、查看私下认可寻找路线
  show variables like “secure_file_priv”;
  /var/lib/mysql-files/
2、拷贝文件
  sudo cp ~/scoretable.csv /var/lib/mysql-files/
3、实施多少导入语句
load data infile “/var/lib/mysql-files/scoretable.csv”
into table scoretab
fields terminated by “,”
lines terminated by “\n”;
4、文件权限
rwxrw-rw- 1 tarena tarena scoretable.csv
所有者 所属组
rwx : tarena用户
rw- : 同组别的客户
rw- : 其余组的别的顾客(mysql顾客卡塔尔(英语:State of Qatar)

  2.都有怎么着集团在用数据库?

  2.语法:

3、将魏蜀两个国家英豪中名称为多少个字的按防御值升序排列
select * from sanguo
where
country in(“蜀国”,”魏国”) and name like “___”
order by fangyu ASC;

先是,大家能够确认,mysql的query_cache效用是开采的。

r -> 4
w -> 2
x -> 1
chmod 644 文件名 rw-r–r–
5、Excel表格如何转变为CSV文件
1、张开Excel文件 -> 另存为 -> CSV(逗号分隔卡塔尔(英语:State of Qatar)
6、改过文件编码格式
1、用记事本/编辑器 张开,文件->另存为->接纳编码
5、数据导出
1、作用
将数据库中表的记录导出到系统文件里
2、语法格式
select … from 表名
into outfile “/var/lib/mysql-files/文件名”
fields terminated by “分隔符”
lines terminated by “\n”;
3、把MOSHOU库下的sanguo表英雄的人名、攻击值、国家导出来,sanguo.txt
select name,gongji,country from MOSHOU.sanguo
into outfile “/var/lib/mysql-files/sanguo.txt”
fields terminated by ” “
lines terminated by “\n”;
$ sudo -i
$ cd /var/lib/mysql-files/
$ ls
$ cat sanguo.txt
4、将mysql库下的user表中 user、host三个字段的值导出到 user.txt
select user,host from mysql.user
into outfile “/var/lib/mysql-files/user.txt”
fields terminated by ” “
lines terminated by “\n”;

  金融机构、游戏公司、购物网址、论坛网址…

    foreign key(仿照效法字段名卡塔尔(英语:State of Qatar)

select * from sanguo
where
(country=”魏国” or country=”蜀国”) and name like “___”
order by fangyu;
3、limit (恒久放在SQL语句的终极写卡塔尔(英语:State of Qatar)
1、效能 :限定展现查询记录的个数
2、用法
1、limit n -> 显示 n 条记录
2、limit m,n
m 代表 从第m+1条记下起始体现,显示 n 条
limit 2,3 : 第 3、4、5 三条记下
3、示例
1、在梁国好木棉花,查找防止值尾数第二名至尾数第四名的勇猛的记录
select * from sanguo
where country=”蜀国”
order by fangyu asc
limit 1,3;
2、在南宋英勇中,查找攻击值前3名且名字不为 NULL
的强悍的姓名、攻击值和国家
select name,gongji,country from sanguo
where
country=”蜀国” and name is not NULL
order by gongji DESC
limit 3;
4、分页
每页展现5条记下,呈现第4页的内容

附带,大家看一下场地:

本节完!

  3.提供数据库服务的软件?

    references 主表(被参照他事他说加以调查字段名卡塔尔

第1页 :limit 0,5 # 1 2 3 4 5
第2页 :limit (2-1)*5,5 # 6 7 8 9 10
第3页 :limit (3-1)*5,5 # 11 12 13 14 15
第4页 :limit (4-1)*5,5 # 16 17 18 19 20

图片 2

    1.软件分类

    on   delete  级联动作

每页展现n条记录,显示第m页 :limit (m-1卡塔尔*n,n
4、聚合函数
1、分类
avg(字段名卡塔尔国 : 求该字段平均值
sum(字段名) : 求和
max(字段名) : 最大值
min(字段名) : 最小值
count(字段名卡塔尔国 : 总计该字段记录的个数
2、示例
1、攻击力最强值是不怎么
select max(gongji) from MOSHOU.sanguo;
2、总括id 、name 五个字段分别有几条记下
select count(id),count(name) from sanguo;
## 空值 NULL 不会被总计,””会被计算

因为这一个db是新的db,所以hits,inset都为0,以往我们推行一条select语句:

      MySQL、Oracle、SQL_Server、DB2、MongoDB、MariaDB

    on   update  级联合浮动作 

3、总括北齐英豪的总攻击力
select sum(gongji) from MOSHOU.sanguo
where country=”蜀国”;
4、总结汉代铁吴忠攻击值大于200的英武的数目
select count(*) from MOSHOU.sanguo
where gongji>200 and country=”蜀国”;

事态产生:

    2.临盆情形中,怎么着选拔使用哪个数据库软件?

  以上的语法连在一齐看

 

图片 3

      开源:MYSql,Mariadb,MongoDB

  3.使用法规

能够看到,奉行一条select后,今后的qcache状态为,insert+1,这样我们就能够测算出,今后刚刚那条select语句已经参加了qcache中。那大家未来再将刚刚那条sql前面加上空格,看看会怎么样呢?

      不开源:Oracle,DB2,SQL_Server

    主表、从表字段数据类型要长久以来

图片 4

    3.供销合作社的项目:

    主表被参谋字段:主键

请小心,这条sql,比刚刚那条sql前边多了叁个空格。

      1.生意数据库:政坛部门,金融机构

  4.示例

中规中矩网络的理论,那条sql应该会作为另多个键而插入另一个cache,不会复用先前的cache,但结果吧?

      2.开源数据库:游戏网址、购物网址、论坛网址…..

    表1、缴费新闻表(财务卡塔尔(قطر‎

图片 5

  4、MySQL的特点

      id  姓名  班级  缴费金额

咱俩得以看见,hits变为了1,而inserts根本没变,那就证实了,那条在头里加了空格的query命中了从未空格的query的结果集。从那,大家就足以得出结论,网络先前流传的说教,是不谨严的。

  1.关系型数据库

      1  唐伯虎  AD06  300

那究竟是怎么回事呢?到底应该怎么样呢?为何前边有空格的会命中了未曾空格的query的结果集。其实,那几个大家得以经过源码获得答案。

    1.关系型数据库特点

      2  点秋香  AD06  200

翻看下mysql的源码,笔者那翻看的是5.1的,在send_result_to_client(那一个函数既是mysql调用query_cache的函数)这一个函数里面有那般生机勃勃段,这段代码,、

      1.数据是以行和列(表格卡塔尔的款式去存款和储蓄

      3  祝枝山  AD06  100

复制代码 代码如下:

      2.表中的每风姿罗曼蒂克行叫一条记下,每一列叫一个字段

    表2、学生新闻表(班主管卡塔尔(قطر‎

/*
Test if the query is a SELECT
(pre-space is removed in dispatch_command).

      3.表和表之间的达尔优关联叫关系

      id 姓名 缴费金额

First ‘/’ looks like comment before command it is not
frequently appeared in real life, consequently we can
check all such queries, too.
*/
if ((my_toupper(system_charset_info, sql[i]) != ‘S’ ||
my_toupper(system_charset_info, sql[i + 1]) != ‘E’ ||
my_toupper(system_charset_info, sql[i + 2]) != ‘L’) &&
sql[i] != ‘/’)
{
DBUG_PRINT(“qcache”, (“The statement is not a SELECT; Not cached”));
goto err;
}

    2.示例

      1 唐伯虎 300

是在验证语句是还是不是为select语句,重视是地方这段注释。极度是括弧中的,pre-space
is removed in
dispatch_command,相当于说,在言语开首早前的多余的空格已经被拍卖过了,在dispache_command那一个函数中去掉了。

      1.关系型数据仓库储存款和储蓄

      2 点秋香 260

大家看下dispache_command这几个办法,在这里个点子里有这般大器晚成段:

        表1  学子信息表

*      3   xxx    xxx*

复制代码 代码如下:

        姓名  年龄  班级

*      ………………..
*

if (alloc_query(thd, packet, packet_length))
break; // fatal error is set
char *packet_end= thd->query() + thd->query_length();
/* ‘b’ stands for ‘buffer’ parameter’, special for ‘my_snprintf’ */
const char* end_of_stmt= NULL;

        星矢  25     三班

*    创建表*

在这里,会调用alloc_query方法,大家看下那几个办法的源委:

        水冰月 29    六班

*    表1(主表)*

复制代码 代码如下:

        表2  班级音讯表

      create table jftab(
      id int primary key,
      name varchar(15),
      class char(5),
      money int
      );

bool alloc_query(THD *thd, const char *packet, uint packet_length)
{
char *query;
/* Remove garbage at start and end of query */
while (packet_length > 0 && my_isspace(thd->charset(),
packet[0]))
{
packet++;
packet_length–;
}
const char *pos= packet + packet_length; // Point at end null
while (packet_length > 0 &&
(pos[-1] == ‘;’ || my_isspace(thd->charset() ,pos[-1])))
{
pos–;
packet_length–;
}
/* We must allocate some extra memory for query cache
The query buffer layout is:
buffer :==
<statement> The input statement(s)
‘\0’ Terminating null char (1 byte)
<length> Length of following current database name (size_t)
<db_name> Name of current database
<flags> Flags struct
*/
if (! (query= (char*) thd->memdup_w_gap(packet,
packet_length,
1 + sizeof(size_t) + thd->db_length +
QUERY_CACHE_FLAGS_SIZE)))
return TRUE;
query[packet_length]= ‘\0’;
/*
Space to hold the name of the current database is allocated. We
also store this length, in case current database is changed during
execution. We might need to reallocate the ‘query’ buffer
*/
char *len_pos = (query + packet_length + 1);
memcpy(len_pos, (char *) &thd->db_length, sizeof(size_t));
thd->set_query(query, packet_length);
/* Reclaim some memory */
thd->packet.shrink(thd->variables.net_buffer_length);
thd->convert_buffer.shrink(thd->variables.net_buffer_length);
return FALSE;
}

        班级  班主任  

    插入数据

本条点子在大器晚成初阶就能对query进行拍卖(代码第4行),将起来和结尾的garbage
remove掉。
看看这里,大家着力已经明知道,mysql会对输入的query进行预管理,将空格等东西给处理掉,所以不会起来的空格不会潜濡默化到query_cache,因为对mysql来说,就是一条query。

        三班  大空翼

      insert into jftab values
      (1,”唐伯虎”,”AD06″,300),
      (2,”点秋香”,”AD06″,260),
      (3,”祝枝山”,”AD06″,250);

        六班  松人

    表2(从表)     

      2.非关系型数据库中存放

      create table bjtab(
      stu_id int,
      name varchar(15),
      money int,
      foreign key(stu_id) references jftab(id)
      on delete cascade
      on update cascade
      );

        {“姓名”:”水冰月”,”年龄”:”25″}

    插入数据

    2、跨平台

      insert into bjtab values

      能够在Unix,Linux,Windows上运维数据库服务;

      (1,”唐伯虎”,300),(2,”点秋香”,260);

    3、扶植多样编制程序语言

*  5、删除此之外键*

      python,java,php,c/c++….

*    alter  table  表名  drop  frreign  key  外键名;*

  5、数据库软件。数据库、数据酒店的概念

*    查看外键:show  create  table  表名;*

  1.数据库软件

*  6、级联合浮动作*

    二个软件,看得见,可操作,达成数据库的逻辑作用

*    cascade*

  2、数据库

*    数据级联删除、更新(参照他事他说加以考查字段卡塔尔*

    是生机勃勃种逻辑概念,用来存放数据的库房,侧重存款和储蓄

*    restrict(默认)*

  3、数据宾馆

*    从表有相关联记录,差别意主表操作*

    从数据量上来讲,比数据库宏大的多,主要用于数据解析和数据开掘

*    set  null*

2、MySQL安装

*    主表删除、更新,从表相关联记录字段值为NULL*

  1.Ubuntu安装

*  7、本来就有表增加外键
*

    安装服务端

*  alter  table  表名  add  for  foreeign  key(参照他事他说加以考察字段卡塔尔(قطر‎  references 
主表(被参照他事他说加以考察字段卡塔尔
*

      sudo apt-get install mysql-server

*  on delete …*

    安装顾客端

*  on  update …*

      sudo apt-get install mysql-client

2、表的复制

    Ubuntu安装软件   

*  1.复制MOSHOU.sanguo的全部笔录和字段到sanguo2*

      1、sudo apt-get update

*  create table sanguo2 select * from MOSHOU.sanguo;
*

      访谈源列表中的各样网址,读取软件列表,保存到地点/var/lib/apt/lists

*  2.复制MOSHOU.sanguo表的前3条记录,sanguo3*

      2、sudo apt-get upgrade

*  create table sanguo3
*

      把地点已设置软件与刚下载的软件列表举行对照,假诺开掘已安装版本低则更新

*  select * from MOSHOU.sanguo limit 3;*

      3、sudo apt-get -f install

*  3.复制MOSHOU.sanguo表的id,name,country多少个字段的前5条记下,sanguo4*

      修复信任关系

*  create table sanguo4*

3、运行和链接MySQL服务

*  select id,name,country from MOSHOU.sanguo limit 5;*

  1.服务端运营

*   复制表构造*

    1.查看MySQL状态

   create table 表名 select * from 表名 where false;

      sudo /etc/init.d/mysql status

  注意:

  2、客商端连接

   复制表的时候不会把原表的键(key卡塔尔(قطر‎属性复制过来

    1命令格式

3、嵌套查询

      mysql -h主机地址 -u客商名 -p密码

  定义 :把内层的查询结果作为外层的询问条件

      如:mysql -hlocalhost -uroot -p123456

  语法格式

    2.本地连接可省略 -h选项

  select … from 表名 where 条件(select ….);

      mysql -uroot -p123456

  示例

4、基本SQL命令

    把攻击值小于平均攻击值的英勇名字和攻击值展现出来   

  1.SQL发令的运用法规

       1、先计算平均值

    1.每条命令的利用准绳

       select avg(gongji) from MOSHOU.sanguo;

      1.每条命令必得以;结尾

       2、找到 < 平均值

      2.SQL命令不区分字母大小写

      select name,gongji from MOSHOU.sanguo

      3.使用\c来终止当前下令的奉行

      where gongji<平均值;

  2.库的田间管理

     子查询:

    1.库的基本操作

      select name,gongji from MOSHOU.sanguo

      1.查看原来就有库

      where

      show databases;

       gongji<(select avg(gongji) from  MOSHOU.sanguo);

      2.创设库(钦命字符集卡塔尔(英语:State of Qatar)

   2、搜索每一种国家攻击力最高的奋勇的名字和攻击值

      create database 库名 [character set utf8];

     select name,gongji from sanguo where 

      3.查看成立库的讲话(字符集卡塔尔(英语:State of Qatar)

     gongji in(select max(gongji) from sanguo  group by country);

      show create database 库名
      4.翻看当前所在库

 4、多表查询

      select database 库名;

  select 字段名列表 from 表名列表; (笛Carl积卡塔尔(قطر‎

      5.切换库

   1、彰显省和市的详细音讯

      use 库名;

  青海省 威海市
  河北省 廊坊市
  湖北省 武汉市

      6.查看库中原来就有库

*  *select sheng.s_name,city.c_name from sheng,city

      show tables;

  where
  sheng.s_id=city.cfather_id;

      7.删除库

   2、彰显省市县详细音讯

       drop database 库名;

  select sheng.s_name as sheng,city.c_name as city,xian.x_name as
xian from sheng,city,xian
  where
  sheng.s_id=city.cfather_id and
  city.c_id=xian.xfather_id;

    2、库名的命名准绳

5、连接查询 

      1.数字、字母、下划线。但无法运用纯数字

  内连接 

      2.库名区分字母大小写

*  1.语法格式*

      3.不可能接受特殊字符和mysql关键字

    select 字段名 from
    表1 inner join 表2 on 条件
    inner join 表3 on 条件;

    3、练习

  2、展现省市详细音信

      1、创造库testdb,内定字符集为 utf8

    select sheng.s_name,city.c_name from sheng
    inner join city on sheng.s_id=city.cfather_id;

      create database testdb character set utf8;
      2、步入到库 testdb
      use testdb;
      3、查看当前所在库
      select database();
      4、创造库 testdb2,钦定字符集为 latin1
      create database testdb2 character set latin1;
      5、踏入到库 testdb2
      use testdb2;
      6、查看 testdb2 的字符集(查看创立库的言语卡塔尔(英语:State of Qatar)
      show create database testdb2;
      7、删除库 testdb
      drop database testdb;
      8、删除库 testdb2
      drop database testdb2;

  3、展现省市县详细音信  

  3、表的田间管理

    select sheng.s_name,city.c_name,xian.x_name from
    sheng inner join city
    on sheng.s_id=city.cfather_id
    inner join xian
    on city.c_id=xian.xfather_id;

    1.表的基本操作

  2、外连接

      1.创制表(钦点字符集卡塔尔(قطر‎

    以 左表 为主展现查询结果

      create table 表名(

    select 字段名 from 表1 left join 表2 on 条件

      字段名 数据类型,

    left join 表3 on 条件;

      字段名 数据类型,

    展现省市详细消息

      …

    select sheng.s_name,city.c_name from sheng

      );

     left join city

    2、查看本来就有表的字符集
    show create table 表名;
    3、查看表构造
    desc 表名;
    4、删除表
    drop table 表名;

    on sheng.s_id=city.cfather_id;

5、Mac安装mysql
  1、cd
  2、vi .bash_profile
  添加 :PATH=”$PATH”:/usr/local/mysql/bin
  3、source .bash_profile

     右连接

6、表记录管理

    用法同左连接,以右表为主呈现查询结果

  插入(insert)

 6、数据备份(mysqldump,在Linux终端中操作卡塔尔(قطر‎

    1、insert into 表名 values(值1),(值2),…;

  命令格式

    2、insert into 表名(字段1,…) values(值1),…; 

    mysqldump  -u用户名  -p  源库名  > ~>***.sql

  2、查询(select)
    1、select * from 表名 [where 条件];
    2、select 字段1,字段名2 from 表名 [where 条件];

  源库名的意味方法

5、如何修正私下认可字符集

  –all-databases  备份全部库

  1、方法(通过转移MySQL配置文件落到实处卡塔尔(قطر‎

  -B 库1 库2 库3   备份多少个库

*  2、步骤
    1、获取root权限
      sudo -i
    2、cd /etc/mysql/mysql.conf.d/
    3、备份 :cp mysqld.cnf mysqld.cnf.bak
    4、subl mysqld.cnf
    [mysqld]*

  库名 表1 表2 表3 备份钦命库的多张表

*    character_set_server = utf8
    5、重启mysql服务
    /etc/init.d/mysql restart*

  示例:

    MAC:/etc/my.cnf

    备份全体库,放到 mydata 目录下:all.sql

    [mysqld]
    character_set_server = utf8

    mysqldump -uroot -p –all-databases > all.sql

 6、顾客端把多少存款和储蓄到数据库服务器上的进程

    备份 db4 库中的 sheng city xian 三张表,scx.sql

*  1、连选取数据服务器 mysql -uroot -p123456
  2、选拔一个库 use 库名
  3、创建表/修改表 update 表名…
  4、断开与数据库连接 exit; | quit; | \q;*

     mysqldump -uroot -p db4 sheng city xian > scx.sql

7、数据类型
  1、数值类型
    1、整型
      1、int 大整型(4个字节)
      取值范围 :2**32 – 1(42亿多)
      2、tinyint 细小整型(1个字节卡塔尔国
      1、有符号(signed默认) : -128 ~ 127
      2、无符号(unsigned) : 0 ~ 255
      age tinyint unsigned,
      3、smallint 小整型(2个字节)
      4、bigint 十分大整型(8个字节卡塔尔

     备份 MOSHOU 和 db4 库, md.sql

     2、浮点型

     mysqldump -uroot -p -B MOSHOU db4 > md.sql

      1、用法

     备份 db4 库, db4.sql

        字段名 float(m,n卡塔尔(قطر‎  m->总位数 n->小数位位数

     mysqldump -uroot -p db4 > db4.sql

        float(5,2卡塔尔(英语:State of Qatar)取值范围? -999.99 ~ 999.99

7、数据复苏

       2、decimal(最多显示26个有效位卡塔尔国

  1、命令格式(Linux终端卡塔尔(英语:State of Qatar)

        1、decimal(m,n)

  mysql -uroot -p 指标库名 < ***.sql

           2、存款和储蓄空间(整数、小数分开积攒卡塔尔(قطر‎

  2、从有着库备份中回复某贰个库(–one-database卡塔尔

            法规:将9的倍数包装成4个字节

  mysql -uroot -p –one-database 目的库名 < all.sql

          示例:decimal(19,9)

  mysql -uroot -p –one-database db4 < all.sql

          整数局地:10/9=商1余1 4字节+1字节=5字节

8、mysql的客商账户管理

          小数部分:9/9=商1余0 4字节+0字节=4字节

  1、开启MySQL远程连接  

          占:9字节

    1、sudo -i
    2、cd /etc/mysql/mysql.conf.d/
    3、subl mysqld.cnf
      #bind-address = 127.0.0.1 ctrl + s保存  —-此行为注释
    4、/etc/init.d/mysql restart

      

  2、加多授权客商

  2、字符类型
    1、char(定长)
      1、取值范围:1~255
    2、varchar(变长)
      1、取值范围:1~65535
      2、text / longtext(4G) / blob / longblob(4G)
    3、char和varchar的特点
      1、char :浪费存款和储蓄空间,质量高
      2、varchar :节省存款和储蓄空间,质量低

    用root顾客登陆mysql

 

    mysql -uroot -p123456

 

    授权:   

 

      grant 权限列表 on 库.表 to “客商名”@”%”
      identified by “密码” with grant option;   

 

    权限列表:all privileges 、select 、insert
    库.表 : *.* 所有库的全部表

 

  3、示例
    1、加多授权客户tiger,密码123,对全体库的保有表有全体权限
    grant all privileges on *.* to “tiger”@”%” identified by “123”
with grant option;
    2、增多客商rabbit,对db4库有全数权限
    grant all privileges on db4.* to “rabbit”@”%” identified by
“123” with grant option;

 

 

 

本小结完!

 

 

      

—恢复生机内容截至—

发表评论

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

网站地图xml地图