python进阶10 MySQL补充    编码、别名、视图、数据库修改

一、编码问题

#MySQL级别编码
#修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf
default-character-set = utf8 character-set-server =utf8
collation-server= utf8_general_ci #最佳实践
#1、无论mysql是否设置了对的编码都无所谓
#2、创建数据库的时候指定CHARSET utf8
#3、如果数据库的某张表需要别的编码,在创建表的时候指定 #python常用编码分为 utf8 gdk ASCII,其中utf8兼容ASCLL,gbk为纯中文 #创建库时指定库编码:
CREATE DATABASE mydb CHARACTER SET gbk;#创建数据库mydb的时候指定编码为gbk #创建数据表时指定的编码:
CREATE TABLE mytb( id INT ) CHARSET utf8;#创建数据表mytb是指定编码为utf8

二、别名

#作用有两个,一个用于展示,另一个用于子查询

#展示
#举个栗子:原来的表头是name,number,age,为了可以展示给中国人看名字,学号,年龄,可以如下操作
SELECT name AS 名字,number AS 学号,age AS 年龄 FROM students; #子查询
#举个栗子:如果一张表由19班和18班的人混合在一起,将19班和18班分开后出现了两张表,这个时候如果要查询这两张表,就需要用到别名 SELECT * FROM (SELECT * FROM students WHERE klass=19);#这种情况会报错,ERROR 1248 (42000): Every derived table must have its own alias(每张表必须要有他自己的别名) #正确展示
SELECT * FROM (SELECT * FROM students WHERE klass=19) AS tb; #给后面的部分一个别名 tb ,这样就可以实现自查询了

三、视图

#作用:
#如果说一个查询后的表使用频率比较高,可以用视图来封装这个查询,以便多次利用节省代码
#视图不是真的表,里面没有数据,只是封装了个查询而已
#查询视图的时候看上去像是查询一个表,其实只是间接地调用了那个被封装的查询 #创建一个视图
CREATE VIEW students_19 AS SELECT * FROM students WHERE klass=19; #封装了“19班”查询的视图 #修改一个视图
ALTER VIWE students AS SELECT * FROM students WHERE klass=18; #将students_19 这个视图的内容改为18班的内容

四、表结构修改

  修改列

#背景
#通常情况下,应该一开始就尽量的设计好,因为数据库一旦设计完成,最好不要大改。但是,谁都不能保证,我的表永远够用,随时有可能需要改动。因此,我们还是要了解一下,修改表结构。
#注意:表结构修改,一般也不是开发区做。 #补充命令
DESC tb_name ;#表描述
SHOW KEYS FROM tb_name;#表中键
ALTER TABLE ...#主命令:修改表
#添加列
ADD COLUMN ... ALTER TABLE students ADD COLUMN gender BOOL;#将gender列添加到最后一列
#序位:FIRST (第一) AFTER (在...后) ALTER TABLE students ADD COLUMN gender BOOL NOT NULL DEFAULT TRUE FIRST ;#将gender列添加到第一列,加上非空并添加默认值TRUE ALTER TABLE students ADD COLUMN gender BOOL NOT NULL DEFAULT TRUE AFTER klass; #将gender列添加到klass后面,加上非空并添加默认值TRUE
#删除列
DROP COLUMN ALTER TABLE students DROP COLUMN gender;#删除gender列
#修改列
#仅修改列:
MODIFY COLUMN ... ALTER TABLE students MODIFY COLUMN gender BOOL NOT NULL DEFAULT TRUE AFTER age;#将gender列移动到age后面,并添加非空和默认值 #带重命名
ALTER TABLE students CHANGE COLUMN birth birthday DATETIME ;#将birth列改为birthday的一个DATETIME 类型列

  修改键

#添加约束建
ADD PRIMARY KEY
ALTER TABLE students ADD PRIMARY KEY(number);#为number列添加之间约束(唯一键也是类似) ALTER TABLE students ADD UNIQUE KEY (aaaaaa);#为aaaaaa列添加唯一键约束 ALTER TABLE students ADD UNIQUE KEY (number);#在number为主键的前提下,这个操作会移除主键约束,但是会保留非空
#删除约束键
#删除主键
DROP PRIMARY KEY ALTER TABLE students DROP PRIMARY KEY ;#删除主键 ALTER TABLE students DROP KEY number;#删除唯一键number #显示创建信息的时候,会出现UNIQUE KEY 'numebr' ('numebr') UNIQUE KEY表列名,中间number是键名,后面的number是哪些列,无论是创建还是删除的时候,都是操作键名,而不是键
#注意:这里的number值的是键的名字而不是列名
#无功能键(索引)
#背景:如果说查找表的时候是按照某一列来查找的,那么这一列就可以添加索引 #添加索引
ADD KEY
ALTER TABLE students ADD KEY (name); #删除索引
DROP KEY
ALTER TABLE students DROP KEY (name); #注意,这里的索引指的是键的名字,而不是列名

python进阶10 MySQL补充 编码、别名、视图、数据库修改的更多相关文章

  1. python进阶08 MySQL基础补充

    python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...

  2. python进阶07 MySQL

    python进阶07 MySQL 一.MySQL基本结构 1.认识MySQL #MySQL不是数据库,它是数据库管理软件 #MySQL如何组织数据 #如何进入MySQL数据库 #其他注意事项 #以表格 ...

  3. python进阶09 MySQL高级查询

    python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...

  4. python(10)- 字符编码

    一 什么是编码? 基本概念很简单.首先,我们从一段信息即消息说起,消息以人类可以理解.易懂的表示存在.我打算将这种表示称为“明文”(plain text).对于说英语的人,纸张上打印的或屏幕上显示的英 ...

  5. Python全栈开发之MySQL(三)视图,存储过程触发器,函数,事务,索引

    一:视图 1:什么是视图? 视图是指存储在数据库中的查询的SQL语句,具有简单.安全.逻辑数据独立性的作用及视点集中简化操作定制数据安全性的优点.视图包含一系列带有名称的列和行数据.但是,视图并不在数 ...

  6. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  7. MySQL进阶:约束,多表设计,多表查询,视图,数据库备份与还原

    MySQL进阶 知识点梳理 一.约束 1. 外键约束 为什么要有外键约束 例如:一个user表,一个orderlist 如果现在想要直接删除id为1的张三,但是orderlist里还有用户id为1的订 ...

  8. Python自动化 【第十二篇】:Python进阶-MySQL和ORM

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...

  9. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

随机推荐

  1. python 列表之队列

    列表实现队列操作(FIFO),可以使用标准库里的 collections.deque,deque是double-ended quene的缩写,双端队列的意思,它可以实现从队列头部快速增加和取出对象. ...

  2. kettle监控销售人员当月每天任务完成率_20161107周一

    1.上面是目标表,其中激活客户数为当月每天之前30天未下单的客户 2.写SQL SELECT a.销售员,c.当月销售确认额,a.当月订单额,b.当月首单数,b.当月激活数, a1,b.b1,b.c1 ...

  3. ACM学习历程—HDU1716 排列2(dfs && set容器)

    Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数.   Input 每组数据占一行,代表四张卡片上的数字( ...

  4. js 时间格式处理插件 moment

    官网: http://momentjs.cn/docs/#/plugins/ 各种API官网上都有详细的例子,这里就不做一一说明. 重点讲两个常用的: 一.获取当前日期 moment().format ...

  5. MySql 官方存储引擎

    存储引擎是为不同的表类型处理 SQL 操作的 MySql 组件.InnoDB 是默认的.最通用的存储引擎,也是官方推荐使用的存储引擎,除非一些特定案例.MySql 5.6 中的 CREATE TABL ...

  6. 单机11g ogg 双向DML复制

    环境说明: Linux为Linux 2.6.32-573.el6.x86_64 Oracle为 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Pr ...

  7. Python3解leetcode Same Tree

    问题描述: Given two binary trees, write a function to check if they are the same or not. Two binary tree ...

  8. POJ1860(ford判环)

    Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 24243   Accepted: 881 ...

  9. JS---设置简易红绿灯

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. iOS端IM开发从入门到填坑

      让App聊起来 IM开发从入门到填坑Demo IM的实现方式 拿来主义,使用第三方IM服务 IM的第三方服务商国内有很多,底层协议基本上都是基于TCP的,类似有网易云信.环信.融云.极光IM.Le ...