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


    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);
    
    #注意,这里的索引指的是键的名字,而不是列名
  • 相关阅读:
    Mac下安装zsh(Oh My ZSH)的shell,替代原有的bash
    Mac下配置环境变量重启后不生效解决(.bash_profile vs .bashrc)(bash/zsh下不加载.bashrc问题解决)
    Mac下配置环境变量(转)
    Jenkins配置Publish Junit test result report(转)
    Mac下配置Java Web开发环境(Mac 10.12)
    Mac下配置idea(Mac 10.12)
    Sublime Text 3安装插件(Mac 10.12)
    Sublime Text 3新建工程
    Mac下快速新建txt文件
    Mac下配置maven和集成到ecclipse(Mac 10.12)
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/8546368.html
Copyright © 2020-2023  润新知