数据库的操作
数据库可以看作文件夹,表就是一个个文件,记录或者数据行是一行行数据内容。
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); 错误的 注意: 创建多个外键的时候, 名称不能一样 =====> 一对多