2018-08-23-Python全栈开发day46-mysql
1.数据库
数据库是存储在计算机上,具有组织、共享数据的功能,数据按照一定的数学模型进行组织,也是存储数据的仓库
2.数据库管理系统软件
oracle,mysql,db2,sql server,access
3.数据库系统
通常由软件,数据库和数据管理员组成
4.sql规范
是一种结构化的查询语言
5.sql语句
sql语句不区分大小写,但是习惯上以大写来作为语干,变量小写,在sql中默认以分号;作为结束符,每个语句都必须有结束符
在sql代码使用过程中,可以换行,但是不支持单个单词进行换行
二、数据库操作
数据库中的数据是存在于类似于 Excel的表中的。
首先mysql中有多个数据库,数据库中有多个表。
创建数据库
create database s4;创建s4数据库
查看数据库
show databases;查看所有的数据库,其实一个数据库就是一个文件夹
判断数据库是否存在并创建,且设置数据库字符编码
create database if not exists s4 character set utf8; 判断s4数据库是否存在,如果存在则不创建,不存在的话创建,并且设定字符编码为utf8
修改数据库信息
alter database s4 character set gbk; alter是对数据库使用的, 这里是设置数据库的字符编码
删除数据库
drop database if exists s4; 如果有s4数据库的话则删除s4数据库
选择数据库
use s4;
三、mysql中的数据类型
1、整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) bigint(m) 8个字节 范围(+-9.22*10的18次方)
2、浮点型(float和double) MySQL数据类型 含义 float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位 double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位
4、字符串(char,varchar,_text) MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar(n) 固定长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符
6.日期时间类型 MySQL数据类型 含义 date 日期 '2008-12-2' time 时间 '12:25:36' datetime 日期时间 '2008-12-2 22:06:44' timestamp 自动存储记录修改时间
四、表格table
创建表格
create table empl( id tinyint(2) primary key, name varchar(20), gender tinyint(2) ); 在数据库中创建一个表格,目前创建的都是表格的字段,也就是标题,要给标题加上属性,之后加入表格的所有数据要和标题的数据类型一样。
并且在这次中,直接创建了一个主键,主键的特点:唯一且不为空
操作表格
修改表结构
增加字段
alter table empl add marry int(1) not null; 和数据库的设置相同,对于表的创建同样是使用alter, 如果是增加标题的话是使用add,后面加上标题名称和类型,并且可以加上约束性条件,约束性条件属于可加可不加,在这里加入了不能为空条件,还可以使用unique唯一等
如果增加多个标题,则以逗号来隔开
删除字段
alter table empl drop marry; 同样是使用alter来选择表,然后使用drop方法,在删除的时候不需要加上属性,直接通过名字就可以进行删除
修改字段类型
alter table empl modify name tinyint(2) unique first; 通过modify来修改字段的类型,并且可以在此时加入约束条件, 并且还可以将这个字段放到行中的某个位置, first就是第一个位置
修改表标题的名称
alter table empl change name names varchar(2) ; 前面放需要修改的标题名,后面放对应名字和类型,同样可以加约束条件
修改表的名字
rename table empl to emp;
五、表记录管理
数据库中添加好表,然后表中添加好标题之后,就可以对应的想表内添加数据,根据已经设置好的标题,添加记录
添加记录
insert into emp (id,names,gender) values(1,'ax',1); 添加一条记录 insert into emp (id,names,gender) values(6,'ax5',1), (2,'ax1',1), (3,'ax2',1), (4,'ax3',0), (5,'ax4',0); 同时插入多条记录
修改记录
update emp set names=ax4 where id =5; 选择emp表,并且set相应属性,但是如何选择这个记录呢 ?通过where来进行筛选---选择id等于5的那个记录并且进行修改
删除记录
delete from emp where id=4; 从emp表中删除id=4的那个 删除所有 delete from emp;这个是删除表内的所有记录,可以配合where truncate table emp;将整个表删除,并且重新建一张新的空白的表
表记录查询
select id from emp; 从emp表中显示标题为id的所有数据
处理记录
select id+10 from emp;对数据进行处理 select id as number from emp;对标题设置别名,只是在显示的时候显示,对表本身没有更改
如果设置了表明,在筛选的时候只能用having
根据特定条件过滤数据
select id from emp where gender = 4; 从emp表单中查找gender=4的那条数据,并且只显示id,除了=号运算符,还可以使用<>等
数据排序
select id,gender from emp order by gender; 在emp表中,根据gender的大小进行排序,默认是从小到大,并且显示id和gender的数据,并且可以加上筛选条件
对数据运算进行排序
sql语句执行顺序
from where select group by having order by
表查询,聚合函数
select id sum(gender) from emp group by id;如果id出现重复的话,则作为一条显示出来,并且有sum函数,计算组内特定标题的和,因为where的优先级高于sum,所以使用where进行筛选的时候会出现错误,此时使用having
其他聚合函数
count计数
avg 计算平均值
ifnull判断
where (ifnull(django,0)+ifnull(js,0)) > 10; 对django和js的值进行判断,如果两者都不为空且大于10的话
max/min select max(id) from emp; 选出最大或者最小的值

浙公网安备 33010602011771号