python学习记录mysql基础(一)

11人阅读 评论(0) 收藏 举报
分类:

一、MySQL的安装

在网上有太多教程了,我也就不再此详细说,不过提示一点,如果下载了下面图中的文件时,请注意安装卸载都应该在右键该文件上操作

img

二、创建一个数据库

  • 当需要创建一个全新的数据库时:
create database mydb default charset=utf8;

其中default是指默认utf8编码格式

  • 很明显在创建数据库的时候有可能会遇到数据库太多,不知道想创建的数据库的名字是否已经存在时:
create database mydb if not exists mydb;
  • 在处理完上述情况后,可能也会遇到一种情况就是已经存在的同名数据库中的表跟您想要创建的表差距太大,也可以选择删除已有的数据库的,但是前提是您已经知道这个数据库没有什么用处的时候:
drop database if exists mydb;
create database mydb charset=utf8;
注意:在sql中是utf8,而不是utf-8!

三、创建表格

  • 1、查看已有表格:
show tables;

同上,查看已有的数据库,当然就是

show database;
  • 2、创建新表格:
create table grade ('在括号里写要创建的数据')

同样的在创建新表格的时候, 也会遇到在创建数据库的时候相同的情况,方式都一样,我就不再此处再详细说明了

    • 1)、主键创建:
primary key(id)
    • 2)、外键创建:
foreign key(g_id) references grade(id)
ps:在添加外键的时候,一定要写好关联状态
  • 3、插入数据:
insert into grade values('', ''....)
ps:在上面的情况中,因为没有说好要添加那些值,所以在定义的时候,不管是否是主键的值,都要写进去,否则就会报错
insert into grade (g_name, g_desc) values('', '')
  • 4、删除数据:
delete from grade where id=1;
  • 5、更新数据:
update grade set id=3 where id=1;
  • 6、查找数据:
select * from grade;
ps: *的位置可以写你想要查找的元素名

四、索引的增删改查

  • 1、什么是索引:

什么是索引: MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
- 2、索引的增删改查:

创建语法: create index [index_name索引名] on table_name([column_name 列名]);

删除语法: drop index [index_name 索引名] on table_name;

查看语法: show index from table_name;

修改语法: alter table table_name add unique [index_name 索引名]

五、练习

  • 1、创建学生表student,有字段学生姓名s_name,家庭地址s_addr,性别s_sex,电话s_te1,语文成绩,数学成绩s_ shuxue,主键id,外键g_id(关联班级表),学生创建时间s_ create_time
create table student(
    id int auto_increment not null, 
    s_name varchar(30) not null, 
    s_addr varchar(30) default null, 
    s_tell varchar(30) not null, 
    s_chinese float not null,
    s_math float not null , 
    s_create_time varchar(30) not null,
    g_id int default null, 
    primary key(id), 
    foreign key(g_id) references grade(id));

由于在创建的时候,漏了一个s_sex, 可以使用以下语句进行准确插入:

alter table student add s_sex char(1) after s_addr;
  • 2、创建班级表grade,有字段班级名称g_name,班级描述g_deso,班级创建时间g_ create time,主键id
create table grade(
    id int auto_increment not null,
    g_name varchar(30) not null,
    g_deso varchar(500) not null,
    primary key(id),
)
  • 3、创建学生扩展表Studentinfo,有字段家长姓名1name,家长电话i_ phone,主键id,外键i_id(关联学生表
create table studentinfo (
    id int auto_increment not null, 
    i_name varchar(10) not null, 
    i_phone varchar(30) not null, 
    i_id int default null, 
    primary key(id), 
    foreign key(i_id) references student(id));
  • 4、向各个表格中插入数据
insert into student (s_name, s_addr, s_sex, s_tell,.....) values(......)

插入数据就按照这个格式一致写就对了,当然也可以按照以下的方法进行开火车式书写

insert into student (s_name, s_addr, s_sex, s_tell,...) values(...), (...), (...)
  • 5、查询每个班级下有多少学生
select count(*) as '学生个数', g.g_name as '班级名称' from student s join grade g on s.g_id=g.id group by(g.id);
  • 6、 查询每个班级下学生的语文成绩最高的学生
select t2.s_chinese as '最高语文成绩', t2.s_name as '学生名字', t1.id as '班级名字' from
(select max(s.s_chinese) as chinese_score, g.id as id from student s join grade g on s.g_id=g.id GROUP BY g.id) as t1 join student t2 on t1.id=t2.g_id where t2.s_chinese=t1.chinese_score;
  • 7、查询每个班级下学生的数学成绩最低的学生前3个学生
select t1.s_name as stu_name, t1.s_chinese as chinese_score, 
t2.name as name from (
select min(s.s_chinese) as min_score, g.id as id, g.g_name as name from student s join grade g on s.g_id=g.id group by g.id) as t2 join student t1  where t2.min_score!=t1.s_chinese and t1.g_id=t2.id;

ps: 我这种方法目前只能找到除去最低成绩的所有学生,下面还有一种方法,要比上面的好一点,不过当班级人数不够3人, 或者有多个最低分的时候,会出现bug

SELECT * from student s1
where 2>=(
select count(*) from student s
WHERE s1.s_math>s.s_math
and s1.g_id=s.g_id
)ORDER BY s1.g_id, s1.s_math
  • 8、统计每个班级下语文成绩的平均值,以及总和
select sum(s_chinese), avg(s_chinese), g_id from student s join grade g on s.g_id=g.id group by g.id;
  • 9、查询每个班级下语文成绩大于68分的学生信息
select s.s_chinese as '语文成绩', s.s_name as '学生名字', g.id as '班级名字' from student s join grade g on s.g_id=g.id where s.s_chinese>68;
查看评论

MySQL---数据库从入门走向大神系列(一)-基础入门

从最开始的创建数据库,创建表,创建列开始写起,再到常用的EXISTS函数,SELECT 复杂查询,模糊查询LIKE,创建视图 等深入学习。 为了对单词加深印象,全部在DOS下演示! 创建数据库、表 ...
  • qq_26525215
  • qq_26525215
  • 2016-08-05 17:47:12
  • 20905

MySQL核心基础(一)之数据库介绍

一.数据库的概念及术语 (一)数据、数据库、数据库系统 什么是数据(Data),广义上讲,所有能够传递和存储信息的东西都叫数据。而狭义上说是存储在计算机磁盘上的信息。 什么是数据库(Database...
  • zhao582059960
  • zhao582059960
  • 2015-10-10 08:54:18
  • 196

unity入门项目学习要点记录

1. 在脚本里的public项最终可以在unity的组件下输入初始值 2. 需要检测碰撞而不要效果时,勾选is triggle,在脚本对应方法为onTrigglexxx,碰撞是onCollision...
  • wl1207989309
  • wl1207989309
  • 2018-01-31 10:24:12
  • 29

零基础如何系统的学习python

零基础如何系统的学习python
  • qq_38275284
  • qq_38275284
  • 2017-04-11 18:12:30
  • 1019

Python操作Mysql基础教程

Python操作Mysql最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysql数据库。我python也是零基础学起,所以本篇博客针对的是...
  • zinss26914
  • zinss26914
  • 2015-06-08 19:44:14
  • 5229

零基础如何开始学习 Python?看完这篇从小白变大牛!

1、选择Python版本对于Python工程师来说,Python的版本则是你们的工作环境。所以在学习之前一定要考虑选择一个合适自己的版本,Python3对零基础的小白很友好,易上手。选好版本后就可以开...
  • qq_41396296
  • qq_41396296
  • 2018-02-10 17:45:58
  • 1059

有C/C++/Java基础的,学习Python一篇文章就够了

有C/C++/Java基础的,学习Python一篇文章就够了
  • qq_29591261
  • qq_29591261
  • 2017-08-11 20:21:03
  • 2166

unity之C#学习记录

易错内容        闲来无事,写点东西吧 1: 数组是引用数据类型,对象在堆上开辟空间 2: 关于方法重写:重写的方法,访问权限必须和父类中方法的访问权限一直,方法重写需要用到关键字overr...
  • qq714077776
  • qq714077776
  • 2017-12-23 23:32:57
  • 33

MySQL一张表最多能存多少条记录?

MySQL一张表最多能存多少条记录? php   mysql  myisam   Vagrant 1月7日提问 关注 9 关注 收藏 0 收藏,1.8k 浏览...
  • evilcry2012
  • evilcry2012
  • 2017-12-13 14:54:54
  • 1793
    个人资料
    持之以恒
    等级:
    访问量: 366
    积分: 243
    排名: 31万+
    文章分类
    文章存档