mysql数据库的操作,MySQL语句整理

  mysql在从前写过一遍,那时是我正好进入博客,前天介绍一下mysql的python交互,当然后边会把mysql基本概述一下。

–01 mysql 数据库的操作

1.1.1本子命令操作

–01 mysql 数据库的操作

 

    — 链接数据库

sql语句分为两大类:

 

  目录:
一、命令脚本(mysql)
    1、基本命令
    2、数据库操作命令
    3、表操作命令
    4、数据操作命令
    5、查
    6、关联
二、python交互
    1、数据库连接
    2、创建数据库表
    3、插入数据
    4、更新数据库
    5、删除数据
    6、数据库查询
三、mysql封装(方便使用)
    1、python封装的my_sql类
    2、案例(调用my_sql类)

mysql -uroot -pmysql

1、dml对表的数据内容展开增删改查

    — 链接数据库

 

— 不出示密码

2、ddl除了dml之外

    mysql -uroot -pmysql

一、命令脚本

mysql -uroot -p

选拔命令连接

    

1、基本命令

mysql

·命令操作方法,在工作中使用的更加多一些,所以要达到炉火纯青的档次

    — 不显得密码  *****

  (1)启动服务

    • 以管理人身份运行cmd
    • net start 服务名称

    — 退出数据库

·打开终端,运行命令

    mysql -uroot -p

  (2)为止服务

    • 以管理员身份运行cmd
    • net stop 服务名称

    quit/exit/ctrl + d

mysql -hip -uname -ppassword

    

  (3)连接数据库

    • 格式:mysql – u root – p
      ->输入密码

    — sql语句最后索要有分店;结尾

mysql -uroot -p

    — 退出数据库

  (4)退出登录(断开连接)

    • exit或quit

    — 突显数据库版本 version

回车后输入密码,当前安装的密码为mysql

    quit/exit ctrl+d

  (5)查看版本(连接后方可推行)

    • select version()

    select version();

·登录成功后,输入如下命令查看效果

 

  (6)突显当前时光(连接后方可实施)

    • select now()

    — 呈现时间

翻开版本:select version();

   
sql语句最终索要有分店;结尾

  (7)远程连接

    • mysql – h ip地址 – u 用户名 – p
      —>输入对方mysql密码

select now();

来得当前岁月:select now();

    — 突显数据库版本 version

2、数据库操作命令

— 查看当前选拔的数据库

·注意:在说话结尾要使用分号;

    select version();

  (1)创立数据库

    • create database 数据库名 charset
      = utf8

    select database();

长距离连接

 

  (2)删除数据库

    • drop database 数据库名

    — 查看所有数据库

·一般在商家付出中,可能会将数据库统一搭建在一台服务器上,所有开发人士共用一个数据库,而不是在协调的电脑中安排一个数据库

    — 呈现时间 now

  (3)切换数据库

    • use 数据库名

show databases;

·运行命令

    select now();

  (4)查看当前甄选的数据库

    • select database()

    — 创设数据库

mysql -hip地址-uroot -p

    

3、表操作命令

    — create database 数据库名 charset=utf8;

·-h前边写要三番五次的主机ip地址

    — 查看当前使用的数据库

  (1)查看数据库中所有表

    • show tables

create database python01;

·-u前面写连接的用户名

    select database();

  (2)创建表

    • create table
      表名(列及类型)

        eg:create table student(id int
    auto_increment primary key,
                   name
    varchar(20) not null)
        注:auto_increment 自增长     
    primary key 主键     not null 非空

create database python01 charset=utf8;

·-p回车后写密码

 

  (3)删除表

    • drop table 表名

    — 查看成立数据库的言语

数据库操作

    — 查看所有数据库

  (4)查看表结构

    • desc 表名

    — show create database ….

·创制数据库

    show databases;

  (5)查看建表语句

    • show create table 表名

  show create database python01;

create database数据库名charset=utf8;

 

  (6)重命名表

    • rename table 原表名 to
      新表名

    — 使用数据库

·删除数据库

    — 成立数据库

  (7)修改表

    • alter table 表名 add | change |
      drop 列名

    — use 数据库的名字

drop database数据库名;

    create database 数据库名 charset = utf8;

4、数据操作命令

    use python01;

·切换数据库

 

  (1)增

    a、全列插入
      insert into 表名
values(…)
      eg:
      insert into student values(0,
“tom”, “北京”)

      主键列是全自动增加,但是在全列插入时必要占位,经常使用0,插入成功之后以实际数据为准
    b、缺省插入
      insert into 表名(列1,列2..)
values(值1,值2..)
    c、同时插入多条数据
      insert into 表名 values(…),
(…), …

    — 删除数据库

use数据库名;

    — 查看创制数据库的讲话

  (2)删

    delete from 表名 where
条件
    不写规范则全删

    — drop database 数据库名;

·查看当前选取的数据库

    show create database 数据库名

  (3)改

    update 表名 set 列1 = 值1, 列2 =
值2, … where 条件

  drop database python01;

select database();

     

  (4)查

    查询表中的全体数据
    select * from 表名

–02 数据表的操作

表操作

    — 使用数据库

5、查

    — 查看当前数据库中所有表

·查看当前数据库中所有表

   use 数据库的名字

  (1)基本语法

    select * from 表名


        from关键字后面是表名,表示数据来源于这张表
    -   
        select后面写表中的列名,如果是 \*
        表示在结果集中显示表中额所有列
    -   
        在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中
    -   
        如果要查询多个列,之间使用逗号分隔

    # eg:select name as a,age from
student;

  show tables;

show tables;

 

  (2)消除重复行

    在select前面列前边使用distinct可避防去重复的行
    eg:select distinct gender from
student

    — 创建表

·创建表

    — 删除数据库

  (3)条件查询

    a、语法
      select * from 表名 where
条件
    b、比较运算符
      等于(=) 大于(>)
小于(<) 大于等于(>=) 小于等于(<=) 不等于(!= 或
<>)
    c、逻辑运算符
      and or not
    d、模糊查询
      like
      %
表示任意多个随机字符
      _ 表示一个随机字符
    e、范围查询
      in
表示在一个非一连的限定内
      between。。。and。。。
表示在一个接连的限制内
      eg:where id in (8, 10,
13)
    f、空判断

      注意:null与””是例外的
      判断空:is null
      判断非空:is not
null
    g、优先级

      小括号,not,相比运算符,逻辑运算符

      and比or优先级高,同时出现并愿意先选or,要求结合括号来使用

— int unsigned 无符号整形

auto_increment表示自动增加,只可以是数字类型

    drop database 数据库名;

  (4)聚合

    为了神速取得统计数,提供了5个聚合函数
    a、count(*)
表示统计总行数,括号中得以写 * 或列名
    b、max(列)
表示求此列的最大值
    c、min(列)
表示求此列的最小值
    d、sum(列)
表示求此列的和
    e、avg(列)
表示求此列的平均值

mysql数据库的操作,MySQL语句整理。    — auto_increment 代表自动增进

主键本身是用来唯一标识这一行,没有事情逻辑意义,所以是哪些值不首要,只要唯一就行,所以如果是主键不需求修改

 

  (5)分组

    按照字段分组,表示此字段相同的数额会被置于一个成团中。分组后,只好查询出同样的数据列,对于有距离的数据列不能体现在结果集中

    可以对分组后的数码举行计算,做聚合运算
    select 列1, 列2, 聚合… from
表名 group by 列1, 列2 having 列1, 列2
    eg:  查询男女人总数
      select gender, count(*) from
student group by gender

    where与having的分别:where是对from后边指定的表展开筛选,属于对原本数据的筛选;having是对group
by的结果开展筛选。

    — not null 代表不可以为空

create table表名(列及类型);

–02 数据表的操作

  (6)排序

    select * from 表名 order by 列1
asc | desc, 列2 asc | desc, …

    a、将数据根据列1进展排序,即使某些列1的值相同则依据列2排序

    b、默许依照从小到大的次第
    c、asc升序
    d、desc降序

    — primary key 表示主键

如:

 

  (7)分页

997755.com澳门葡京,     select * from 表名 limit start,
count
    从start开始,看count条

    — default 默认值

create table students(

    — 查看当前数据库中所有表

6、关联

  • 建表语句

      (1)create table class(id int
    auto_increment primary key, name varchar(20) not null, stuNum int not
    null)
      (2)create table students(id int
    auto_increment primary key, name varchar(20) not null, gender bit
    default 1, classid int not bull, foreign key(classid) references
    class(id))

  • 布置一些数目:

  (1)insert into class values(0,
“python1”, 50), (0, “python2”, 60), (0, “python3”, 70)

  (2)insert into students values(0,
“tom”, 1, 1)

  • 涉及查询:

      (1)select students.name, class.name
    from class inner join students on class.id = students.classid

  • 分类:

  (1)表A inner join 表B

    表A与表B匹配的行会出现在结果集中
  (2)表A left join 表B

    表A与表B匹配的行会出现在结果集中,外加表A中独有的数码,未对应的数码应用null填充
  (3)表A right join 表B

    表A与表B匹配的行会出现在结果集中,外加表B中独有的数量,未对应的数目利用null填充

    — create table 数据表名字 (字段 类型 约束[, 字段 类型 约束]);

id int auto_increment primary key,

    show tables;

二、python交互

create table yyyy(

sname varchar(10) not null

   

1、连接数据库

 1 import pymysql
 2 
 3 
 4 # 连接数据库
 5 # 参数一:mysql服务所在主机的IP
 6 # 参数二:用户名
 7 # 参数三:密码
 8 # 参数四:要连接的数据库名
 9 db = pymysql.connect("localhost", "root", "111111", "student")
10 
11 # 创建一个cursor对象
12 cursor = db.cursor()
13 -----------------------------------------------------------------------------------------
14 # 要执行的sql语句
15 sql = "select version()"
16 
17 # 执行sql语句
18 cursor.execute(sql)
19 
20 # 获取返回的信息
21 data = cursor.fetchone()
22 print(data)
23 ----------------------------------------------------------------------------------------
24 # 断开
25 cursor.close()
26 db.close()

  那里我拔取的是pymysql,其实那几个和MySQLdb相差无几,命令也很像。连接时,主机IP即使是在本机,直接利用localhost即可,也足以写IP地址,那样可以兑现长途的总是。虚线中间部分是要开展不一样操作时要求转移的局部。

id int unsigned not null primary key auto_increment,

);

    

2、创立数量库表

  上面给出了连年数据库的代码,其实背后的操作就简单多了,外部框架不变,只要求改内部的sql语句,以及分级的片段操作。

1 # 检查表是否存在,如果有则删除
2 cursor.execute("drop table if exists bancard")
3 
4 # 建表
5 sql = "create table bandcard(id int auto_increment primary key, money int not null)"
6 cursor.execute(sql)

name varchar(20) not null,

·修改表

    — 创建表

3、插入数据

1 sql = "insert into bandcard values(0, 300)"
2 try:
3     cursor.execute(sql)
4     db.commit() # 执行这条语句才插入
5 except:
6     # 如果提交失败,回滚到上一次数据
7     db.rollback()

        age int

alter table表名add|modify|drop列名类型;

    — int unsigned 无符号整形

4、更新数据库

1 sql = "update bandcard set money=1000 where id=1"
2 try:
3     cursor.execute(sql)
4     db.commit()
5 except:
6     # 如果提交失败,回滚到上一次数据
7     db.rollback()

  可以看看,前边的操作基本上以及回归mysql本身,大家记住这样一个流水线就足以了。

);

如:

    — auto_increment 表示自动增进

5、删除数据

1 sql = "delete from bandcard where money=200"
2 try:
3     cursor.execute(sql)
4     db.commit()
5 except:
6     # 如果提交失败,回滚到上一次数据
7     db.rollback()

    — 查看表结构

alter table students add birthday datetime;

    — not null 表示不可能为空

6、数据库查询操作

  • fetchone()

    作用:获取下一个询问结果集,结果集是一个目的

  • fetchall()

    作用:接收全部的回来的行

  • rowcount

    是一个只读属性,再次回到execute()方法影响的行数

 1 sql = "select * from bandcard where money>200"
 2 try:
 3     cursor.execute(sql)
 4     # 返回查询结果
 5     reslist = cursor.fetchall()
 6     for row in reslist:
 7         print("%d--%d" % (row[0], row[1]))
 8 except:
 9     # 如果提交失败,回滚到上一次数据
10     db.rollback()

    — desc 数据表的名字;

·删除表

    — primary key 表示主键

三、mysql的包裹(方便未来选拔时一贯调用)

 1 import pymysql
 2 
 3 
 4 class my_sql():
 5 
 6     def __init__(self, host, user, passwd, dbName):
 7         self.host = host
 8         self.user = user
 9         self.passwd = passwd
10         self.dbName = dbName
11 
12     def connect(self):
13         self.db = pymysql.connect(
14             self.host, self.user, self.passwd, self.dbName)
15         self.cursor = self.db.cursor()
16 
17     def close(self):
18         self.cursor.close()
19         self.db.close()
20 
21     def get_one(self, sql):
22         res = None
23         try:
24             self.connect()
25             self.cursor.execute(sql)
26             res = self.cursor.fetchone()
27             self.close()
28         except:
29             print("查询失败")
30         return res
31 
32     def get_all(self, sql):
33         res = ()
34         try:
35             self.connect()
36             self.cursor.execute(sql)
37             res = self.cursor.fetchall()
38             self.close()
39         except:
40             print("查询失败")
41         return res
42 
43     def insert(self, sql):
44         return self.__edit(sql)
45 
46     def update(self, sql):
47         return self.__edit(sql)
48 
49     def delete(self, sql):
50         return self.__edit(sql)
51 
52     def __edit(self, sql):
53         count = 0
54         try:
55             self.connect()
56             count = self.cursor.execute(sql)
57             self.db.commit()
58             self.close()
59         except:
60             print("事务提交失败")
61             self.db.rollback()

  下面的类中封装了用python封装了对mysql的连接,增,删,改,查等效能,在事后选用的时候,完全可以直接调用其中的法门,防止双重造轮子嘛。下边给一个应用的案例:

1 from my_sql import my_sql
2 
3 # 这个是连接mysql的参数,前面有解释到,使用时候连接上自己的数据库就好
4 s = my_sql("xxx.xxx.xx.x", "xxxx", "xxxxxx", "student")
5 
6 # 查询
7 res = s.get_all("select * from bandcard where money>200")
8 for row in res:
9     print("%d--%d" % (row[0], row[1]))

  当然在你拔取的时候要写完整调用的类的路线,我那边是在同一个目录下写的。新建一个祥和的公文,引入my_sql中的my_sql类,然后就足以利用了。

 

desc yyyy;

drop table表名;

    — default 默认值

    — 创建 classes 表(id、name)

·查看表结构

    — create table 数据表名字 (字段 类型
约束[, 字段 类型 约束]);

create table classes(

desc表名;

    create table 表名(id int unsigned auto_increment primary key,name
varchar(30) not null,age int unsigned);

id int unsigned not null primary key auto_increment,

·更改表名称

 

name varchar(20) not null

rename table原表名to新表名;

    — 修改表名

);

·查看表的创造语句

    alter table 旧表名 rename 新表名;

    — 创建 students 表(id、name、age、high (decimal)、gender
(enum)、cls_id)

show create table ‘表名’;

    rename table 旧表名 to 新表名;

    create table students(

数据操作

 

id int unsigned not null primary key auto_increment,

·查询

    — 查看表结构

name varchar(20) not null,

select * from表名

    desc 数据表的名字;

age int unsigned,

·增加

 

high decimal(5,2),

全列插入:insert into表名values(…)

    — 创建 students 表(id、name、age、high (decimal)、gender
(enum)、cls_id)

gender enum(“男”,”女”,”中性”,”保密”) default “保密”,

缺省插入:insert into表名(列1,…) values(值1,…)

    create table students (id int unsigned auto_increment primary
key,name varchar(30) not null ,age int unsigned,high
decimal(5,2),gender enum(“男”,”女”,”保密”,”妖”) default “保密”,cls_id
int unsigned);

cls_id int

再者插入多条数据:insert into表名values(…),(…)…;

   

);

或insert into表名(列1,…) values(值1,…),(值1,…)…;

    — 查看表的创导语句

    — 查看表的创制语句

·主键列是自行增加,不过在全列插入时索要占位,平时使用0,插入成功后以实际数据为准

    show create table 表名字;

    — show create table 表名字;

·修改

    

  show create table yyyy;

update表名set列1=值1,… where条件

    — 修改表-添加字段 mascot (吉祥物) **

    — 修改表-添加字段 mascot (吉祥物)

·删除

    — alter table 表名 add 列名 类型;

    — alter table 表名 add 列名 类型;

delete from表名where条件

   

  alter table classes add jixiangwu varchar(20) default “保时捷”;

·逻辑删除,本质就是修改操作update

    — 修改表-修改字段:不重命名版

    — 修改表-修改字段:不重命名版

alter table students add isdelete bit default 0;

    — alter table 表名 modify 列名 类型及约束;

    — alter table 表名 modify 列名 类型及约束;

一旦要求删除则

    alter table classes modify mascot varchar(100);

alter table classes modify jixiangwu varchar(30) default “一个理想”;

update students isdelete=1 where …;

 

    — 修改表-修改字段:重命名版

备份与回复

    — 修改表-修改字段:重命名版  ***

    — alter table 表名 change 原名 新名 类型及约束;

Ø数据备份

    — alter table 表名 change 原名 新名 类型及约束;

alter table classes change jixiangwu mascot varchar(20) default “蛇”;

·进入最佳管理员

    alter table classes change mascot jxw varchar(30);

    — 修改表-删除字段

sudo -s

 

    — alter table 表名 drop 列名;

·进入mysql库目录

    — 修改表-删除字段  *

alter table classes drop mascot;

cd /var/lib/mysql

    — alter table 表名 drop 列名;

    — 删除表

·运行mysqldump命令

    alter table classes drop jxw;

    — drop table 表名;

mysqldump –uroot –p数据库名> ~/Desktop/备份文件.sql;

 

    — drop database 数据库;

按指示输入mysql的密码

    — 删除表

–03 增删改查(curd)

Ø数据复苏

    — drop table 表名;

    — 增加

·连接mysqk,创制数据库

    — drop database 数据库;

+——-+——————+——+—–+———+—————-+

·退出连接,执行如下命令

    drop table classes; *

| Field | Type            | Null | Key | Default | Extra          |

mysql -uroot –p数据库名< ~/Desktop/备份文件.sql

    drop database python10; 半*

+——-+——————+——+—–+———+—————-+

基于指示输入mysql密码

       

| id    | int(10) unsigned | NO  | PRI | NULL    | auto_increment |

长途连接

–03 增删改查(curd)

| name  | varchar(20)      | NO  |    | NULL    |                |

·一般在公司支出中,可能会将数据库统一搭建在一台服务器上,所有开发人士共用一个数据库,而不是在团结的统计机中布署一个数据库

 

+——-+——————+——+—–+———+—————-+

·运行命令

    — 增加

        — 全列插入

mysql -hip地址-uroot -p

        — 全列插入

        — insert [into] 表名 values(…)

·-h前边写要连接的主机ip地址

        — insert [into] 表名(字段名) values(值)

        — 主键字段 能够用 0  null  default 来占位

·-u前面写连接的用户名

        — 主键字段 能够用 0  null   default 来占位

        — 向classes表中插入 一个班级

·-p回车后写密码

        — 向classes表中插入 一个班级

insert into classes values(1,”laowang”);

数据库操作

        insert into classes(name) values(“python10”);

        — 向students表插入 一个学童新闻

·创造数据库

        insert into classes(name) values(‘python11’),(‘python12’);

+——–+————————————-+——+—–+———+—————-+

create database数据库名charset=utf8;

 

| Field  | Type                                | Null | Key | Default |
Extra          |

·删除数据库

        — 全部布置

+——–+————————————-+——+—–+———+—————-+

drop database数据库名;

        insert into students(id,name,age,high,gender,cls_id)
values(2,’yangyang’,18,1.80890,’保密’,001);

| id    | int(10) unsigned                    | NO  | PRI | NULL    |
auto_increment |

·切换数据库

        — 部分插入

| name  | varchar(20)                        | NO  |    | NULL    |     
          |

use数据库名;

        — insert into 表名(列1,…) values(值1,…)

| age    | int(10) unsigned                    | YES  |    | NULL    | 
              |

·查看当前拔取的数据库

        insert into students(name) values(“yang3”);

| high  | decimal(5,2)                        | YES  |    | NULL    |   
            |

select database();

 

| gender | enum(‘男’,’女’,’中性’,’保密’)      | YES  |    | 保密    |   
            |

表操作

        — 多行插入

| cls_id | int(11)                            | YES  |    | NULL    | 
              |

·查看当前数据库中所有表

        insert into students(name) values(“张三”),(“李四”);

+——–+————————————-+——+—–+———+—————-+

show tables;

        insert into 表名(字段) values(值) #逐条对应

insert into students values(1,”班主任”,18,166.66,”女”,111);

·创建表

 

insert into students values(0,”吴彦祖”,23,188.88,”男”,222);

auto_increment表示自动增加,只好是数字类型

    — 修改

insert into students values(null,”谢晨”,30,188.88,default,333);

主键本身是用来唯一标识这一行,失掉工作逻辑意义,所以是如何值不首要,只要唯一就行,所以如果是主键不要求修改

    — update 表名 set 列1=值1,列2=值2… where 条件;

        — 部分插入

create table表名(列及类型);

        — 全部改动

        — insert into 表名(列1,…) values(值1,…)

如:

        update students set name = “王五”

        insert into students(name,gender) values(“曾老师”,1);

create table students(

        — 按规则修改

        — 多行插入

id int auto_increment primary key,

        update students set name =’李四’ where id = 4;

insert into students
values(0,”laowang”,18,166.66,1,111),(0,”laoli”,18,166.66,1,111);

sname varchar(10) not null

        — 按标准修改四个值

    — 修改

);

        — update students set gender =””,name = “xxx” where ;

    — update 表名 set 列1=值1,列2=值2… where 条件;

·修改表

        update students set name=’张三’,age = 20 where id = 5;

        — 全部修改

alter table表名add|modify|drop列名类型;

        

update students set high=175.00;

如:

    — 查询主题采取

— 按原则修改

alter table students add birthday datetime;

        — 查询所有列

update students set high=177.77 where id=2;

·删除表

        — select * from 表名;

— 按规则修改多少个值

drop table表名;

        —定条件查询    

— update students set gender =””,name = “xxx” ;

·查看表结构

        select * from 表名 where id = 2;

update students set gender=”中性”,name = “金星” where id=5;

desc表名;

        — 查询指定列

    — 查询中央使用

·更改表名称

        — select 列1,列2,… from 表名;        

        — 查询所有列

rename table原表名to新表名;

        — 可以应用as为列或表指定别名

        — select * from 表名;

·查看表的创导语句

        — select 字段[as 别名] , 字段[as 别名] from 数据表;

        select * from students;

show create table ‘表名’;

        — 字段的一一

        —定条件查询

数量操作

        select age,name from students;

        select * from students where id=1;

·查询

 

        — 查询指定列

select * from表名

    — 删除

        — select 列1,列2,… from 表名;

·增加

        — 物理删除

        select name,gender from students;

全列插入:insert into表名values(…)

        — delete from 表名 where 条件;

        — 可以选用as为列或表指定别名

缺省插队:insert into表名(列1,…) values(值1,…)

        — 逻辑删除

        — select 字段[as 别名] , 字段[as 别名] from 数据表;

再者插入多条数据:insert into表名values(…),(…)…;

        — 用一个字段来表示 那条信息是不是业已不可能再采用了

        select name as “姓名”,gender as “性别” from students;

或insert into表名(列1,…) values(值1,…),(值1,…)…;

        — 给students表添加一个 is_delete 字段 bit 类型

        — 字段的逐条

·主键列是机动增加,可是在全列插入时须求占位,平日使用0,插入成功后以实际多少为准

        –alter table 表名 add 字段 类型 default 默认值;

        select gender as “性别”,name as “姓名” from students;

·修改

 

    — 删除

update表名set列1=值1,… where条件

    — 数据库备份与回复(了然)

        — 物理删除

·删除

        — mysqldump –uroot –p 数据库名 > python.sql;

        — delete from 表名 where 条件

delete from表名where条件

        — mysql -uroot –p 新数据库名 < python.sql; #
注意导入的时候必要先要创造数据库

      delete from students where id=6;

·逻辑删除,本质就是修改操作update

        — 逻辑删除

alter table students add isdelete bit default 0;

        — 用一个字段来代表 那条消息是或不是业已不可以再选拔了

如若必要删除则

        — 给students表添加一个 is_delete 字段 bit 类型

update students isdelete=1 where …;

alter table students add is_delete bit default 0;

备份与回复

update students set is_delete=1 where id=5;

Ø数据备份

— 数据库备份与还原(精晓)

·进入特级管理员

— mysqldump –uroot –p 数据库名 > python.sql;

sudo -s

— mysql -uroot –p 新数据库名 < python.sql;

·进入mysql库目录

cd /var/lib/mysql

·运行mysqldump命令

mysqldump –uroot –p数据库名> ~/Desktop/备份文件.sql;

按提示输入mysql的密码

Ø数据苏醒

·连接mysqk,创立数据库

·退出连接,执行如下命令

mysql -uroot –p数据库名< ~/Desktop/备份文件.sql

基于提示输入mysql密码

1.1.1总结

·数据库解决的难点,E-R模型,三范式

·图形界面操作数据库、表、数据

·命令行操作数据库、表、数据

1.1.2作业

·完善学生表、科目表及数量

·设计两张表,需要是一对多的关联

1.1查询

内容简介

·查询的中坚语法

select * from表名;

·from关键字背后写表名,表示数据出自是这张表

·select后边写表中的列名,假若是*表示在结果中彰显表中存有列

·在select后边的列名部分,可以接纳as为列起别名,这一个别名出现在结果集中

·若是要询问七个列,之间选择逗号分隔

消除重复行

·在select前面列前应用distinct可避防去重复的行

select distinct gender from students;

1.1.1条件

·使用where子句对表中的数据筛选,结果为true的行会出现在结果集中

·语法如下:

select * from表名where条件;

1.1.1.1相比运算符

·等于=

·大于>

·大于等于>=

·小于<

·小于等于<=

·不等于!=或<>

·查询号码大于3的学习者

select * from students where id>3;

·查询号码不超出4的课程

select * from subjects where id<=4;

·查询姓名不是“黄蓉”的学生

select * from students where sname!=’黄蓉’;

·查询没被剔除的学童

select * from students where isdelete=0;

1.1.1.2逻辑运算符

·and

·or

·not

·查询号码大于3的女校友

select * from students where id>3 and gender=0;

·查询号码小于4或没被删去的学习者

select * from students where id<4 or isdelete=0;

1.1.1.3混淆查询

·like

·%代表任意多个随机字符

·_表示一个即兴字符

·查询姓黄的学员

select * from students where sname like ‘黄%’;

·查询姓黄并且名字是一个字的学习者

select * from students where sname like ‘黄_’;

·查询姓黄或叫靖的学员

select * from students where sname like ‘黄%’ or sname like ‘%靖%’;

1.1.1.4界定查询

·in表示在一个非一连的界定内

·查询号码是1或3或8的学习者

select * from students where id in(1,3,8);

·between … and …表示在一个连接的界定内

·查询学生是3至8的学生

select * from students where id between 3 and 8;

·查询学生是3至8的男生

select * from students where id between 3 and 8 and gender=1;

1.1.1.5空判断

·注意:null与”是差其余

·判空is null

·查询没有填写地址的学童

select * from students where hometown is null;

·判非空is not null

·查询填写了地方的学生

select * from students where hometown is not null;

·查询填写了地址的女子

select * from students where hometown is not null and gender=0;

1.1.1.6优先级

·小括号,not,比较运算符,逻辑运算符

·and比or先运算,要是还要出现并愿意先算or,必要结合()使用

1.1.2聚合

·为了疾速取得计算数据,提供了5个聚合函数

·count(*)表示总括总行数,括号中写星与列名,结果是同等的

·查询学生总数

select count(*) from students;

·max(列)表示求此列的最大值

·查询女孩子的编号最大值

select max(id) from students where gender=0;

·min(列)表示求此列的最小值

·查询未删减的学习者最小编号

select min(id) from students where isdelete=0;

·sum(列)表示求此列的和

·查询男生的编号之后

select sum(id) from students where gender=1;

·avg(列)表示求此列的平均值

·查询未删减女孩子的编号平均值

select avg(id) from students where isdelete=0 and gender=0;

1.1.3分组

·根据字段分组,表示此字段相同的多寡会被内置一个组中

·分组后,只好查询出一致的数据列,对于有差别的数据列不可能出现在结果集中

·可以对分组后的多寡开展计算,做聚合运算

·语法:

select列1,列2,聚合… from表名group by列1,列2,列3…

·查询男女孩子总数

select gender as性别,count(*)

from students

group by gender;

·查询各城市人口

select hometown as家乡,count(*)

from students

group by hometown;

1.1.3.1分组后的数额筛选

·语法:

select列1,列2,聚合… from表名

group by列1,列2,列3…

having列1,…聚合…

·having后边的条件运算符与where的一律

·查询男生总人数

方案一

select count(*)

from students

where gender=1;


方案二:

select gender as性别,count(*)

from students

group by gender

having gender=1;

1.1.3.2对比where与having

·where是对from前边指定的表举办数据筛选,属于对原本数据的筛选

·having是对group by的结果开展筛选

1.1.4排序

·为了方便查看数据,可以对数码举办排序

·语法:

select * from表名

order by列1 asc|desc,列2 asc|desc,…

·将行数据根据列1举行排序,若是某些行列1的值相同时,则依据列2排序,以此类推

·默许依据列值从小到大排列

·asc从小到大排列,即升序

·desc从大到小排序,即降序

·查询未删减男生学生新闻,按学号降序

select * from students

where gender=1 and isdelete=0

order by id desc;

·查询未删减科目音讯,按名称升序

select * from subject

where isdelete=0

order by stitle;

1.1.5分页

·当数据量过大时,在一页中查看数据是一件格外麻烦的事体

·语法

select * from表名

limit start,count

·从start开始,获取count条数据

·start索引从0开始

示例:分页

·已知:每页呈现m条数据,当前显示第n页

·求总页数:此段逻辑前面会在python中贯彻

o查询总条数p1

o使用p1除以m得到p2

o假若整除则p2为总数页

o如若不整除则p2+1为总页数

·求第n页的多少

select * from students

where isdelete=0

limit (n-1)*m,m

相关文章

发表评论

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

*
*
Website