1.库操作

2.表操作

3.行操作

1.库操作

1)创建数据库

语法:

create database 数据库名 charset utf8;

数据库命名规则:

  由数字,字母,下划线,@,#,$ 等组成

  区分大小写

  唯一性  

  不能使用关键字如 create select

  不能单独使用数字

  最长128位

  #基本上跟python或者js命名规则一样

2)相关操作:

查看数据库:

  show databases; 查看所有的数据库

  show create database db1; 查看db1这个数据库
  
  select database(); 查看当前所使用的数据库
  
  select user(); 查看当前所使用的用户

选择数据库:

use 数据库名;

删除数据库:

drop database 数据库名;

修改数据库:

alter database db1 charset utf8; 

2.表操作

表相当于文件,表中的一条记录就相当于文件的一行内容,表中的一条记录有对应的标题,成为表的字段

1).创建表

语法:

  create table 表名(

    字段名 类型(宽度) 约束条件,

    字段名 类型(宽度) 约束条件,

    字段名 类型(宽度) 约束条件);

注意:

1.在同一张表中,字段名是不能重复的

2.宽度和约束条件可选,非必须,宽度指的是字段长度约束,例如: char(10) 里面的10

3.字段名和类型是必须要写的

2).查看表的结构

  ①desc 表名;

  ②show create table t1\G;

修改表操作:

1.修改表名
alter table 表名 rename 新表名;
2.增加字段
alter table 表名 add 字段名 数据类型 [完整性约束条件], #注意这里可以通过逗号分割
add 字段名 数据类型 [完整性约束条件]; #这里可以一次添加多个约束 alter table 表名 add 字段名 数据类型 [完整性约束条件] first(after);添加字段时,放在第一个字段位置(或者放在最后一个位置),通过first和after可以将新添加的字段放在表的任意位置
3.删除字段
alter table 表名 drop 字段名;
4.修改字段
alter table 表名 modify 字段名 数据类型 [完整性约束条件];
alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件];
#change比modify多了一个改名字的功能,这一句是只改了一个字段名字,如果想改数据类型,在新字段名后面加上新数据类型即可

给字段添加一个外键属性的语句: alter table 表二名 add foreign key (表2的一个字段) references 表1名(表一的一个字段);

注: mysql中表名是不区分大小写的,如果将表名t1改为T1,是没用的,在数据库猴子那个表名都是小写的.

行操作

1) 插入数据

  语法1:

  insert into 表名(字段1,字段2,字段3....) values(值1,值2,值3...); #指定字段来插入数据,插入的值要和你前面的字段相匹配

  语法2:

  insert into 表名 values (值1,值2...) # 如果不指定字段,就按照默认的几个字段来插入数据

2) 更新(修改)数据

  语法:

  update 表名 set 字段1=值1,字段2=值2 where ...; #定位到where 然后将字段1和字段2的值改为值1,值2   定位到某个记录,并把这个记录中的某项内容更改

3)删除数据

  语法:

  delete from 表名 where conition; #删除符合条件的记录

  delete from 表名;

# 如果不加where条件,则默认将表中的所有内容删除,但是清空所有的内容,一般我们用truncate,能够将id设置为0,delete不能讲id设置为0,在插入数据时,会按照之前的数据记录的id数继续递增

4).查询数据(重点)

单表查询和多表查询

1)单表查询

语法:

  select * from 表名; #*代表的是查询所有字段的数据

  select distinct 字段1,字段2...from 库名.表名

        where 条件

        group by field(字段) # 分组

        having       #筛选

        order by field(字段)   #将结果按照后面的字段进行排序

        limit 限制条数    #将最后的结果加一个限制条数,就是说要过滤出来的数据记录的条数

2)关键字的执行优先级(重点中的重点)

from --> where -->group by -->having-->select-->distinct-->order by-->limit

步骤:

1.先到找表from 

2.拿着where 指定的约束条件,去文件/表 中取出数据

3.将取出的数据group by分组,如果没有group by,则整体为一组

4.将分组后的结果进行having过滤

5.然后执行select查询

6.去重复

7.将结果按照条件order by进行排序

8.限制结果的显示条数

聚合函数: 聚合函数聚合的是组的内容,若是没有分组,则默认一组

如: select count(*) from 表名;

select max/min/avg/sum(字段) from 表名; 计算字段中的xxx值

having过滤

having的语法格式和where是一模一样的,只不过having是在分组之后进行的进一步的过滤,where不能使用聚合函数,having是可以使用聚合函数的
#!!!执行优先级从高到低:where > group by > having
#1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。 #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,having是可以使用聚合函数

order by 查询顺序

select * from 表名 order by 字段;  默认升序, ASC升序, DESC降序

限制查询的记录数 limit

# 取出工资最高的前三位的信息

select * from 表名 order by salary DESC limit 3;

使用正则表达式查询

#之前我们用like做模糊匹配,只有%和_,局限性比较强,所以我们说一个正则,之前我们是不是学过正则匹配,你之前学的正则表达式都可以用,正则是通用的
SELECT * FROM employee WHERE name REGEXP '^ale'; SELECT * FROM employee WHERE name REGEXP 'on$'; SELECT * FROM employee WHERE name REGEXP 'm{2}'; 小结:对字符串匹配的方式
WHERE name = 'egon';
WHERE name LIKE 'yua%';
WHERE name REGEXP 'on$';

2) 多表查询

外链接语法:

  select 字段列表 from 表1 inner / left / right join 表2 on 表1.字段=表2.字段 ;

1.交叉连接: 不适用任何匹配条件 ,生成笛卡尔积

select * from 表1,表2 ;

如果这样写代码,会生成笛卡尔积

笛卡尔积: 每一个字段的每一项与另外一个字段的每一项 匹配

2.内连接 :只连接匹配的行

select * from 表1,表2 where 表1.字段=表2.字段 ;

3.外连接之左/右连接: 优先显示左表全部记录

select * from 表 left/right join 你想优先显示的表 on ....; # on的作用和where差不多

全外连接: 显示左右两个表的全部记录

(mysql 不支持全外连接)

(mysql 可以使用此种方式间接实现全外连接)

select * from 表 left join 优先显示的表 on ....union select * from 表 right join 优先显示的表 on .... ;

#注意 union与union all的区别:union会去掉相同的纪录,因为union all是left join 和right join合并,所以有重复的记录,通过union就将重复的记录去重了

子查询

子查询其实就是将你的一个查询结果用括号括起来,这个结果也是一张表,就可以将它交给另外一个sql语句,作为它的一个查询依据来进行操作。

带in关键字的子查询

select id,name from dep where id in (select dep_id from emp group by dep_id having avg(age)>25);

总结: 子查询的思路和解决问题一样,先解决一个然后拿着这个的结果再去解决另外一个问题,连表的思路都是先将2个表关联在一起,然后进行group by 啊过滤啊操作,两者的思路是不一样的

带比较运算符的子查询

比较运算符: = ,> ,< ,>=,<=,!=等

带exists关键字的子查询

exists关字键字表示存在。在使用exists关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。True或False
    当返回True时,外层查询语句将进行查询;当返回值为False时,外层查询语句不进行查询。还可以写not exists,和exists的效果就是反的

day037 行记录的操作的更多相关文章

  1. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询

    MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...

  2. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(一)

    MySQL的行(记录)的操作(一) 1. 增(insert) insert into 表名 value((字段1,字段2...); # 只能增加一行记录 insert into 表名 values(字 ...

  3. Mysql数据库的(行记录)详细操作

    在Mysql管理软件中, 可以通过sql语句中的dml语言来实现数据的操作, 包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据 ...

  4. MySQL行(记录)详细操作

    一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...

  5. 巨蟒python全栈开发数据库攻略3:行记录的操作&单表查询3

    1.数据行的增删改 2.单表查询 select&where条件 3.group by&having&order by&limit

  6. MySQL行(记录)的详细操作一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理

    MySQL行(记录)的详细操作 阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: ...

  7. day 37 MySQL行(记录)的详细操作

    MySQL行(记录)的详细操作   阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操 ...

  8. DevExpress控件使用经验总结- GridView列表行号显示操作

    DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一 ...

  9. Oracle 多行记录合并/连接/聚合字符串的几种方法

    怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结.-什么是合并多行字符串(连接字符串)呢,例如: SQL&g ...

随机推荐

  1. MySQL学习(二)

    1 增删改查是针对表来说的. 2 创建一个表 mysql> create table stu( -> id int primary key auto_increment, -> sn ...

  2. QT json字符串生成和解析

    1         QT json字符串生成和解析 1.1  QT Json解析流程 (1)  字符串转化为QJsonDocument QJsonParseError json_error; QJso ...

  3. MYSQL的常用函数(字符串函数)

    ASCII(char)返回字符的ASCII码值 BIT_LENGTH(str)返回字符串的比特长度 CONCAT(s1,s2...,sn)将s1,s2...,sn连接成字符串 CONCAT_WS(se ...

  4. Linux命令echo

    echo "hello world" echo 显示字符串内容

  5. 手机网页唤醒app,

    1.在系统系统自带的浏览器中 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]">启动应用 ...

  6. sublime Text如何取消两栏窗口?

    在菜单栏里的 View->LayOut->Single,也可以用快捷键 Alt+Shift+1.如图所示.(亲测可用) &amp;lt;img src="https:// ...

  7. Notepad++ 的资源管理器 右键菜单

    以前装的版本,右键[Edit With Notepad++]都可以出来的. 最近安装的总是不行. 不知道是Windows的原因,还是新版本的原因. 网上也都是用workaround去解决的. 免费的东 ...

  8. Python 编程快速上手 第十四章 处理 CSV 文件和 JSON 数据

    前言 这一章分为两个部分,处理 CSV 格式的数据和处理 JSON 格式个数据. 处理 CSV 理解 csv csv 的每一行代表了电子表格中的每一行,每个逗号分开两个单元格csv 的内容全部为文本, ...

  9. Learn Python3 the hard way 第一天总结 命令行(1)

    附录-命令行快速入门(1) command line interface 简称 CLI ,可以在mac OS 上通过一些输入进行一些操作. 1如何在迷路后怎样回家 命令: pwd:打印工作目录cd 更 ...

  10. So you want to be a computational biologist?

    So you want to be a computational biologist? computational biology course