美文网首页Python程序员
数据库与表的增删改查

数据库与表的增删改查

作者: 叫我老村长 | 来源:发表于2018-08-07 20:45 被阅读3次

    掌握三大数据库: mysql redis mongoDb。

    mysql:基于内存的常用的数据库。
    redis:适用于分布式,爬虫。
    mongoDb:文档存储,基于磁盘。

    mysql特点:严谨、高效,安全

    书写规范:

    字段等小写
    sercode语句大写

    表的操作(crud)

    c创建
    u更新
    r读信息
    d删除

    开启数据库

    sudo service mysql start    开启
    (mysql-sever 服务端    mysql-client 客户端)
    mysql -u root -p       -p密码,输入密码  exit退出。
    sudo service mysql stop   停止
    sudo service mysql restart
    

    允许远程连接

    1.找到mysql配置文件并做如下修改:允许远程连接

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
    
    将 bind-address=127.0.0.1 注释掉
    
    或则修改为bind-address= 0.0.0.0
    

    首先登录系统

        mysql -h ip -u root -p
    

    2.授权root用户

    GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
    

    .改.
    %代表所以ip,填写固定ip11.11.111
    ip查看 ifconfig

    3.刷新权限

        FLUSH PRIVILEGES;
    

    mysqld.cnf里面的密码:ZheDht1uoBqNJFd9
    show databases;
    use mysql
    show tables;显示mysql里面表格
    desc user;看结构
    select user,host from user;查询语句

    4.如果要修改,先使用默认账号登录然后输入一下命令:

    update mysql.user set authentication_string=password('password') where user='root'and Host = 'localhost';

    5.修改成功后重启便可以登录便可以使用账号密码登录
    删除mysql

    sudo apt-get autoremove --purge mysql-server-5.7 sudo apt-get remove mysql-server sudo apt-get autoremove mysql-server sudo apt-get remove mysql-common

    清理数据 dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

    创建数据库

    1.CREATE DATABASE class1804;
    SHOW DATABASES;

    2.CREATE SCHEMA class18042;
    SHOW DATABASES;

    创建指定字符集的数据库

    CREATE DATABASE bc DEFAULT charset=utf8;
    CREATE SCHEMA bc1 DEFAULT charset=utf8;
    SHOW DATABASES;
    不存在就创建
    CREATE DATABASE IF NOT EXISTS 数据库名称
    ERROR 1007 (HY000): Can't create database 'bc1'; database exists
    mysql>
    创建重名 报错
    CREATE SCHEMA IF NOT EXISTS bc1 DEFAULT charset=utf8;
    不报错

    查看当前所在数据库

    select database();
    结过:mysql

    选择数据

    use bc1
    select database();
    结果bc1

    CREATE SCHEMA bc1 DEFAULT charset=utf8;
    CREATE SCHEMA IF NOT EXISTS bc1 DEFAULT charset=utf8;

    查看当前数据库编码格式

    show variables like 'character_set_database';


    CREATE DATABASE bc DEFAULT charset=utf8;
    charset小写

    DEFAULT默认
    select user,host from user;

    050 (42S01): Table 'customers' already exists

    ALTER TABLE vendors ADD (vend_age INT NOT NULL DEFAULT 10,class VARCHAR(5) NOT NULL DEFAULT '1804');
    插多字段

    时间戳

    时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不可否认” 服务。
    转换秒10位。毫秒13位。

    数据库引擎

    服务器拿到信息以后让引擎执行。
    默认存储引擎:InnoDb
    show VARIABLES LIKE deefault_storage_engine;
    显示默认支持的引擎。
    SET default_storage_engine
    设置默认引擎

    MySQL表的操作

    创建表

    CREATE TABLE IF NOT EXISTS customers ( userid int NOT NULL AUTO_INCREMENT, name char(50) NOT NULL, address char(200) NOT NULL, email char(50) NOT NULL, PRIMARY KEY(userid) );

    查看表

    SHOW TABLES

    查看表详细信息

    SHOW CREATE TABLE table_name

    查看表结构(DESCRIBE)

    DESC 数据表名;

    注意:
    AUTO_INCREMENT自增
    字符串就不用自增了

    char(50)属于定长,不足50进位,达到50,浪费资源。
    VARCHAR 不浪费资源 不定长

    PRIMARY KEY(userid)
    主键:确保数据的唯一性。书写时,每个数据独占一行,用,进行分开。
    A表的主键在B表做外键。
    A从表 B主表

    更新表(ALTER TABLE)

    添加新字段(列)

    单个:
    ALTER TABLE vendors ADD vend_gender INT NOT NULL DEFAULT 0;

    多个:
    ALTER TABLE ALTER TABLE vendors ADD (vend_age INT NOT NULL DEFAULT 10,class VARCHAR(5) NOT NULL DEFAULT '1804');

    修改字段名(列)

    ALTER TABLE 表名 CHANGE 字段名 新字段名 数据类型;

    ALTER TABLE vendors CHANGE vend_age new int;
    在不改变的情况下修改(类型,约束等)
    ALTER TABLE vendors CHANGE modify 字段名(老的) 类型 约束 属性;

    删除字段名(列)

    ALTER TABLE vendors DROP old;

    修改表名

    ALTER TABLE oldtable RENAME AS newtable;

    RENAME TABLE 数据表名1 To 数据表名2
    RENAME TABLE vendors TO vendorss;

    删除表

    DROP TABLE [IF EXISTS] 数据表名;

    复制表

    CREATE TABLE [IF NOT EXISTS] 数据表名 LIKE 源数据表名;


    除MySQL强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:

    不更新主键列中的值;
    不重用主键列的值;
    不在主键列中使用可能会更改的值。(例如,如果使用一个 名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

    书写规范:default默认值放 在限制之后。
    表id要写数据类型 int。
    int格式后面可以不写约束。

    三大数据库字段类型:数字、字符串、日期

    CREATE TABLE customers ( userid int NOT NULL AUTO_INCREMENT PRIMARY KEY, name char(50) NOT NULL, address char(200) NOT NULL, email char(50) NOT NULL);

    相关文章

      网友评论

        本文标题:数据库与表的增删改查

        本文链接:https://www.haomeiwen.com/subject/uajovftx.html