SQL语言是什么?有什么作用?
概念:
结构化查询语言,用于操作数据库,通用于绝大多数的数据库软件
SQL的特征
1. 大小写不敏感 需要以 ; 号结尾
show databases;-查看当前数据库
注意点:无;一般不报错,但是可能会对程序造成影响
show databases;
Show Databases;
show
databases;
2. 支持单行、多行注释
快捷键-Ctrl + /
-- 单行注释(--后面一定要加上空格)
# 单行注释(后面可以不加上空格,推荐加上)
/*
多行注释
*/
SQL语言的分类
数据定义-DDL-创建、删除、展示、(使用、查看)
定义:库的创建删除、表的创建删除等
数据库
查看数据库 | show databases; |
使用数据库 | use 数据库名称; |
创建数据库 | create database 数据库名称 [charset utf8]; |
删除数据库 | drop database 数据库名称; |
查看当前使用的数据库 | select database(); |
注意点: | 查看数据库-show databases;添加复数s 其余一般为database |
表单-需要提前选择数据库
查看表 | show tables; |
删除表 | drop tables 表名称; drop table if exists 表名称; |
创建表 | create table 表名称( 列名称 列类型, 列名称 列类型, ...); |
创建表-列表类型
整数类型 | int |
浮点数类型 | float |
文本类型 | varchar |
日期类型 | date |
时间戳类型 | timestamp |
数据操作-DML
定义:新增数据、删除数据、修改数据
插入 | insert into 表[(列1, 列2, ...,列N)] values(值1, 值2, 值3, ..., 值N), (值1, 值2, 值3, ..., 值N)(值1, 值2, 值3, ..., 值N), ..., (值1, 值2, 值3, ..., 值N); | 列-代表表单的属性, 值-代表要按行插入的内容 |
删除 | delete from 表名 where 条件判断; | 按行删除,可以通过条件判断来进行修改 无while-delte from student; 整张数据表进行删除 |
更新 | update 表名 set 列=值 where 条件判断; | 可以通过where后面的条件指定删除值 无while-update student set name = '张学有',全部的name变为张学友 |
条件判断:列, 操作符, 值 | 操作符:=, <, >, <=, >=, != 等 id = 5 id < 6 id >= 5 id != 4 |
注意事项:
进行数据操作后,要在不同的页面进行刷新-不然无法显示修改后的信息-最后的展示页面刷新
字符串的值,出现在SQL语句中,必须要用单引号包围起来
字符串类型的表单可以存放数字
就有部分相同的标签id,重复执行,结果会不同
# 确认数据库
use world;
use student;
# 展示
show databases;
show tables;
# 创建
create database student charset utf8;
create database test charset utf8;
create table student(
id int,
name varchar(20),
age int);
# 删除
drop database student;
drop table student;
# 当前数据库
select database();
# 仅插入id列的数据
insert into student(id) values(10001), (10002), (10003);
# 插入全部列的数据
insert into student(id, name, age) values(10001, '周杰伦', 31), (10002,'王力宏', 33), (10003, '林俊杰', 26);
# 插入全部列数据, 快捷写法
insert into student values(10001, '周杰伦', 31), (10002, '王力宏', 33), (10003, '林俊杰', 26);
# 基础语法
# 删除
delete from student; # 整张表格进行删除
delete from student where id = 10001;
delete from student where id > 10002;
delete from student where id < 10003;
# 更新的语法
update student set name = '张学友' where id = 10002;
# 查询id 和 name 两个列
select id, name from student;
# 查询全部列
select id, name, age from student;
# 查询全部的列,快捷写法
select * from student;
# select + where
select * from student where name = '张学友';
数据控制-DCL
新增用户、删除用户、修改密码、权限管理
数据查询-DQL
基于需求查询和计算数据
select 列|聚合函数|*FROM 表
where ...
group by ...
order by ... [ASC | DESC] //asc表示升序排序,bsc表示降序排序
limit n[, m]
截止到目前学习到的的关键字,需要注意:
where、group by、order by、 limit均可以按照需求进行填写,没,可不写
select 和from 必须写
执行顺序:
from-> where->group by 和聚合函数-> select->order by ->limit
基础查询
基础查询的语法 | select 字段列表|* from表 | select id, name from student; select * from student; | 查询id,name字段的列表 查询整张表格 |
过滤查询的语法 | select + where | select * from student where name = '张学友'; | 查询带有name = '张学友'的列表 |
分组聚合
分组聚合和语法
select字段|聚合函数 from 表 [where 条件] group by列
聚合函数有:
sum(列) 求和
avg(列) 求平均值
min(列) 求最小值
max(列) 求最大值
count(列|*) 求数量
分组聚合的注意事项
group by 出现了那个列, 那个列才能出现在select 中的非聚合中
select id, name, avg(age) from student group by name;
注意点:
第一行先写使用数据库-use world;
按顺序执行-顺序结构
按行操作-点击行后运行
字符串使用 ' ' 进行引用
create database studnet1 charset utf8;
select database();
create table student1(
id int,
gender varchar(20),
age int);
drop table student1;
insert into student(id, name, age) values(10001, '男', 31), (10002,'男', 33), (10003, '女', 33);
# 按照性别来分组
select gender, avg(age), sum(age), min(age), min(age), max(age), count(gender) from student1 group by gender;
-- 同样效果
-- select gender, avg(age), sum(age), min(age), min(age), max(age), count(*) from student1 group by gender;
# 选择输出-进行排序
select * from student where age > 20;
# 年纪最小在上,年纪最大在下,升序排列
select * from student where age > 20 order by age asc;
# 年纪最大在上,年纪最小在下,降序排列
select * from student where age > 20 order by age asc;
# 控制输出个数
select * from student limit 10, 5; # 输出表的第10行后的5行数据
# 分组
select age, count(*) from student where age > 20 group by age;
order by age limit 3; # 进行排序,限制输出,仅输出3个
python-数据库基础操作
python中使用什么第三方库来操作MySQl?如何安装
使用第三方库为:pymysql
安 装:pip install pymysql
如何获取连接对象
from pymysql import Connection 导包
Connection(主机,端口,账号,密码)即可以连接对象
连接对象.close()关闭和MYSQL数据库的连接
如何执行SQL查询
通过连接对象调用cursor()方法,得到游标对象
游标对象,execute()执行sql语句
什么是commit提交?
pymysql库在执行对数据库有修改操作的行为时,是需要通过连接对象的commit成员方式进行确定的
只有确认的修改,才能生效
如何自动提交呢?