认识mysql(88必发唯一官网3)

r -> 4
w -> 2
x -> 1
chmod 644 文件名 rw-r–r–
5、Excel表格如何转化为CSV文件
1、打开Excel文件 -> 另存为 -> CSV(逗号分隔)
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”;

数据库的备份:mysqldump
-h服务器名 -u登录名 -p数据库名 > 文件名 数据库的恢复:mysql
-h服务器名 -u登录名 -p数据库名 < 文件名      // 没有登录数据库系统
备份:mysqldump -hlocalhost -uroot -p nunu > c:/nunu.sql

本节完!

数据的打印: $result =
mysql_query(“select * from tab_int2;”); while ($res =
mysql_fetch_array($result)) { }

1、SQL查询
  1、执行顺序
    3、select …聚合函数 from 表名
      1、where …
      2、group by …
      4、having …
      5、order by …
      6、limit …
  2、group by
    1、作用 :给查询结果进行分组
    2、示例
      1、查询表中一共有几个国家

创建视图: create view
v1 as select id,age from tab_xuanxiang;

认识mysql第三篇,发出的内容适合初学者,如果能持续关注我的博客,可以全面的掌握mysql的常用知识,后续我也会陆续发出python相关的知识,关注我,和我一共进步吧!

#演示索引创建语法:
create table tab_suoyin(  id int auto_increment,  user_name
varchar(20) ,  email varchar(50),  //age int, /*没有索引*/

      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;

create table
tab_temp1(id int,name varchar(10),age tinyint); insert into tab_temp1
values(1,’user1′,18);

## sudo apt-get install python3-pip
## sudo pip3 install pymysql
2、约束
  1、作用 :保证数据的完整性、一致性、有效性
2、约束分类
  1、默认约束(default)
  1、插入记录,不给该字段赋值,则使用默认值
2、非空约束(not NULL)
  1、不允许该字段的值有NULL记录
  sex enum(“M”,”F”,”S”) not null defalut “S”

desc tab_int;

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)
  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用户)

唯一约束:unique 
key(字段名);

显示数据库: show
databases;

时间类型:
 datetime类型:   时间日期

 

修改数据库: alter
database 数据库名  charset  新的编码  collate  新的排序名;

 

$result =
mysql_query(“select * from tab_int2;”); fatch函数的三种形式
mysql_fetch_assoc($result);
 array(‘id’=>1,’name’=>’user1’,’age’=>18);
mysql_fetch_row($result);
 array(‘1’=>1,’2’=>’user1’,’3’=>18);
mysql_fetch_array($result);
 array(‘id’=>1,’name’=>’user1′,’age’=>18,’id’=>1,’name’=>’user1’,’age’=>18);

创建数据库: create
database 数据库名 【charset  字符编码名称】 【collate 排序规则】

select * from
tab_xiaoshu;

 

外键约束:foreign 
key(字段名) references 其他表名;

insert into
tab_time(dt,d2,t2,y)  values(now(),now(),now(),now());

其他  binary
类型 定长二进制字符串  varbinary 类型 变长二进制字符串  blob
类型 二进制数据类型,但是用于存储“图片”

显示字符编码:show
charset; 显示排序规则:show collation; 显示一个数据库的创建语句:show
create database 数据库名;

 

charset =
要使用的字符编码 engine = 存储引擎(表类型) auto_increment =
设定当前的自增长字段的初始值 comment = 该表的一些说明文字

字符类型:

PHP使用MySQL函数:
//sql_php

 

 year类型:   年份  
 timestamp:
  时间戳类型:类似js中的GetTime(),或php中的Time(),他们都得到的是一个“整数数字”。
在应用中,时间日期类型,在我们自己给定的数据情况下,需要使用“单引号”引起来。

$result =
mysql_query(“select / delect /updata /insert / desc /show tables
/drop….”);

基本语法形式: create
table 【if not exists】 表明(字段名【,索引或约束列表】)
【表选项列表】; create table 【if not exists】
表明(字段1,字段2,….字段名【,索引1,索引2,…】)
【表选项1,表选项2,…】;

检查约束:  create
table tab1(   age tinyint,   check (age>=0 and
age<100) /*这就是检查约束*/  );

表选项列表

删除表: drop table
[if exists] 表名;

 enum类型
  单选项字符串数据类型。他非常适合于存储表单界面中的“单选项值”
  enum(“选项1″,”选项2”,…);   实际内部:这些选项值对应的是如下数字值
 set类型   单选项字符串数据类型。他非常适合于存储表单界面中的“多选项值”
  set(“选项1″,”选项2”,…);   对应的数字是1,2,4,8,16

外键: create table
banji(  id int auto_increment primary key,  banjihao varchar(10) unique
key comment ‘班级号’,  banzhuren varchar(10) comment ‘班主任’,
 open_date date comment ‘开班日期’ );

#多选项 insert into
enum_set(id,sex,fav) values(null,’男’,’篮球,足球,台球’); insert into
enum_set(id,sex,fav) values(null,’女’,11);

create table
tab_xuanxiang(  id int auto_increment primary key,  name varchar(10),
 age tinyint ) charset = gbk, engine = MyIsam, auto_increment = 1000,
comment = ‘说明、、’ ;

#插入数据 insert into
tab_shuxing (id ,user_name,password,age,email)values
(1,’nunu1′,’123456′,20,’nunu1@qq.com’); insert into tab_shuxing (id
,user_name,password,age,email)values
(null,’nunu2′,md5(‘123456′),null,’nunu2@qq.com’); insert into
tab_shuxing (user_name,password,email)values
(‘nunu3’,md5(‘654321′),’nunu3@qq.com’);

修改表:
添加字段:alter table 表名 add [column] 新字段名 字段类型
[字段属性列表] 修改字段(并可改名):alter table 表名 change
[column] 旧字段名 新字段名 新字段类型 [新字段属性列表]
删除字段:alter table 表名 drop [column] 字段名 添加普通索引:alter
table 表名 add key [索引名] (字段名1,….)
添加唯一索引(约束):alter table 表名 add unique key [索引名]
(字段名1,….) 添加主键索引(约束):alter table 表名 add primary key
[索引名] (字段名1,….) 修改表名:alter table 表名 rename [to]
新表名;

#插如数据演示 insert
into enum_set(id,sex,fav) values(null,’男’,’篮球’); insert into
enum_set(id,sex,fav) values(null,1,1);

删除视图: drop view
【if exists】 视图名;

 

 

约束:

创建数据库:create
database db1 charset utf8;

删除数据库:drop
database 【if exists】数据库名; 其中:if
exists是用于一种安全运行的考虑,如果数据库不存在不会报错。

主要有  varchar类型
 理论值。65535;  char   定长字符串:   比如:手机号,中国邮政编码
  不够会补齐。

#演示enum,set的使用:
create table enum_set(  id int auto_increment primary key,  sex
enum(‘男’,’女’),  fav set(‘篮球’,’足球’,’中国足球’,’台球’) );

###################################################
#示例代码 create table tab_time(  dt datetime,  d2 date,  t2 time,  y
year,  ts timestamp );

扩展php中操作mysql数据的几个函数:
$n1 = mysql_num_rows($result); //获得该结果集的数据行数 $n2 =
mysql_num_fields($result); //获得该结果集的数据列数 $name =
mysql_field_name($result,$i); //获得该结果集的第i个字段的名字
i从0开始算起

##插入数据 insert
into tab_time(dt,d2,t2,y)  values(‘2016/4/1
15:50:00′,’2016/4/1′,’15:50:00′,’2017’);

select * from
tab_shuxing;

create table xuesheng(
 stu_id int auto_increment primary key,  name varchar(10),  age
tinyint,  banji_id int comment ‘班级id’,  foreign key (banji_id)
references banji(id) );

primary
key:用于设定该字段为主键,此时该字段的值就可以“唯一确定”一行数据;
unique key:设定该字段是“唯一的”,也就是不可重复的 not null:
用于设定该字段不能为空(null) 如果没有设定,则默认是可以为空的 default
xx值:用于设定该字段的默认值。

基础语法规定
 注释: 1、#注释内容   2、– 注释内容(–后有空格)   3、/*注释内容*/
 语句行 :   默认情况下,以一个英文分号作为一条语句的结束1   mysql
可以人为设定语句结束符   delimiter 新的结束符

#实例 alter table
tab_xuanxiang add column email varchar(50); alter table tab_xuanxiang
add key (age); /*添加一个普通索引*/

字段设定形式: 字段名
类型 【字段属性1 字段属性2 ….】

进入数据库:use
数据库名;

 

命令行启动停止数据库:net
start/stop mysql

使用视图:当做一个表用就可以了

create table
tab_char_varchar(  postcode char(6), /*邮政编码*/  name
varchar(10) /*姓名*/ );

字段类型

 

$link=mysql_connect(“数据库服务器地址”,”用户名”,”密码”); //连接数据库
mysql_query(“set names 网页编码名”);    //设定“连接编码”;
   //也可以这样做,mysql_set_charset(“网页文件编码名”);

索引:
 指定一个表的某个或某些字段作为“索引数据字段”
 形式为: 索引类型(要建立索引的字段名)
 索引类型有: key(字段名);  #普通索引
   含义:就是一个索引,只能加快查找速度    unique
key(字段名); #唯一索引    含义:可以设定其字段的值不能重复(唯一性)
   primary key(字段名); #主键索引
   含义:具有区分该表中的任何一行数据的作用     唯一性可以为空
而主键索引不能为空    fulltext (字段名); #全文索引    foreign key
(字段名) references其他表中的字段名; #外键索引

#演示字段属性的使用
create table tab_shuxing(  id int auto_increment primary key,
 user_name varchar(20) not null unique key,  password varchar(48) not
null,  age tinyint default 18,  email varchar(50) comment ‘电子邮箱’
);

desc 
显示表的结构

 time类型:
  时间

 

 key(email),  unique
key(user_name),/*这就是唯一索引*/  primary
key(id)/*这就是主键索引*/ );

 

mysql_query(“use
数据库名”);     //选定要使用的数据库    // =
mysql_select_db(“数据库名”);

数据库技术:
SQL,关系数据库标准

 text类型:  
  他成为“长文本”字符类型。通常,其中存储的数据不占表格中的数据限制。
  其最长存储是65535字符。smalltext  longtext

 

 

从已有表复制表结构:create
table 【if not exists】新表名 like 原表名;

insert into
tab_xuanxiang(id,name,age) values(null,’nnn’,18);

主键约束:primary
key(字段名);

登录方式:mysql
-hlocalhost -uroot -p -P端口号  -h服务器地址  -u登录名
退出:quit或exit

 date类型:
  日期

大小写:  mysql 
本身不区分大小写  根据系统是否区分大小写

注意: 环境编码:
 cmd客户端是固定的gbk编码
 而php网页中,是该网页文件的编码(现在主流都是utf8)。 mysql> set
names gbk;