Python学习day01(mysql)

                                                                              Python学习day01(mysql)

Mysql 一般用来做网站,

Redis 一般用来做缓存

Mongodb 做非关系数据库

SQL : 结构化查询语言,

SQL:语言分为:

DQL: 数据查询语言,用于对数据进行查询,如select

DML: 数据操作语言,对数据进行增加,删除,修改,如insert,update,delete.

TPL:事务处理语言,对事务进行处理,包括begin,transaction,commite,rollback.

DCL:数据控制语言,进行授权与权限回收,如grant,revoke,

DDL:数据定义语言,进行数据库,表的管理等,如create,drop

CCL: 指针控制语言,通过控制指针完成表的操作,如declare cursor

使用数据的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间

常用数据类型如下:

。整数:int,bit

。小数:decimal     decimal(5,2)表示有5位其中2位是小数

。字符串:varchar(可变) char

。日期时间:data,time,datetime

。枚举类型(enum)

特别说明如下:

。Decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位

。Char表示固定长度的字符串,如char(3)若位数达不到会在末尾补空字符

。字符串text表示储存大文本,当字符大于4000时推荐使用

。对于图片,音频,视频等文件,不存储在数据库中,而是上传到某个服务器,然后在表中存储这个文件的保存路径

约束:

。主键primary key

:物理上存储的顺序

。非空not null:此字段不允许填写空值

。外键foreign key(存储别的表的主键到自己表中就是外键):对关系字段进行约束,

MySQL数据库操作的基本语句;

Show databases;  //展示数据库

show create database wuliu  //展示创建数据库wuliu的语句

查看当前使用的数据库:  select database();

查看表结构: desc +具体表名;

修改表--添加字段: alter table 表名 add 列名类型;

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

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

alter table students modify birthday date;

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

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

alter table students change birthday birthdate default “1990-01-01”;

删除表字段:alter

table 表名 drop 列名;

alter table students drop high;

删除表:drop table表名;

查看表创建语句:show create

table students; //就会显示创建表的语句

---修改表内容:

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

---删除

----物理删除

----- delete

from students; ---整个数据表中得所有数据全部删除

---逻辑删除

--- 用一个字段来表示这条信息是否已经不能再使用了

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

alter tablestudents add is_delete bit default 0;


数据库语句的查询

---查询

-----查询所有字段

----- select *from 表名;

------ 查询指定字段

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

-----使用 as 给字段起别名

----- select 字段 as 名字,.... from 表名;

-----可以通过as 给表起别名

select s.name ,s.age from students as s;

------消除重复行

------ distinct 字段 select distinct gender from  student //把表中相同的数据筛选掉。

----条件查询

--比较运算符

---- select .......from表名where ......

---  >

, <, >=,= !=或者< >

--- or 表示或者

--- not

---不在 18岁以上的女性这个范围内的信息

select *from students where not age >18 and gender =2;

select *from students where not (age >18 and gender =2);

not 在谁前面就否定谁,加括号使后面的先运行。

----模糊查询

----like

---- % 替换1个或者多个

---- _ 替换1个

---- 查询姓名中以“小“开始的名字”

---- rlike 正则

--- 查询以周开始的姓名   select name from students where name relike  “^周.*”;

----范围查询

--- in(1,3,8)表示在一个非连续的范围内

-- 查询年龄为18, 34 的姓名

select name,agefrom students where age =18 or age = 34

或者select name age from students where age in (19,34)

---not in 不在什么范围之类

----between and 表示在一个连续的范围内

-----not between and 表示不在一个连续的范围内

----空判断

--- 判断is null

-- 查询身高为空的信息

----判断非空is not null’

---排序

----order by 字段

----asc 从小到大排序,即升序

--- desc 从大到小的排序,即降序

----聚合函数

---总数

---count

---查询男性有多少人,女性有多少人

select count(*)from students where gender=1;

select count(*)

as 男姓人数fromstudents where gender =1;

---最大值

--max

---查询最大的年龄

select max(age)from students;

---最小值

---min

---求和

---sum

select sum(age)from students;

--平均值

---avg

---计算平均值

select avg(age)

from students; 或者selectsum(age)/count(*) from students;

----四舍五入 round(123.23 ,1) 保留1位小数

---- 计算所有人的平均年龄,保留两位小数

select round(sum(age)/count(*),2) from students ;

----分组

----group by

--- 按照性别分组,查询所有的性别

---group_concat(字段名称),显示分组详情


----having

----查询平均年龄超过30岁的性别,以及姓名having avg(age)>30;

----分页

--- limit start,

count (start:开始位置,count:个数)

----限制查询出来的数据个数

select *fromstudents where gender=1 limit 2;

---查询前5个数据

select *fromstudents limit 0,5;

----连接查询

---inner join ... on

----select ...from 表 A inner join表B;

select * from students inner join classes;


--- 查询有能够对应班级的学生以及班级信息


select *fromstudents inner join classes on students.cls_id = classes.id

---- 按照要求显示姓名,班级

selectstudents.name, classes.name from students inner join classes on students.cls_id= classes.id;

--- 给数据表起名字

select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;


----left join (以左边表里面的所有信息为基准到右边表里面去匹配)没有就补NULL

[if !vml]

[endif]

而内连接是需要两个表都要才取出来

[if !vml]

[endif]

---- 查询每位学生对应的班级信息

selectc.name,s.*  from students as s left joinclasses as c on s.cls_id = c.id


注意:外键填另一个表里面的主键。

------内关联


-----用一张表来解决关联问题叫做内关联(后面的字段关联前面的字段)即能不能将两张表合为一张表

[if !vml]

[endif]



数据库设计必须要满足三范式

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 7,257评论 1 8
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 4,818评论 0 0
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    EndEvent阅读 5,909评论 2 3
  • 一、数据库系统 数据库DataBase【DB】,指的是长期保存到计算机上的数据,按照一定顺序组织,可以被各种用户或...
    王梓懿_1fbc阅读 3,596评论 0 0
  • 这是一个赢者通吃的时代。 有很多人经常感到很迷茫,很困惑,不知道要干什么?觉得自己做什么都没用?好像市场已经被别人...
    王秦颖阅读 4,808评论 0 4