Mysql自学

一:基本命令

用管理者打开command命名
mysql -u root -p
启动

quit 或 exit
关闭

select version();
显示版本

select now();
显示当前时间

show databases;

显示所有数据库

command命令查询ip地址:ipconfig;
远程连接
格式: mysql -h ip地址 -u 用户名 -p
输入密码
ip地址连接不上解决:mysq解决

当输入mysql 命令错误的时候,在里面退不出来 ctrl+c;
当id为主键的时候insert 用null填补

二:数据库操作

1.创建数据库
	格式:creae database 数据库名 charset=utf8;
2.删除数据库
	格式:drop database 数据库名;
3.切换数据库
	格式: use 数据库名
4.查看当前选择的数据库
	格式: select database();

三:表操作

1.查看当前数据库中所有表
	格式:show tables;
2.创建表
	格式:create table  表明(列及类型)
	说明:auto_increment 表明自增长  primary key 主键   not null 不为空
	举例: create table student(id int auto_increment primary key , name  varchar(20)  not null, age int  not null, gender bit default 1, address varchar(20) , isDelete bit default 0);
3.删除表
 	格式:drop table 表名;
 4.查看表结构
 	格式:desc 表名;
 5.查看建表语句
 	格式: show create table 表名;
 6.重命名表名
 	格式:rename table 原表名 to 新表名;
 7.修改表
 	格式:alter table 表名 add|change|drop 列名 类型

四:数据操作

1.增
	1.全列插入
		格式:insert into 表名 values(....)
		说明:主键是自动增长,但是需要站位,通常是0,插入成功后以实际	数据为准;
	例子:insert into student values(0,"tom",19,1,"北京",0);
	2.缺省插入
		格式:insert into 表名 (列1,列2,列3,....)  values(值1,值2,值3....)
		实例:insert into student(name,age,address) values("DemoD_",20,"ShangHai");
	3.同时插入多条数据:
		格式:insert into 表名 values(....),(.....),......;
		实例:insert into student values(0,"Alice",20,1,"ShanXi",0),(0,"DemoLi_",20,1,"JinCheng",0);
2.删
	格式:delete from 表名 where 条件;(只有delete from 表名;全删除;)
	实例:delete from student where id=4;
3.改
	格式:update 表名 set 列1=值1,列2=值2,... where 条件
	实例:update student set age=18 where id=3;
	注意:没有条件是所有的都修改;
4.查
	说明:查询表中所有的数据
	格式:select * from 表名;
	例子:select * from student;

五:查

1.基本语法
	格式:select * from 表名 
	说明:
		a.from 关键字后面是表名,表示数据来源
		b.select后面写表中的列名,如果是*表示所有的结果
		c.在select后面的列名部分,可以使用as为列名取别名,这个别名显示在结果中
		d.如果要查询多个列,之间使用逗号分隔
	实例:select name,age from student;
			select name as a,age from student;
			
		
2.消除重复行
	在 select 后面列前面使用distinct可以消除重复的行
	实例:
		select distinct gender from student;
3.条件查询
	a.语法
		select * from 表名 where 条件
	b.比较运算符
		等于			=
		大于			>
		小于			<
		大于等于		>=
		小于等于		<=
		不等于			!=
		实例:
			获取id>1所有的数据
			select * from student where id>1;
			只获取age id>1
			select age from student where id>1;
	c.逻辑运算符
		and		并且
		or 		或者
		not 		非
		实例:
			获取id>1 and  id<3的所有数据
			select * from student where id>1 and id<3;
			获取id>1 and gender=1;
			select * from student where id>1 and gender=1;
	d.模糊查询
		like
		%表示任意多个任意字符
		_表示一个任意字符
		实例:
			查询姓李的数据
			select * from student where name like “李%”;
	e.范围查询
		in:							表示在一个非连续的范围内
		between.....and...	:表示在一个连续的范围内
		实例:
			查询id为1,3,5的数据
			select * from student where id in (1,3,5);
			查询id为5-6的数据
			select * from student where id between 5 and 6;
		
	f.空判断
		注意:null与""是不同
		判断空: is null
		判断非空:is not null
		实例:
			查询没有地址的数据
			select * from student where address is null;
			查询填写地址的数据
			select * from student where address is not null;
			
	g.优先级
		()   > not > 比较运算符 >逻辑运算符
		and 比 or 优先级高
4.聚合
	为了快速得到统计数据,提供了五个聚合函数
	a.count*)		表示计算总行数,*表示列名
	b.max(列) 	表示此列的最大值
	c.min(列)		表示此列的最小值
	d.sum(列)	表示求和
	e.avg(列)		求平均值
	实例:
		查询总共多少个数据
		select count(*) from student;
		select count(id) from student;
		查询女生id最大的数据
		select max(id) from student where gender=0;
		求男生age和
		select sum(age) from student where gender=1;
		求所有人的平均年龄
		select avg(age) frmo student;
5.分组
	按照字段分组,表示此字段相同的数据会被放到一个集合中
	分组后,只能查询到相同的数据列,对于有差异的数据列无法显示在结果中
	可以对分组后的数据进行统计,做聚合运算。
	语法: select 列1,列2,聚合....from  表名 group by 列1,列2,列3,..having 列1,列2,聚合
	实例:
		统计男女生总数;
		select gender,count(*) from student group by gender;
6.排序
	语法:select * from 表名 order by 列1 asc|desc,列2 asc|desc,....
	说明:
		a.将数据按照列1进行排序,如果列·1值相同,则按照列2进行排序
		b.默认按照从小到大的顺序排序
		c.asc升序
		d.desc升序
		实例:将没有删除的数据按年龄排序
		select * from student where isDelete=0 order by age asc;
		select * from student where isDelete=0 order by age desc, order id desc;
		
7.分页
	语法:select * from 表名 limit start ,count;
	说明:start 索引从0开始
	实例:
	select * from student limit 0,3;
	select * from student limit 3,3;
	select * from student where gender =1 limit 0,3;

六:关联

建表语句:
	1.create table class(id int auto_increment primary key, name varchar(20) not null
	,stuNum int not null);
	2.create table students(id int auto_increment primary key,name varchar(20) not 
	null,gender bit default 1,classid int not null, foreign key(classid)references class(
	id));
	插入数据:
	insert into class values(0,"python1",55),(0,"python2",33),(0,"python3",22),(0,"python3",11),(0,"python4",33);
	insert into student values(0,"tom",1,1);
	
	select students.name,class.name from class inner join students on class.id 
	=students.classid;
	分类:
	1.表A inner join 表B;
	表A 与表B匹配的行会出现在结果集中
	2.表A left join 表B;
	表A与表B匹配的行会出现在结果集中,外加表A中独有的数据,未对应的数据使用Null填充
	3.表A right join 表B;
	表A与表B匹配的行会出现在结果集中,外加表B中独有的数据,未对应的数据使用Null填充

Python操作MySQL

Demo1

import pymysql

# 参数1:mysql服务所在主机ip
# 参数2:用户名
# 参数3:密码
# 参数4:要连接的数据库名

db = pymsql.connect("localhost", "root", "", "mysql")
# 没设置密码的话就是空字符

# 创建一个cursor对象

cursor = db.cursor()

sql = "select version()"

# 执行mysql语句
cursor.execute(sql)

#获取返回数据
data = cursor.fetchone()

print(data)

cursor.close()
db.close()

DemoV2

import pymysql


# 参数1:mysql服务所在主机ip
# 参数2:用户名
# 参数3:密码
# 参数4:要连接的数据库名

db = pymysql.connect("localhost", "root", "", "mysql")

# 创建一个cursor对象

cursor = db.cursor()

# sql = "select version()"
sql = "show databases;"

# 执行mysql语句
cursor.execute(sql)

#获取返回数据
data = cursor.fetchone()

print(data)
# ----------------------------------------------
sql = "use student"
cursor.execute(sql)
sql = "show tables"
cursor.execute(sql)
data = cursor.fetchone()
print(data)
sql = "select * from student;"
cursor.execute(sql)
data = cursor.fetchone()
print(data)

# -------------------------------------------
cursor.close()
db.close()

你可能感兴趣的:(Self-taught,Python)