sql基本语句

这篇博客详细记录了MySQL数据库的学习过程,包括SQL语句的基础知识,如DQL、DML、DDL、TPL和DCL,以及存储引擎、索引、事务处理、时间监测等。还介绍了数据类型、常用操作如创建、修改、删除表,以及数据的插入、更新和删除。此外,博主分享了SQL查询技巧,如模糊查询、分组、连接查询、子查询等,并提及了PyMySQL库的使用方法。
摘要由CSDN通过智能技术生成


活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…


欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程。您可以从以下3个方面任选其一着手(不强制),或者按照自己的理解发布专栏学习作品,参考如下:

**

创作计划

**

本人学习sql语句做的笔记 

关系型数据库 SQL

数据查询语言 DQL

数据操作语言 DML

数据定义语言 DDL

事务处理语言 TPL

数据控制语言 DCL


引擎

查看MySQL数据库支持的存储引擎

show engines

修改存储引擎

alter table 表名 engine="引擎类型"


索引

创建索引

alter table 表名 add index 索引名(列名)

查看表中已有索引

show index from 表名

删除索引

alter table 表名 drop index 索引名

创建联合索引

alter table 表名 add index (列名1,列名2...)


时间

开启时间监测

set profiling=1

查看执行的时间

show profiles


事务

开始事务

begin 或者 start transaction

临时修改为手动提交事务 #默认自动

set autocommit = 0

提交事务

commit

回滚事务

rollback


清屏

Ubuntu

system clear

windows

system cls


数据类型

主键:primary key

自增:auto_increment

不为空:not null

无符号:unsigned

默认:default

整形

bigint #占8个字节 19

int #占4个字节 9

smallint #占2个字节 5

tinyint #占1个字节 2

浮点型

decimal(总位数,点后位数)

文本

varchar()

枚举类型

enum()

日期时间类型

datetime #允许范围1753-1-1至9999-1-1

smalldatetime #允许范围1900-1-1至2079-1-1


基本操作

启动MySQL:net start MySQL

停止MySQL:net stop MySQL

登入MySQL:MySQL -uroot -p

显示时间:select now()

退出MySQL:exit

查看所有数据库:show databases

创建数据库:create database 名字charset=utf8;

删除数据库:drop database 名字

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

使用数据库:use 名字

创建表:create table 表名(字段名 数据类型 可选的约束条件...)

删除表:drop table 表名

查看当前数据库中的所有表:show tables

查看表结构:desc 表名

表修改添加字段:alter table 表名 add 列名 类型 约束

表修改字段类型:alter table 表名 modify 列名 类型 约束

表修改字段名和字段类型:alter table 表名 change 原名 新名 类型及约束

表修改删除字段:alter table 表名 drop 列名

查看创表SQL语句:show create table 表名

查看创库SQL语句:show create database 库名


查看表所有数据:select * from 表名

查看表部分列数据:select 列名,列名 from 表名

表添加数据 #字符串加""

全列添加

insert into 表名 values(...) #值的循序与表结构字段循序对应

部分列添加

insert into 表名(列名,列名) values(值1,值2)

全列多行添加

insert into 表名 values(...),(...),(...)

部分列多行添加

insert into 表名(列名,列名) values(值1,值2),(值1,值2)

表修改数据

update 表名 set 列名=值,列名=值 where 条件 #where id=值

表删除数据

delete from 表名 where 条件 #where id=值


as关键字(起别名)#as关键字可以省略

给表起别名

select 列名as别名,列名as别名 from 表名as别名

给字段别名

select 列名as别名,列名as别名 from 表名

distinct关键字(去重)

select distinct 列名,列名 from 表名


运算符

where条件语句比较运算符

,>=,=,!=

where条件语句逻辑运算符

and,or,not()


查询

模糊查询

关键字like

多个任意字符:%

一个任意字符:_

范围查询

连续范围

between 值 and 值

非连续范围

in()

空判断查询

空判断

is

非空判断

is not


排序

升序

order by 列名 asc #默认升序可以不写asc

降序

order by 列名 desc


分页显示

limit 开始行索引默认0 , 查询的条数

select * from 表名 limit (n-1)*m,m;


聚合函数

select 聚合函数 from 表名 #通用(*)

求指定列总行数

count(列名)

求指定列最大值

max(列名)

求指定列最小值

min(列名)

求指定列的和

sum(列名)

求指定列平均值

avg(列名)


保留指定小数

round(,值)


ifnull函数判断指定字段是否是空值,如果是空值使用默认值


分组

分组查询 #select 列名1,列名2 from 表名 group by 列名1,列名2

group by

分组数据过滤

having 条件表达式

统计指定分组的信息集合(聚合函数)

group_concat(列名)

#select 列名1,group_concat(列名)from表名 group by 列名1

汇总

with rollup

#select 列名1,聚合函数(列名)from表名group by列名1with rollup


连接查询

内连接查询 #on:表示连接查询条件

inner join

select表.列,表.列from 表1 inner join 表2 on 表1.列名1=表2.列名2

左连接查询

left join

select表.列,表.列from 表1 left join 表2 on 表1.列名1=表2.列名2

右连接查询

right join

select表.列,表.列from 表1 right join 表2 on 表1.列名1=表2.列名2

自连接查询

select值.列,..from表名as值1 inner join表名as值2 on值1.列1=值2.列2

子查询

一个完整的select语句放到括号里面


外键约束

对已存在的字段添加外键约束 #foreign key()references

alter table表名add foreign key(列名)references表名(列名)

创建表是添加外键约束

foreign key(列名)references表名(列名)

删除外键约束

alter table 表名 drop foreign key 外键名


pyMySQL

导包

import pymysql

创建连接对象

conn=pymysql.connect(

host="服务器主机地址", #localhost

port=端口号,

user="用户名",

password="密码",

database="操作的数据库",

charset="操作数据库的编码格式")

获取游标 #目的就是要执行sql语句

cursor=conn.cursor()

准备sql语句

变量="sql语句"

异常语句

try:

执行sql语句

cursor.execute(准备的sql语句)

提交数据到数据库

conn.commit()

捕获异常

except Exception as e:

conn.rollback() #回滚的意思

无论是否异常都要执行的代码

finally:

关闭游标

cursor.close()

关闭连接

conn.close()


获取查询的结果集

变量=游标.fetchone() #一条数据 元组类型

变量=游标.fetchall() #多条数据 元组类型


防止sql语句注入

%s #用(元组,列表,字典) 传参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

壹心 lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值