为了账号安全,请及时绑定邮箱和手机立即绑定

Python 操作数据库(1)SQL基础

标签:
MySQL Python

一、数据库

  1. 关系型数据库
  • 常见的关系型数据库:SQL Server、MySql、MariaDB、SQLite、ORACLE、PostgreSQL等
  1. 非关系型数据库
  • 常见的非关系型数据看:MongoDB、HBASE、redis、CouchDB、Neo4j、Cassandra、memcached
  • 非关系型数据库又分为:1. 文档型、 2.key-value型、3.列式数据库、图形数据库
    https://pan.baidu.com/s/1i5gjHat 密码: uuqj

二、 MySql

1. 什么是mysql

典型的关系型数据库 ([Mysql](https://baike.baidu.com/item/mySQL/471251?fr=aladdin))
 

2. mysql 基础

(1) 安装配置
  ~~    ~~   安装社区版 5.7
(2)图形化管理工具
phpAdmin 、Navticat
 

3.语法基础

DDL (Data Define Language)

  • CREATE 创建表/数据库
  • ALTER 创建表/数据库
  • DROP 删除表/数据库

DML (Data Manage Language)

  • INSERT
  • UPDATE
  • DELETE
  • SELECT

 

基础:

创建数据库和使用数据库:
- CREATE DATABASE mydatabease ;
- USE mydatabase;
查看已有的数据库:
- SHOW DATABASES;

 

创建学生表格:

     CREATE TEABLE `students` (
    `id` INT NOT NULL AUTO_INCRMENT,
    `name` VARCHAR(200) NOT NULL
   		 ) 

 

常见类型:
- int、char、varchar、datetime
- char、varchar都表示字符串,但char必须占用一定空间,例如200,char一定占满200空间,不管它实际多少字符
- 但varchar只占据实际的字符数量的空间,只表示上限,更加节省空间,一般推荐varchar。
- datetime表示 日期+时间

 
分析学生表的字段:

  • id: 学生的ID
  • name: 学生的名称
  • nickname:学生的昵称
  • sex:性别
  • in_time:入学时间
-- id: 学生的ID
-- name: 学生的名称
-- nickname:学生的昵称
-- sex:性别
-- in_time:入学时间
CREATE TABLE `stuents` (
	`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	`name` VARCHAR(20) NOT NULL,
	`nickname` VARCHAR(20) NULL,
	`sex` CHAR(1) NULL,
	`in_time` DATETIME NULL 
);

 

插入数据
语法:INSERT INTO table_references VALUE(S)…

  • 创建表格时指定编码
CREATE TABLE `stuents2` (
	`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	`name` VARCHAR(20) NOT NULL,
	`nickname` VARCHAR(20) NULL,
	`sex` CHAR(1) NULL,
	`in_time` DATETIME NULL 
)DEFAULT CHARSET 'UTF8';  #指定编码
  • 插入一条数据
INSERT INTO `stuents2` VALUE (2,'张三','三丰','男',now());

 

  • 指定插入字段的名称(使得能自增)不需指定id
INSERT INTO `stuents2` (`name`,`nickname`,`sex`,`in_time`) VALUE ('李四','四小','男',now());
  • tips : 字段名称使用反引号" ` “, 实际内容使用单引号” ’ "
     
  • 插入多行 :
INSERT INTO `stuents2` (`name`,`nickname`) VALUES 
	('李四1','四小x'),
	('李四2','四小2'),
	('李四3','四小3'),
	('李四4','四小4')
;

 

查询数据

  • 语法格式: 有顺序要求

           SELECT 
               select_expr,...
           FROM	table_references
           [WHERE where_definition]
           [GROUP_BY {col_name|expr|position}]
           [HAVING where_definition]
           [ORRDER_BY {col_name|expr|position}
               [ASE|DESC],...]
           [LIMIT {[offset,] row_count}]
    

SELECT `id`,`name`,`nickname` FROM `stuents2` WHERE `sex`='男' ORDER BY DESC LIMIT 1,2;

 

修改数据

语法:

                UPDATE table_references
                    SET col_name1 = expr1 [,col_name2 = expr2]
                [WHERE where_definition]

 
修改性别


UPDATE `students2` SET `sex`='女'  WHERE `sex`='男';
  • 修改时必须注意是否要添加WHERE条件;
  • 如果不添加WHERE,将会修改相应的全部内容。
  • 谨慎操作

 

删除数据

语法: 必须注意是否要限定删除范围

           DELETE FROM table_name 
               [WHERE where_definition]

 

DELETE FROM `students2` WHERE `sex`='男';

  

其他语法

比较不常用的:

  • 新建索引(CREATE INDEX)
  • 修改表(ALTER TABLE)
  • 删除数据库、表、索引、视图等(DROP)

实例1

设计新闻表

                -- ID:新闻的唯一标识
				-- title:新闻标题
				-- types:新闻类型
				-- content:新闻内容
				-- created_at : 发布时间
				-- image:缩略图
				-- author:作者
				-- view_count:浏览量
				-- is_valid:删除标记

操作:

CREATE TABLE `news`(
	`id` INT NOT NULL AUTO_INCREMENT,
	`title` VARCHAR(200) NOT NULL,
	`types`  VARCHAR(20) NOT NULL,
	`content` VARCHAR(2000) NOT NULL,
	`created_at` DATETIME   NULL,
	`image` VARCHAR(300)  NULL,
	`author` VARCHAR(20) NULL,
	`view_count` INT DEFAULT 0,
	`is_valid` SMALLINT 	DEFAULT 1 ,    # 默认值,1为有效新闻,0为无效新闻
	PRIMARY KEY(`id`)
)DEFAULT CHARSET 'UTF8';

** 别忘记语法格式、关键字

** LIMIT number1,number2 用法笔记

  • number1 是偏移量,从0开始
  • number2是每页显示的数量
  • 假如要显示第5页的内容,并且每页显示5条。则 number1=4 * number2 + 1 = 4 * 5+1=21
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消