作者:爱吹泡泡de鱼_436 | 来源:互联网 | 2023-05-17 12:25
数据库的操作数据库可以看作文件夹,表就是一个个文件,记录或者数据行是一行行数据内容。1.首先操作数据库:增加:createdatabase数据库名称;#注意在sql语句的后面要加
数据库的操作
数据库可以看作文件夹,表就是一个个文件,记录或者数据行是一行行数据内容。
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); 错误的
注意:
创建多个外键的时候, 名称不能一样
=====> 一对多