python_day16_DB_SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_day16_DB_SQL相关的知识,希望对你有一定的参考价值。


// 创建

MariaDB [(none)]> create database xiong;


// 创建库的时候指定字符编码

MariaDB [(none)]> create database if not exists xiong1 charset 'gbk';


// 查看所有表

MariaDB [(none)]> show databases;


// 查看数据库的创建信息

MariaDB [(none)]> show create database xiong;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| xiong    | CREATE DATABASE `xiong` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+


// 查看表的创建信息

MariaDB [xiong1]> show create table fristtab;


// 删除库

MariaDB [(none)]> drop database xiong;


// 约束条件 

非空:  not null 
唯一键:unique
主键:  primary key 
自动增长: auto_increment


创建第一张表

MariaDB [(none)]> use xiong1
Database changed
MariaDB [xiong1]> CREATE TABLE fristtab(
    ->         id SMALLINT primary KEY,
    ->         name VARCHAR(25),
   			   /* 定长13位*/
    ->         phone CHAR(13),
    ->         addr VARCHAR(300)
    -> );
Query OK, 0 rows affected (0.19 sec)


// create 用法

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name) }


// 创建表并复制fristtab的表结构,只复制表的结构

MariaDB [xiong1]> create TABLE frist2 like fristtab;


// 复制表结构并且复制表内信息

MariaDB [xiong1]> create TABLE frist3 SELECT * from frist;


// 查看表详细信息

MariaDB [xiong1]> desc fristtab;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | smallint(6)  | NO   | PRI | NULL    |       |
| name  | varchar(25)  | YES  |     | NULL    |       |
| phone | char(13)     | YES  |     | NULL    |       |
| addr  | varchar(300) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)


// 修改操作

// 修改数据库的字符编码

MariaDB [(none)]> alter database xiong1 charset 'utf8';


// alter table 用法

ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]


// 添加一个字段

MariaDB [xiong1]> ALTER TABLE fristtab ADD mail SMALLINT(6);


// 添加多个字段

MariaDB [xiong1]> ALTER TABLE fristtab ADD A INT,
              		ADD B INT ,
              		ADD C INT;


// 修改字段类型

// 语法  
alter table table_name modifry 字段名 类型 [约束条件] [first after 字段]


// 修改Mail字段为varchar非空

MariaDB [xiong1]> ALTER TABLE fristtab modify mail VARCHAR(6) not NULL ;


// 修改Mail字段为varchar非空, 在id字段后插入

MariaDB [xiong1]> ALTER TABLE fristtab modify mail VARCHAR(6) not NULL after id;


// 同时修改多个字段

MariaDB [xiong1]>  ALTER TABLE fristtab modify B SMALLINT,
              modify C SMALLINT;


// 修改字段名称

// 语法 alter table table_name change old_字段 new_字段 类型 [约束条件] [first after 字段]


// 修改字段名称由Mail改为mails  ,不能同时修改两个

MariaDB [xiong1]> alter table fristtab change mail mails varchar(5) not null after name;


// 删除一个字段

MariaDB [xiong1]> ALTER TABLE fristtab DROP mails;


// 修改表名   

//语法  rename table old_tablename to new_tablename

MariaDB [xiong1]> rename table fristtab to first;


// 增删改查

// insert 语法
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]


// 增加一行数据 按已有的列一个一个对比添加

MariaDB [xiong1]> insert INTO frist (id,name,mails,phone,addr) VALUES (1,"xiong","88com","1111111111111","bjaa");


// 添加如果id自动增就可以忽略它, 但如果想忽略中间的比如mails那它就会报错了

MariaDB [xiong1]> insert INTO frist (name,phone,addr) VALUES ("uu","2222222222222","cxs");
ERROR 1364 (HY000): Field 'mails' doesn't have a default value


// 自动增长id, 让addr为空就没问题

MariaDB [xiong1]> insert INTO frist (name,mails,phone) VALUES ("uu",'cc',"2222222222222");
Query OK, 1 row affected (0.03 sec)

// 查询结果为      |  3 | uu    | cc    | 2222222222222 | NULL |


// 插入多行  以逗号做为分隔,继续写下一行

insert INTO frist (name,mails,phone) VALUES ("gg",'8.com',"8888"),
                        ("hh",'9.com',"9999");


// 没有列表的时候插入数据, 需要一个字段对应一个值

MariaDB [xiong1]>  INSERT INTO frist VALUES ('uu','cc','11111','shahai');
ERROR 1136 (21S01): Column count doesn't match value count at row 1


// 成功的写法应为:

MariaDB [xiong1]> INSERT INTO frist VALUES ('4','uu','cc','11111','shahai');


// 添加多行

MariaDB [xiong1]> INSERT INTO frist VALUES  ('7','nn','10.com','101010','mobu'),
                             ('8','sd','11.com','111111','debu');


// 更新       更新时一定要加一个条件where 否则表中所有的数据都会被修改

// update 语法:  
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]


// 将name为uu的名称更换为repa

MariaDB [xiong1]>  UPDATE frist set name="repa" WHERE name="uu";


// 将id为3的 name 改为repa3 地址修改为hebei

MariaDB [xiong1]> update frist set name="repa3",addr="hebei" where id=3;


// 删除语法

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    FROM tbl_name[.*] [, tbl_name[.*]] ...
    USING table_references
    [WHERE where_condition]


// 删除id为2的

MariaDB [xiong1]> delete from frist where id=2;


// 删除id为3的或者名称为repa3

MariaDB [xiong1]> delete from frist where id=3 and name="repa3";


// 删除Id为7的 并且名称为hh的两行或一行数据

MariaDB [xiong1]> delete from frist where id=7 or name="hh";


// 删除表

MariaDB [xiong1]> delete from frist


// 清空表   慎用之

MariaDB [xiong1]> truncate FROM frist;


// 例  创建一个与frist一样的表用于测试, 清空

MariaDB [xiong1]> create TABLE frist3 SELECT * from frist;
Query OK, 3 rows affected (0.26 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [xiong1]> select * from frist3;
+----+-------+-------+---------------+--------+
| id | name  | mails | phone         | addr   |
+----+-------+-------+---------------+--------+
|  1 | xiong | 88com | 1111111111111 | bjaa   |
|  4 | repa  | cc    | 11111         | shahai |
|  5 | gg    | 8.com | 8888          | NULL   |
+----+-------+-------+---------------+--------+
3 rows in set (0.00 sec)

MariaDB [xiong1]> truncate frist3;
Query OK, 0 rows affected (0.16 sec)

MariaDB [xiong1]>
MariaDB [xiong1]> select * from frist3;
Empty set (0.00 sec)



以上是关于python_day16_DB_SQL的主要内容,如果未能解决你的问题,请参考以下文章

python_day12_html

Python_day_01

PYTHON_DAY_05

python_day14_前端_JS

铁乐学Python_day09_函数

python_day11_IO模型