初学python之路-day41

数据库的操作

数据库可以看作文件夹,表就是一个个文件,记录或者数据行是一行行数据内容。
1.首先操作数据库: 增加:create database 数据库名称;
#注意在sql语句的后面要加上英文的;结尾 例子 create database db1; 删除:drop database 数据库名称; 例子 drop database db1; 修改:数据库层面没有具体修改指令,删了重建即可 查询:show databases; 使用:use 数据库名称; use db1;
2.数据表操作: 
注意对数据表和数控行进行操作 都要在使用数据库的前提下,use 数据库名称 use db1

2.1增加 新建:
create table 表名 (列名1 列1类型,
列名2 列2类型);
create table t1(
id int ,name char(16)
);

2.2查询:show tables;
desc 表名称;   查看表的结构
show create table 表名称;   查看表的创建过程
        查询过程时若有自增序列可以看到主键自增:
        show session variables like 'auto_inc%';
    set session auto_increment_increment = 2;
    show global  variables like 'auto_inc%';
    set global auto_increment_increment = 2;
           可以查看主键自增的步长并设置

2.3修改:
修改字段:
alter table 表名(t3) change 原列名(name) 新列名和其属性
(username varchar(
32) not null default ''); 新增字段: alter table 表名(t3) add 新列(pwd char(32) not null default ''); 删除字段: alter table 表名(t3) drop 列名(pwd); 2.4删除: drop table 表名; 连带着将数据表中的所有数据都会删掉
3.数据行:
3.1增加
增加1:
insert into  表名 (列1, 列2) values (值1, 值2);
insert into  t1 (id, name) values (1, 'ww');
改进1:
create table 表名 (列名1 列类型
)engine=Innodb charset=utf8;
引擎: Innodb 和 MyIsam   5.5 版本以上默认Innodb
create table t2 (id  int,name char(32) 
)engine=Innodb charset=utf8;

改进2:
create table 表名 (列名1 列类型 auto_increment primary key
)engine
=Innodb charset=utf8; create table t4 (id int auto_increment primary key,
name char(
32) not null default '' )engine=Innodb charset=utf8; auto_increment : 自增 primary key : 主键索引 (作用: 加快查找的速度) not null : 不能为空 default : 默认值 最终格式: create table 表名 (列1 列属性 [是否为null 默认值], 列2 列属性 [是否为null 默认值],.....列n 列属性 [是否为null 默认值] )engine = 存储引擎 charset = 字符集 create table t4 (id int auto_increment primary key,
name char(
32) not null default '',pwd char(32) not null default '' )engine=Innodb charset=utf8; 列的类型: a。数值型 tinyint : 范围: 有符号: -128到127 无符号: 0 到 255 unsigned smallint:范围: 有符号: -32768到32767 无符号: 0 到 65535 unsigned mediumint:范围: 有符号: -8388608到8388607 无符号: 0 到 16777215 unsigned int bigint 的范围更大 float(M,D) 浮点型 decimal(M,D) 定点型 比float更加的精准 M:小数总共多少位 decimal(5, ) D:小数点后面几位 decimal(5, 2) b. 字符串类型: char : 定长 char(32) 这一列的值就是32 优点: 速度快 缺点: 浪费 varchar : 变长 varchar(32) 优点: 不浪费, 节省空间 缺点: 速度慢 text: 文本 范围比较大, 如果存储大量字符的话, 可以使用这个字段 c. 时间类型 date datetime 对于增加数据行还可以: insert into t3 (id, name) values (1, '你好'),(2, '你好啊啊啊啊')之类的
3.2查询:
select * from t3; : 将表中的 所有的列全部列出
select 列名, 列名, 列名 from t3 : 将某一列的值查出

3.3删除:
delete from 表名(t3); 将表中的所有的 数据删除掉, 再次添
加的时候, 继续会延续上一个 ID truncate 表名(t3); 将表中的所有的 数据删除掉, 再次添
加的时候, ID 会重新开始 delete
from 表名(t3) where 条件 name = 'xxxxx'; 3.4修改: update t3 set username='xxxx' where id=3; update t3 set username='xxxx', pwd='xxxxx' where id=3;

外键

由于建立多个表时 若有数据重复或有很长的数据太占用空间,就有了外键

可以重新设计一张表, 这张表 中存放相关信息与数字的对应关系

具体代码:
create table department (
id  int auto_increment primary key, 
depart_name varchar(32)  not null  default ''
)engine=Innodb charset=utf8;
        
insert into department (depart_name) values ('公关'), ('关关'),('关公');
        
create table userinfo (    
id  int auto_increment primary key, 
name varchar(32) not null default '',
depart_id int not null  default 1,
# constraint 外键名(fk_userinfo_depart) foreign key
(列名(depart_id)) references 表名(department)(关联的列名(id)),
constraint fk_userinfo_depart foreign key (depart_id)
references department(id) )engine
=Innodb charset=utf8; 注意 若第二个表存着第一个表的对应关系 那么应该先创建第一个表 不然会报错 insert into userinfo (name, depart_id) values ('root1', 1); insert into userinfo (name, depart_id) values ('root2', 2); 错误的 注意: 创建多个外键的时候, 名称不能一样 =====> 一对多

猜你喜欢

转载自www.cnblogs.com/wangwei5979/p/11013205.html