Python 3 mysql 表操作
2024-10-19 21:38:56
Python 3 mysql 表操作
表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段
id,name,qq,age称为字段,其余的,一行内容称为一条记录
一 、创建表
语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] ); 注意: 1. 在同一张表中,字段名是不能相同 2. 宽度和约束条件可选 3. 字段名和类型是必须的
创建表 create database db1 charset utf8;
use db1;
create table t1(
id int,
name varchar(50),
sex enum('male','female'),
age int(3)
); show tables; #查看db1库下所有表名
desc t1;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | enum('male','female') | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+-----------------------+------+-----+---------+-------+ select id,name,sex,age from t1;
Empty set (0.00 sec) select * from t1;
Empty set (0.00 sec) select id,name from t1;
Empty set (0.00 sec)
insert into t1 values
(1,'egon',18,'male'),
(2,'alex',81,'female')
;
select * from t1;
+------+------+------+--------+
| id | name | age | sex |
+------+------+------+--------+
| 1 | egon | 18 | male |
| 2 | alex | 81 | female |
+------+------+------+--------+ insert into t1(id) values
(3),
(4);
select * from t1;
+------+------+------+--------+
| id | name | age | sex |
+------+------+------+--------+
| 1 | egon | 18 | male |
| 2 | alex | 81 | female |
| 3 | NULL | NULL | NULL |
| 4 | NULL | NULL | NULL |
+------+------+------+--------+
往表中插入数据
乱码问题:重要!!!
create database db1 charset latin1;
use db1;
create table t1(name varchar(20));
show create table t1; #查看表,发现表默认与数据db1的字符编码一致
insert into t1 values('林'); #插入中文出错,因为latin1不支持中文
ERROR 1366 (HY000):
mysql> #解决方法一:删除库db1,重建db1,字符编码指定为utf8 #解决方法二:修改
alter table t1 charset utf8; #修改表t1的编码
insert into t1 values('林'); #虽然t1的编码改了,但是t1的字段name仍然是按照latin1编码创建的
ERROR 1366 (HY000):
alter table t1 modify name varchar(20); #需要重新定义下字段name
insert into t1 values('林');
select * from t1;
+------+
| name |
+------+
| 林 |
+------+
乱码问题
二 、数据表相关操作
desc tab_name 查看表结构
show columns from tab_name 查看表结构
show tables 查看当前数据库中的所有的表
show create table tab_name 查看当前数据库表建表语句
修改表ALTER TABLE 1. 修改表名
ALTER TABLE 表名
RENAME 新表名; 2. 增加字段
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…],
ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] FIRST;
ALTER TABLE 表名
ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; 3. 删除字段
ALTER TABLE 表名
DROP 字段名; 4. 修改字段
ALTER TABLE 表名
MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
ALTER TABLE 表名
CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…]; 示例:
1. 修改存储引擎
alter table service
engine=innodb; 2. 添加字段
alter table student10
add name varchar(20) not null,
add age int(3) not null default 22; alter table student10
add stu_num varchar(10) not null after name; //添加name字段之后 alter table student10
add sex enum('male','female') default 'male' first; //添加到最前面 3. 删除字段
alter table student10
drop sex; alter table service
drop mac; 4. 修改字段类型modify
alter table student10
modify age int(3);
alter table student10
modify id int(11) not null primary key auto_increment; //修改为主键 5. 增加约束(针对已有的主键增加auto_increment)
alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 6. 对已经存在的表增加复合主键
alter table service2
add primary key(host_ip,port); 7. 增加主键
alter table student1
modify name varchar(10) not null primary key; 8. 增加主键和自动增长
alter table student1
modify id int not null primary key auto_increment; 9. 删除主键
a. 删除自增约束
alter table student10 modify id int(11) not null; b. 删除主键
alter table student10
drop primary key;
修改表ALTER TABLE
复制表结构+记录 (key不会复制: 主键、外键和索引)
create table new_service select * from service; 只复制表结构
select * from service where 1=2; //条件为假,查不到任何记录
Empty set (0.00 sec)
create table new1_service select * from service where 1=2;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 create table t4 like employees;
复制表
删除表 DROP TABLE 表名; 删除表记录: delete from tab_name where 子句 清空表记录: 1 delete from tab_name
2 truncate tab_name (数据量大时推荐使用)
删除表相关操作
最新文章
- Windows操作系统下tomcat安装版图文教程
- Ionic2系列-将beta升级到RC1
- 调用WebServices超时
- Struts 2
- BZOJ2982——combination
- all ,any,abs的使用
- js动态添加行
- Winform调用系统的剪切,复制,粘贴文件功能
- 使用phantomjs操作DOM并对页面进行截图需要注意的几个问题
- kFreeBSD 7.0于2013/05/04发布 桌面环境 GNOME 3....
- kaili linux中文乱码
- C# 数据结构--排序[下]
- JNI- java.lang.UnsatisfiedLinkError: Native method not found
- 利用Python实现kNN算法
- CSS3关于过渡效果的问题
- 【读书笔记】【深入理解ES6】#2-字符串和正则表达式
- go 可变参数
- NuGet的简单使用
- Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中
- BZOJ1146 [CTSC2008]网络管理Network 树链剖分 主席树 树状数组