本子命令操作,mysql数据库的操作
分类:数据库

  mysql在前边写过一遍,这时候是自个儿正要步入博客,几日前介绍一下mysql的python人机联作,当然前边会把mysql基本概述一下。

--01 mysql 数据库的操作

mysql数据库是三个常用的关系型数据库

1.1.1本子命令操作

 

    -- 链接数据库

关系型数据库宗旨要素有什么?

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对表的数据内容打开增加和删除改查

 

-- 不突显密码

安装、运行、截至、重启mysql服务器的指令

2、ddl除了dml之外

风流罗曼蒂克、命令脚本

mysql -uroot -p

 安装:sudo apt-get install mysql-server
 启动:sudo service mysql start
 # 查看进度中是还是不是存在mysql服务 ps ajx|grep mysql
 停止:sudo service mysql stop
 重启:sudo service mysql restart

利用命令连接

1、基本命令

mysql

 

·命令操作方式,在工作中使用的越来越多一些,所以要达到笔底生花的水准

  (1卡塔 尔(阿拉伯语:قطر‎运营服务

    • 以管理员身份运营cmd
    • net start 服务名称

    -- 退出数据库

mysql 数据库的操作

·展开终端,运转命令

  (2卡塔尔甘休服务

    • 以管理人身份运维cmd
    • net stop 服务名称

    quit/exit/ctrl d

 
  
1.延续数据库
  
 mysql -u root -pmysql

mysql -hip -uname -ppassword

  (3卡塔尔连接数据库

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

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

 
  不展现密码连接
  
 python@ubuntu:~/Desktop$ mysql -u root -p
  
 Enter password: mysql  

mysql -uroot -p

  (4卡塔 尔(阿拉伯语:قطر‎退出登入(断开连接卡塔 尔(阿拉伯语:قطر‎

    • exit或quit

    -- 呈现数据库版本 version

   
  脱离数据库
     
 ctrl l:解除命令显示屏
  
 quitexit

回车的前边输入密码,当前设置的密码为mysql

  (5卡塔尔国查看版本(连接后得以推行卡塔 尔(阿拉伯语:قطر‎

    • select version()

    select version();

2.创制数据库
 create database 数据库名 charset=utf8;
 ### 创立数据库时应当要记得消除编码难点

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

  (6卡塔尔彰显超越天子(连接后能够试行卡塔尔国

    • select now()

    -- 展现时间

 

查看版本:select version();

  (7卡塔 尔(阿拉伯语:قطر‎远程连接

    • mysql - h ip地址 - u 客户名 - p --->输入对方mysql密码

select now();

3.翻看当前接受的数据库: select database();
  查看所以数据库:  show databases;
  查看当前数据库中全数表: show tabes;
  查看当前表中持有的列: select * from 表名;
  查看表结构:   desc 表名;

突显当前岁月:select now();

2、数据库操作命令

-- 查看当前选取的数据库

 

·注意:在言辞结尾要采纳分号;

  (1卡塔 尔(英语:State of Qatar)成立数据库

    • create database 数据库名 charset = utf8

    select database();

4. 1卡塔尔国创立表须求选拔的数据类型:
 整数:  int,bit  #int unsigned:无符号整形  #tinyint unsigned:无符号整形(但范围超小,平日用来年龄)  #.bit是位数据类型,长度为1字节;int 是整型;bit 实际就是bool类型,只好是0和1,int的是4个字节的整型
 小数:  decimal   #decimal(5,2)表示八位数字,两位小数点
 字符串: varchar,char  #varchar:可变字符串
 日期时间:  date, time, datetime
 枚举类型: enum
 主键:  primary key
 自动增加(扩充): atuo_increment
 默认值: default
 不可能为空: not null
 外键:  foreign key
in
   2)表格式:create table 数据表名字(id 无符号整形 主键 自动增加(扩展) 不能够为空; name 可变字符串(数字/范围) 暗许值'';age 无符号整形 暗中认可值0;height 小数;gender 枚举 暗中认可值;foreign key 无符号整形 暗中认可值);
     例如:create table t_students(id int unsigned primary key auto_increment not null,name varchar(10) default '',age tinyint unsigned default 0,height decimal(5,2),gender enum('男','女','中性','保密') default '保密',cls_id int unsigned default 0);

长途连接

  (2卡塔 尔(英语:State of Qatar)删除数据库

    • drop database 数据库名

    -- 查看全数数据库

 

·平时在市肆支付中,或然会将数据库统生机勃勃搭建在意气风发台服务器上,全体开辟职员共用一个数据库,而不是在自身的计算机中配置二个数据库

  (3卡塔 尔(阿拉伯语:قطر‎切换数据库

    • use 数据库名

show databases;

5.翻看成立数据库的话语: show create database 库名
  查看创设表的言辞:  show create table 表名

·运营命令

  (4卡塔尔查看当前甄选的数据库

    • select database()

    -- 制造数据库

 

mysql -hip地址-uroot -p

3、表操作命令

    -- create database 数据库名 charset=utf8;

6.使用数据库:  use 数据库名
  删除数据库:  drop database 数据库名
  删除表:  drop table 表名
  删除表--删除字段(列卡塔 尔(阿拉伯语:قطر‎alter table 表名 drop 列名

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

  (1卡塔尔国查看数据库中全部表

    • show tables

create database python01;

 

·-u后边写连接的客户名

  (2)创建表

    • create table 表名(列及类型卡塔 尔(英语:State of Qatar)

        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;

7.表的改换:

·-p回车的前面写密码

  (3)删除表

    • drop table 表名

    -- 查看成立数据库的语句

 1卡塔尔 改正表-加多字段 kouhao (班级口号)
     alter table 表名 add 列名 类型及限制;
     alter table t_classes add kouhao varchar(20) not null default '人生苦短,小编用Python';

数据库操作

  (4卡塔 尔(阿拉伯语:قطر‎查看表结构

    • desc 表名

    -- show create database ....

 2卡塔 尔(英语:State of Qatar) 修正表-校正字段:重命名版
     alter table 表名 change 原名 新名 类型及节制;
     alter table t_classes change kouhao logo varchar(20);

·制造数据库

  (5卡塔尔国查看建表语句

    • show create table 表名

  show create database python01;

 3卡塔尔国 改善表-校订字段:不重命名版
     alter table 表名 modify 列名 类型及节制;
     alter table t_classes modify logo varchar(20) not null default '人生苦短,我用Python';   

create database数据库名charset=utf8;

  (6卡塔 尔(阿拉伯语:قطر‎重命名表

    • rename table 原表名 to 新表名

    -- 使用数据库

8.数据的增加和删除改查(curd)
  curd的解说: 代表成立(Create卡塔 尔(英语:State of Qatar)、更新(Update卡塔尔、读取(Retrieve卡塔尔国和删除(Delete卡塔尔

·删除数据库

  (7)修改表

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

    -- use 数据库的名字

  1)增加

drop database数据库名;

4、数据操作命令

    use python01;

 1.全列插入
 insert [into] 表名 values(...)   #into可用可不要
 主键字段 能够用 0  null   default 来占位
 如:向classes表中插入 贰个班级
 insert into t_classes values(0,'python02');
   
 insert into t_classes values(0,'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(...), (...), ...

    -- 删除数据库

 如:向students表插入二个学子音信(id,name,age,height,gender,cls_id)
 insert t_students values(null,'大乔',23,165.12,'男',1);
    
 insert t_students values(null,'李白',23,180.12,'女',1);

use数据库名;

  (2)删

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

    -- drop database 数据库名;

 2.部分插入
 insert into 表名(列1,...) values(值1,...)
 insert into t_students(name,gender) values ('张飞',1); #此处张益德前边的一是创建表时,列表性别列对象的枚举参数顺序

·查看当前甄选的数据库

  (3)改

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

  drop database python01;

 3.多行插入
 insert into 表名(name,gender) values("小张1",1),("小张2",2);
 insert into t_students(name,gender) values('小王',2),('大王',3);

select database();

  (4)查

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

--02 数据表的操作

  2)修改
  update 表名 set 列1=值1,列2=值2... where 条件;

表操作

5、查

    -- 查看当前数据库中全数表

 1.任何改革
 update t_students set height=188.88 ;

·查看当前数据库中全数表

  (1卡塔 尔(英语:State of Qatar)基本语法

    select * from 表名


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

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

  show tables;

 2.按标准修正
 update t_students set gender='女' where id=1;

show tables;

  (2卡塔 尔(阿拉伯语:قطر‎湮灭重复行

    在select后边列后面使用distinct能够消除重复的行
    eg:select distinct gender from student

    -- 创建表

 3.按原则改善三个值
 update students set gender ="",name = "xxx" ;
 update  t_students set height=165.60,gender=1 where id=3;

·创建表

  (3卡塔 尔(阿拉伯语:قطر‎条件查询

    a、语法
      select * from 表名 where 条件
    b、比较运算符
      等于(=卡塔 尔(英语:State of Qatar) 大于(>卡塔 尔(阿拉伯语:قطر‎小于(<卡塔 尔(阿拉伯语:قطر‎ 大于等于(>=卡塔 尔(英语:State of Qatar) 小于等于(<=卡塔 尔(英语:State of Qatar) 不对等(!= 或 <>)
    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 无符号整形

  3)查询
 
 1.询问全体列
 select * from 表名;
 select * from t_students;

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

  (4)聚合

    为了急忙拿到总计数,提供了5个聚合函数
    a、count(*) 表示总括总行数,括号中能够写 * 或列名
    b、max(列) 表示求此列的最大值
    c、min(列) 表示求此列的最小值
    d、sum(列) 表示求此列的和
    e、avg(列) 表示求此列的平均值

    -- auto_increment 代表自动增加

 2.钦点条件查询
 select * from t_students where name='李白';

主键本人是用来唯风度翩翩标志那风度翩翩行,未有事业逻辑意义,所以是何等值不首要,只要唯黄金年代就行,所以借使是主键不要求改善

  (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 表示不可能为空

 3.查询内定列
 select 列1,列2,... from 表名;
 select name,age from t_students;

create table表名(列及类型);

  (6)排序

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

    a、将数据依照列1展开排序,假若有些列1的值相同则依照列2排序

    b、暗中同意依照从小到大的顺序
    c、asc升序
    d、desc降序

    -- primary key 表示主键

  4)删除

如:

  (7)分页

    select * from 表名 limit start, count
    从start开始,看count条

    -- default 默认值

 1.大要删除 #剔除后不足复苏
 delete from 表名 where 条件
 delete from t_students where id=4;

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 数据表名字 (字段 类型 节制[, 字段 类型 约束]);

 2.逻辑删除 #对要去除的目的做标识,可复原(用三个字段来代表 这条音信是或不是早已不能够再利用了卡塔尔国
 需求给students表增多二个 isdelete 字段 bit 类型手艺开展逻辑删除
 isdelete=1 正是象征删除标志;is_delete=0 正是回复 #用二进制0和1意味
 update t_students set isdelete=1 where id=5 ;

id int auto_increment primary key,

二、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列名类型;

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自己,我们记住那样八个流水生产线就可以了。

);

如:

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;

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 数据表的名字;

·删除表

三、mysql的包装(方便今后选用时一向调用卡塔 尔(英语:State of Qatar)

 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表名;

    -- 创建 classes 表(id、name)

·查看表结构

create table classes(

desc表名;

id int unsigned not null primary key auto_increment,

·修正表名称

name varchar(20) not null

rename table原表名to新表名;

);

·查看表的成立语句

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

show create table '表名';

    create table students(

数码操作

id int unsigned not null primary key auto_increment,

·查询

name varchar(20) not null,

select * from表名

age int unsigned,

·增加

high decimal(5,2),

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

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

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

cls_id int

並且插入多条数据:insert into表名values(...),(...)...;

);

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

    -- 查看表的始建语句

·主键列是活动增加,不过在全列插入时索要占位,平常使用0,插入成功后以实际多少为准

    -- show create table 表名字;

·修改

  show create table yyyy;

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

    -- 改进表-增加字段 mascot (吉祥物)

·删除

    -- 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 classes modify jixiangwu varchar(30) default "三个了不起";

update students isdelete=1 where ...;

    -- 修正表-改善字段:重命名版

备份与回复

    -- alter table 表名 change 原名 新名 类型及限制;

Ø数据备份

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

·走入特级管理员

    -- 改正表-删除字段

sudo -s

    -- alter table 表名 drop 列名;

·进入mysql库目录

alter table classes drop mascot;

cd /var/lib/mysql

    -- 删除表

·运行mysqldump命令

    -- drop table 表名;

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

    -- drop database 数据库;

按提醒输入mysql的密码

--03 增加和删除改查(curd)

Ø数据恢复生机

    -- 增加

·连接mysqk,成立数据库

------- ------------------ ------ ----- --------- ----------------

·退出连接,实践如下命令

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

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

------- ------------------ ------ ----- --------- ----------------

依据提示输入mysql密码

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

远程连接

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

·平常在公司付出中,大概会将数据库统生龙活虎搭建在豆蔻梢头台服务器上,全数开拓职员共用二个数据库,并非在大团结的微计算机中配备叁个数据库

------- ------------------ ------ ----- --------- ----------------

·运营命令

        -- 全列插入

mysql -hip地址-uroot -p

        -- insert [into] 表名 values(...)

·-h后边写要三番四次的主机ip地址

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

·-u前边写连接的客户名

        -- 向classes表中插入 三个班级

·-p回车的前面写密码

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

数据库操作

        -- 向students表插入 一个上学的小孩子音讯

·创设数据库

-------- ------------------------------------- ------ ----- --------- ----------------

create database数据库名charset=utf8;

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

·删除数据库

-------- ------------------------------------- ------ ----- --------- ----------------

drop database数据库名;

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

·切换数据库

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

use数据库名;

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

·查看当前筛选的数据库

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

select database();

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

表操作

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

·查看当前数据库中全数表

-------- ------------------------------------- ------ ----- --------- ----------------

show tables;

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

主键自身是用来唯生机勃勃标记那风度翩翩行,未有事业逻辑意义,所以是怎么着值不重大,只要唯风流倜傥就能够,所以只若是主键没有必要修改

        -- 部分插入

create table表名(列及类型);

        -- insert into 表名(列1,...) values(值1,...)

如:

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

create table students(

        -- 多行插入

id int auto_increment primary key,

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

sname varchar(10) not null

    -- 修改

);

    -- update 表名 set 列1=值1,列2=值2... where 条件;

·修改表

        -- 全体制校正动

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;

·删除表

-- 按规范修改四个值

drop table表名;

-- update students set gender ="",name = "xxx" ;

·查看表结构

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

desc表名;

    -- 查询中央接收

·改良表名称

        -- 查询全部列

rename table原表名to新表名;

        -- select * from 表名;

·查看表的创办语句

        select * from students;

show create table '表名';

        ---定条件查询

数码操作

        select * from students where id=1;

·查询

        -- 查询钦命列

select * from表名

        -- select 列1,列2,... from 表名;

·增加

        select name,gender from students;

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

        -- 能够行使as为列或表钦点外号

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

本子命令操作,mysql数据库的操作。        -- select 字段[as 别名] , 字段[as 别名] from 数据表;

还要插入多条数据:insert into表名values(...),(...)...;

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

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

        -- 字段的一风流洒脱

·主键列是电动增进,不过在全列插入时索要占位,经常使用0,插入成功后以实际数据为准

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

·修改

    -- 删除

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

        -- 物理删除

·删除

        -- delete from 表名 where 条件

delete from表名where条件

      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-Escort模型,三范式

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

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

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的学员

本子命令操作,mysql数据库的操作。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

本文由澳门新萄京发布于数据库,转载请注明出处:本子命令操作,mysql数据库的操作

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 澳门新萄京ProxySQL初体验
    澳门新萄京ProxySQL初体验
      Preface       Aswe all know,it's a common sense that separate reading and writingoperations can immensely increse the performance of MySQLdatabase.Especially the query operations by executing sel
  • 行使SqlServer中的float类型时意识的标题,及应用思
    行使SqlServer中的float类型时意识的标题,及应用思
      摘要: 下文陈述使用roundsql函数,对数值型数据开展舍入操作 实施意况:sqlserver 二零一零 numeric 和 decimal 数据类型的默认最大精度值是 38。在 Transact-SQL 中,
  • SQL函数大全,常用系统函数
    SQL函数大全,常用系统函数
    摘要:下文收集了sqlserver函数教程,为每一个函数都进行了相关举例说明, 系统函数用于获取有关计算机系统、用户、数据库和数据库对象的信息。系统函
  • SQL内外左右交叉连接,交叉连接
    SQL内外左右交叉连接,交叉连接
    在查询多少个表时,大家平常会用“连接查询”。连接是关周全据库模型的首要特色,也是它有别于于其余种类数据库管理种类的一个注脚。   SQL左右连接
  • 目录维护常用方法总括,SQLSEEscortVE宝马7系怎么着
    目录维护常用方法总括,SQLSEEscortVE宝马7系怎么着
    意气风发. 索引概述 关于介绍索引,有豆蔻梢头种“文章太史,挥毫万字,一饮千钟”的豪迈感觉,因为索引须求讲的知识点太多。在每一种关系型数据