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的主要内容,如果未能解决你的问题,请参考以下文章