Python学习—数据库篇之SQL语句

一、数据库级别

1.显示数据库

show databases;

默认数据库:
  mysql - 用户权限相关数据
  test - 用于用户测试数据
  information_schema - MySQL本身架构相关数据

2.创建数据库

# utf-8  (推荐使用)
CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

# gbk
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

3.删除数据库

drop database 数据库名称;

4.使用数据库

use 数据库名称;

二、表级别

1.显示表

show tables;     ---显示表
desc 表名;       ---显示表字段

2.创建表

create table 表名(
    列名  类型  是否可以为空,
    列名  类型  是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8

-- InnoDB为数据库引擎的一种,支持事务操作

是否可空,null表示空,非字符串
       not null    - 不可空
       null        - 可空

是否可以为空

创建列时可以指定默认值,当插入数据时如果未主动设置值,则自动添加默认值
            create table tb1(
                nid int not null defalut 2,
                num int not null
            )

默认值

自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
            create table tb1(
                nid int not null auto_increment primary key,
                num int null
            )
            或
            create table tb1(
                nid int not null auto_increment,
                num int null,
                index(nid)
            )
            注意:1、对于自增列,必须是索引(含主键)。
                 2、对于自增可以设置步长和起始值
                     show session variables like ‘auto_inc%‘;
                     set session auto_increment_increment=2;
                     set session auto_increment_offset=10;

                     shwo global  variables like ‘auto_inc%‘;
                     set global auto_increment_increment=2;
                     set global auto_increment_offset=10;

自增

 主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
主键的好处:约束,加速查找
            create table tb1(
                nid int not null auto_increment primary key,
                num int null
            )
            或
            create table tb1(
                nid int not null,
                num int not null,
                primary key(nid,num)
            )

主键

外键,一个特殊的索引,只能是指定内容
            creat table color(
                nid int not null primary key,
                name char(16) not null
            )

            create table fruit(
                nid int not null primary key,
                smt char(32) null ,
                color_id int not null,
                constraint fk_cc foreign key (color_id) references color(nid)
            )

外键

外键示例:创建一张学生信息表和一张班级信息表,将学生表中的class_no和班级表中的nid相关联

建立外键约束

相当于将学生表中的class_no和班级表中的nid约束起来

当再向student表中插入数据时,如果class_no不在class表的nid的值域内,则报错

3.删除表

drop 表名;       ---直接删除表
delete from 表名;  ---清空表内容
truncate table 表名; ---清空表内容,速度快,有自增时清空表后插入数据会重新开始编号

4.查询表

select * from 表名;  ----查询表内容

5.修改表

添加列:alter table 表名 add 列名 类型
删除列:alter table 表名 drop column 列名
修改列:
        alter table 表名 modify column 列名 类型;  -- 类型
        alter table 表名 change 原列名 新列名 类型; -- 列名,类型

添加主键:
        alter table 表名 add primary key(列名);
删除主键:
        alter table 表名 drop primary key;
        alter table 表名  modify  列名 int, drop primary key;

添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键:alter table 表名 drop foreign key 外键名称

修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

原文地址:https://www.cnblogs.com/cdc1216/p/10486955.html

时间: 2024-10-03 20:12:50

Python学习—数据库篇之SQL语句的相关文章

Python学习—数据库篇之SQL补充

一.SQL注入问题 在使用pymysql进行信息查询时,推荐使用传参的方式,禁止使用字符串拼接方式,因为字符串拼接往往会带来sql注入的问题 1 # -*- coding:utf-8 -*- 2 # author: cdc 3 # date: 2019/3/18 4 5 import pymysql 6 7 conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='cdc19951216',db='test',

Python学习—数据库篇之索引

原文地址:https://www.cnblogs.com/cdc1216/p/10604727.html

走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能

原文:走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能 最近公司来一个非常虎的dba  10几年的经验 这里就称之为蔡老师吧 在征得我们蔡老同意的前提下  我们来分享一下蔡老给我们带来的宝贵财富 欢迎其他的dba来拍砖  目录 1.什么是执行计划?执行计划是依赖于什么信息.2. 统一SQL语句的写法减少解析开销3. 减少SQL语句的嵌套4. 使用“临时表”暂存中间结果5. OLTP系统SQL语句必须采用绑定变量6. 倾斜字段的绑定变量窥测问题7. begin tran的事务要

python读取excel表格生成sql语句 第一版

由于单位设计数据库表·,都用sql.不知道什么原因不用 powerdesign或者ermaster工具,建表很痛苦  作为程序猿当然要想办法解决,用Python写一个程序解决 需要用到 xlrd linux下 sudo pip install xlrd 主要是适用于db2数据库 excel 表结构 其中 number是不正确的字段类型 不知道同事为啥这么设置.这里程序里有纠错,这个程序就是将sql语句拼好. __author__ = 'c3t' # coding:utf-8 import xlr

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷

原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEclipse中的window->show View->other 调出.DB浏览器. 步骤2: 步骤3:输入db,然后选择DB Brower. 步骤4:单击空白处右键. 步骤5:选择相应的数据库类型. 步骤6: Driver name :填上自己需要的名字 Connection name :jdbc:

python之django直接执行sql语句

python之django直接执行sql语句 sql = 'select * from stu' info = 模型类.objects.raw(sql)

通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷

通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下:     步骤1:通过MyEclipse中的window->show View->other 调出.DB浏览器.   步骤2:     步骤3:输入db,然后选择DB Brower.   步骤4:单击空白处右键.     步骤5:选择相应的数据库类型.     步骤6: Driver name :填上自己需要的名字 Connection name :jdbc:mysql://localhost

各种数据库分页查询sql语句大全

在显示记录条目时往往要用到分页,一种常用的办法是利用各种数据库自带的定位接口对原始查询语句进行改写,从而只取出特定范围的某些记录.不同的数据库,查询定位接口是不一样的,下面做一汇总: 数据库 分页查询语句 说明 MySQL    "QUERY_SQL limit ?,?"            使用limit关键字,第一个"?"是起始行号, 第二个"?"是返回条目数 Oracle SELECT * FROM ( SELECT A.*, ROWNU