wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > 数据库MySQL技术-基础知识

原标题:数据库MySQL技术-基础知识

浏览次数:124 时间:2019-05-11

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

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

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

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

      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、表中都有哪些国家
wns9778.com,  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;

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

## 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"

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

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

显示数据库: show databases;

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";

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

本节完!

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

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

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

 

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

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

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

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

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

PHP使用MySQL函数: //sql_php

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

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

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

desc  显示表的结构

select * from tab_xiaoshu;

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

$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 table tab_temp1(id int,name varchar(10),age tinyint); insert into tab_temp1 values(1,'user1',18);

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

字段类型

字符类型:

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

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

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

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

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

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

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

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

 

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

 date类型:   日期

 time类型:   时间

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

 

本文由wns9778.com发布于计算机教程,转载请注明出处:数据库MySQL技术-基础知识

关键词: wns9778.com

上一篇:值类型和引用类型wns9778.com

下一篇:没有了