MySQL数据库基础

  

数据库系统(database system)

1.数据库系统(database system)
        数据库系统是计算机系统中一种专门管理数组资源的系统,数据库存储的是一组或多组经过处理后的数据,管理这个数据库的软件成为数据库管理系统。

组成:
            数据库(database)   存数据的
            数据库管理系统(database managment system)  管理数据库
    
    MySQL数据库作用:

​     1) 持久保存
    
    ​     2) 方便查询并提取满足条件的数据, 数据访问速度快
    
    ​     3) 处理并发访问
    
    ​     4) 权限管理

2.数据库系统分类:
        关系型数据库 : MySQL、SQLServer、oracle、db2、informix、sysbase
        非关系型数据库:redis、 MogoDB

3.开发中常用的数据库
        IBM:DB2
        甲骨文:Oracle  MySQL
        Microsoft:SQL Server Access等等

4.数据库在动态网站中有什么地位?
        1、动态网站是对数据进行操作。浏览网站的时候会发现网页内容变化,页面的布局主体没有变化。
        2、WEB系统的开发基本都离不开数据库,所谓的动态网站是基于数据库开发的系统,最主要的是围绕数据库来写程序(业务逻辑)。

5.MySQL和mysql有什么区别:

MySQL指的是完整的数据库系统。
        mysql指的是一个叫mysql的客户端程序。

6.MySQL数据库的结构:
        数据库->数据表->字段(多个字段组成了一行数据)

数据库:存放信息的文件夹
        数据库里面有一个一个的excel文件(数据表)

数据表里面的数据是有数据行和数据列构成

所看到的一行一行的数据是由一个或者多个字段组成的

7.SQL:为了和MySQL进行交互,需要使用一种叫SQL(结构化查询语言)的语言来进行交互。SQL是当今的标准的数据库语言,很多数据库都使用SQL作为交互语言:SQL Server、Oracle
        
        数据定义语言(DDL):定义和管理数据对象,比如建立数据库、数据表
        数据操作语言(DML):用于操作数据库对象中包含的数据。
        数据库查询语言(DQL):用于查询数据库对象中包含的数据,能够对表进行一个查询。
        数据控制语言(DCL):管理数据库的语言

8.连接数据库的步骤
        1、连接MySQL服务器
        2、选择数据库
        3、对数据表进行增删改查。
        4、关闭数据库

9.连接数据库
        mysql 
        -u 用户名 root 
        -p 密码
        -h 主机名
        -P 端口号 3306
        
    数据库语法的特点:
            mysql>
            1、每个SQL命令都要使用分号来完成。
            2、->表示MySQL需要你继续输入命令。
            3、如果说有一条比较长的命令我就可以拆分成多行来执行。
            4、'>表示等待下一行,等待以单引号开始的字符串的结束
            5、">表示等待下一行,等待以双引号开始的字符串的结束。
            6、查询的命令不区分大小写,通常使用大写字母来写出SQL关键字和函数名,用小写字母写出数据库、数据表和数据列的名字

10.退出MySQL
        quit
        exit
        \q

常见操作
            \c 取消命令输入
            \g 代替结束符;
            \s 查看服务器端信息
            \h 查看帮助

21.查询数据

格式:
select [字段列表]|* from 表名
[where 搜索条件]
[group by 分组字段 [having 子条件]]
[order by 排序 asc|desc]
[limit 分页参数]

mysql>select * from stu;
+----+----------+-----+-----+---------+
| id | name | age | sex | classid |
+----+----------+-----+-----+---------+
| 1 | zhangsan | 20 | m | lamp138 |
| 2 | lisi | 20 | m | lamp138 |
| 3 | wangwu | 21 | w | lamp138 |
| 4 | zhaoliu | 25 | w | lamp94 |
| 5 | uu01 | 26 | m | lamp94 |
| 6 | uu02 | 28 | w | lamp92 |
| 7 | qq02 | 24 | m | lamp92 |
| 8 | uu03 | 32 | m | lamp138 |
| 9 | qq03 | 23 | w | lamp94 |
| 10 | aa | 19 | m | lamp138 |
| 11 | sad | 35 | m | lamp94 |
| 12 | tt | 25 | m | lamp92 |
| 13 | wer | 25 | w | lamp94 |
| 14 | xx | 25 | m | lamp92 |
| 15 | kk | 0 | w | lamp94 |
+----+----------+-----+-----+---------+

##where条件查询
1. 查询班级为lamp138期的学生信息
mysql> select * from stu where classid='lamp138';

2. 查询lamp138期的男生信息(sex为m)
mysql> select * from stu where classid='lamp138' and sex='m';

3. 查询id号值在10以上的学生信息
mysql> select * from stu where id>10;

4. 查询年龄在20至25岁的学生信息
mysql> select * from stu where age>=20 and age<=25;
mysql> select * from stu where age between 20 and 25;

5. 查询年龄不在20至25岁的学生信息
mysql> select * from stu where age not between 20 and 25;
mysql> select * from stu where age<20 or age>25;

6. 查询id值为1,8,4,10,14的学生信息
select * from stu where id in(1,8,4,10,14);
mysql> select * from stu where id=1 or id=8 or id=4 or id=10 or id=14;

7. 查询lamp138和lamp94期的女生信息
mysql> select * from stu where classid in('lamp138','lamp94') and sex='w';
mysql> select * from stu where (classid='lamp138' or classid='lamp94') and sex='w

##LIKE 子句

这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。

LIKE 子句中使用百分号%字符来表示任意字符,类似于UNIX或正则表达式中的星号*。

如果没有使用百分号%, LIKE 子句与等号=的效果是一样的。

LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
可以使用regexp正则来代替 like

1.查询name字段值是以zh开头的所有信息
mysql> select * from stu where name like "zh%";
mysql> select * from stu where name regexp "^zh"; --正则写法
+----+----------+------+-----+---------+
| id | name | age | sex | classid |
+----+----------+------+-----+---------+
| 14 | zhangle | 29 | m | 5 |
| 1 | zhangsan | 20 | w | 1 |
| 4 | zhaoliu | 21 | m | 4 |
+----+----------+------+-----+---------+

2.查询姓名name中含有ang子串的所有信息
mysql> select * from stu where name like "%ang%";
mysql> select * from stu where name regexp "ang";
+----+-----------+------+-----+---------+
| id | name | age | sex | classid |
+----+-----------+------+-----+---------+
| 1 | zhangsan | 20 | w | 1 |
| 3 | wangwu | 22 | w | 5 |
| 10 | xiaozhang | 19 | w | 1 |
| 13 | wangwen | 27 | w | 2 |
| 14 | zhangle | 29 | m | 5 |
+----+-----------+------+-----+---------+

3.查询姓名是任意四位字符构成的信息。
mysql> select * from stu where name like "____";
mysql> select * from stu where name regexp "^[a-z0-9]{4}$";
+----+------+------+-----+---------+
| id | name | age | sex | classid |
+----+------+------+-----+---------+
| 2 | lisi | 25 | m | 2 |
| 5 | uu01 | 27 | w | 1 |
| 6 | uu02 | 25 | m | 2 |
| 7 | uu03 | 28 | w | 2 |
| 8 | uu05 | 22 | m | 4 |
+----+------+------+-----+---------+

创建一个表结构和另一个表一样的结构

create table t3 like t1;
那么现在t3表的结构和t1表的结构是一样的,但是要注意数据是没有的

##MySQL的统计函数(聚合函数):max() min() count() sum() avg()

1.获取学生表中最大、最小以及平均年龄是多少?
mysql> select max(age),min(age),avg(age) from stu;

2.获取学生表中男生m的数量
mysql> select count(*) from stu where sex='m';

##GROUP BY 语句 分组

GROUP BY 语句根据一个或多个列对结果集进行分组。

统计班级信息,按性别分组,并统计每组人数;
mysql> select sex,count(*) from stu group by sex;

1.统计每个班级的人数
nysql> select classid,count(*) from stu group by classid;

2.统计每个班级的,男生和女生各多少人数。
mysql> select classid,sex,count(*) from stu group by classid,sex;

##ORDER BY 排序 -- asc 默认升序 desc 降序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的ORDER BY子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
你可以设定多个字段来排序。
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
你可以添加 WHERE...LIKE 子句来设置条件。

1.按年龄升序排序查询学生信息
mysql> select * from stu order by age;
mysql> select * from stu order by age asc; --默认asc升序 可省略

2.年龄降序排序
mysql> select * from stu order by age desc;

3.查询学生信息,按班级做升序排序,相同班级按年龄降序排序
mysql> select * from stu order by classid asc,age desc;

##LIMIT 关键字 查询部分数据

-- 例如: .... limit m; 查询数据只显示前m条

-- 例如: .... limit m,n; 排除前m条,然后再查询出前n条

1.查询前5条信息
mysql> select * from stu limit 5;

2.排除前2条后再获取4条信息
mysql> select * from stu limit 2,4;

22.修改数据
格式:update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 条件

-- 将id为11的age改为35,sex改为m值
mysql> update stu set age=35,sex='m' where id=11;

-- 将id值为12和14的数据值sex改为m,classid改为lamp92
mysql> update stu set sex='m',classid='lamp92' where id=12 or id=14 --等价于下面
mysql> update stu set sex='m',classid='lamp92' where id in(12,14);

23.删除操作
格式:delete from 表名 [where 条件]

-- 删除stu表中id值为100的数据
mysql> delete from stu where id=100;

-- 删除stu表中id值为20到30的数据
mysql> delete from stu where id>=20 and id<=30;

-- 删除stu表中id值为20到30的数据(等级于上面写法)
mysql> delete from stu where id between 20 and 30;

-- 删除stu表中id值大于200的数据
mysql> delete from stu where id>200;

24.导入和导出
注意: 在操作导入和导出数据的时候 不要登录到mysql服务中,要退出mysql服务进行操作

-- 将lamp138数据库里面的所有的表导出
C:\>mysqldump -u root -p lamp138 > C:\lamp138.sql
Enter password:

---- 将lamp138数据库中的stu表导出
C:\>mysqldump -u root -p lamp138 stu > C:\lamp138_stu.sql
Enter password:

-- 将lamp138库中的所有表导入

C:\>mysql -u root -p lamp138 < C:\lamp138.sql
Enter password:

-- 将lamp138库中stu表导入
C:\>mysql -u root -p lamp138 < C:\lamp138_stu.sql
Enter password:

*********************
-- 将所有的数据库进行导出
mysqldump -uroot -p密码 --all-databases --events > /tmp/bak.sql 所有数据库备份

25.MySQL的权限管理
格式:
grant 权限 on 数据库.数据表 to '用户名'@'登录主机' identified by '密码'

刷新权限
flush privileges;

举例:
grant select,insert,update,delete on *.* to 'wjs'@'%' identified by '12345';

安全的做法
grant select,insert,update,delete on pass.* to 'root'@'localhost' identified by '12345';
只针对localhost主机里面的 pass数据库里面的数据表进行增删该查

删除用户
drop user 'xxoo'@'%'

python-MySQL数据库--- 基础篇的更多相关文章

  1. mysql数据库( 基础篇加破解)

    1.数据库(Database,DB)是按照数据结构来组织.存储和管理数据的,并且是建立在计算机存储设备上的仓库 2.什么是数据库:(用来存储数据的仓库) 数据库:(cs架构套接字) 数据库管理软件分类 ...

  2. Java基础-MySQL数据库扫盲篇

    Java基础-MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据库概述 1>.什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按 ...

  3. MySQL数据库扫盲篇

    MySQL数据库扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.MySQL概述 1>.什么是MySQL MySQL是瑞典的MySQL AB公司开发的一个可用于各 ...

  4. [资料分享]Python视频教程(基础篇、进阶篇、项目篇)

    Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...

  5. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  6. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  7. MySQL数据库基础

    MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...

  8. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  9. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  10. python mysql数据库压力测试

    python mysql数据库压力测试 pymysql 的执行时间对比 1,装饰器,计算插入1000条数据需要的时间 def timer(func): def decor(*args): start_ ...

随机推荐

  1. 如果存在这个表,则删除这个表的sql

    mysql: drop table if exists address_book sqlserver2005:IF EXISTS (SELECT * FROM sys.objects WHERE ob ...

  2. Spring Boot 全局排除 spring-boot-starter-logging 依赖

    https://blog.csdn.net/u013314786/article/details/90412733 项目里使用了log4j2做日志处理,要排除掉Spring Boot 很多jar里边默 ...

  3. PyCharm使用技巧总结

    PyCharm高频使用快捷键 快速修复:ALT + ENTER 搜索: 双击Shif 垂直分隔窗口: ALT + V 另起一行: SHIFT + ENTER 删除当前插入符所在的行: Ctrl + Y ...

  4. 2018-09-25-weekly

    Algorithm 两数相加 What 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. How 两个链表长度相同的部分,对位相加, ...

  5. What are the differences between an LES-SGS model and a RANS based turbulence model?

    The biggest difference between LES and RANS is that, contrary to LES, RANS assumes that \(\overline{ ...

  6. 使用Fabric在tomcat中部署应用的问题总结

    关闭tomcat时 A.为什么调用shutdown时,报错连接拒绝 结论——很可能是因为tomcat没启动或没完全启动:而这个时候调用shutdown就会出现此类报错 解决方法:time.sleep ...

  7. python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)

    一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来指定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构 ...

  8. JS大文件上传解决方案

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  9. C# 常用的ToString("xxxx")

    Convert.ToDecimal("-123").ToString("#,#.##") 结果:-123 Convert.ToDecimal("-12 ...

  10. PHPExcel笔记

    PHPExcel可是个好东东,功能强大,下面这是一个phpExcel简易中文帮助手册,列举了各种属性,以及常用的操作方法,是每一个都用实例加以说明,希望对大家有所帮助. 引用PHPExcel incl ...