前言
数据库真是用完就忘,下学期要开数据库原理与安全,这章先复习一下基本操作,为以后的深入学习做下准备。
环境以及可能要用到的工具:
- 数据库:MySQL 5.7
- 编程环境:python 3.7 配合MySQLdb包
- 数据库管理工具:DataGrip
文章目录
一、数据库创建
1.1 创建数据库
直接
CREATE DATABASE dbname;
1.2 创建/删除数据库表
comment是我们在Navicat可以看到的列名
在数据库里创建表,如果不带comment,那么column_name就会充当comment的内容。比如我们创建一个学生信息库,可以id varchar(11) comment('学号')
CREATE TABLE table_name # 建议使用【库名.表名】形式
(
column_name1 data_type(size) comment('column_name_show1'),
column_name2 data_type(size) comment('column_name_show2'),
column_name3 data_type(size) comment('column_name_show3'),
....
);
data_type 参数规定列的数据类型(例如 varchar、int、十进制型decimal、日期型date 等)。
size规定长度
二、增/删/改/查
增删改查是MySQL最常用的操作表单的四种方法,为了方便整理,以后学的新内容也在这儿块进行补充。
2.1 INSERT INTO增加/插入
不指定列名:
INSERT INTO table_name
VALUES (value1,value2,value3,...);
指定列名:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
我在利用过去创建好的的数据库做实验的时候,插入总是error,最后发现是限定了数据type,所以要注意这点,这点不会报错提醒。
2.2 SELECT 查询
因为修改和删除的前提都是先去定位数据,所以把查询放在了修改和删除的前边。
- 支持
LIKE
模糊查找。 - 支持
REGEXP
正则表达式查找。 - 支持
distinct
去重查找。 - 支持
order by
排序。 - 支持
group by
分组聚合。
# 查询所有:
SELECT * FROM 表名;
# 指定字段查询
SELECT column_name,column_name FROM table_name;
2.3 UPDATE 修改
修改的前提是查询,先查到要修改的
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
2.4 DELETE 删除
删除数据库或者数据表是drop,删除数据表中某一项是delete
drop table table_name;
drop database database_name;
delete from user where account IS NULL and id IS NULL;
三、常用关键字
名称 | 关键字 | 用法 |
---|---|---|
记录条数 | count | sqlselect count(*) from user where id=1; (返回user 中id等于1的个数) |
分页查询 | LIMIT | SELECT * FROM user LIMIT 5; (返回查询到的前五个结果) |
在···之间 | BETWEEN | select * from user where age between 20 and 30; (跟在where后) |
去重 | DISTINCT | 用于返回唯一不同的值。 |
模糊匹配 | LIKE | select * from user where name like ‘张_%’; (_匹配任意单字符,%匹配任意个,[] [^]类似于正则表达式中的用法) |
分组 | group by | select sex,count(*) from user group by sex; (分组查询男女总人数) |
正则 | REGEXP | SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$'; (查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:) |
排序 | order by | select *from student order by age desc; (查询学生表并按年龄降序排列。desc 降序排列,asc 升序排列) |
- 多条件:
AND
- 空:
IS NULL
- 非空:
IS NOT NULL
- 哪:
WHERE
- 所有:
*
四、使用python执行SQL语句
python里,sql语句用三组""引起来,对指定数据库的**游标cursor进行操作,如果执行错误要进行回滚。
import MySQLdb
sql = """*****\
******\
"""
db = MySQLdb.connect("IP地址", "账号", "密码", "数据库名", charset='utf8')
cursor = db.cursor()
try:
cursor.execute(sql)
except:
db.rollback() #错误回滚
db.close()