mysql中,一个信息表有很多字段,是把他拆分成几个表呢,还是就在一个表中记录,哪种更好?
1、维护数据
2、行转列
觉得你还是应该用php去写。非要用mysql本身的话给个参考:
mysql> select * from a;+------+--------+------+----+| id | name | num1 | bb |+------+--------+------+----+| 1 | a, | 2 | 3 || 2 | b,c, | 2 | 4 || 3 | d,e,f, | 2 | 5 |+------+--------+------+----+3 rows in set (0.00 sec)mysql> delimiter //mysql> create procedure `strsplit1`(in str3 varchar(2)) -> begin -> declare i int(10); -> declare j int(10); -> declare k int(10); -> declare str1 varchar(100); -> declare str4 varchar(1000); -> declare str5 varchar(100); -> -> select count(*) into i from a; -> if i!=0 then -> drop table if exists tmp_table1; -> CREATE TEMPORARY TABLE tmp_table1 like a; -> end if; -> -> set j=0; -> while j select id,name into str1,str4 from a limit j,1; -> select instr(str4,str3) into k from dual; -> if k=0 then -> insert into tmp_table1(id,name) values(str1,str4); -> end if; -> while k!=0 do -> select substring_index(str4,str3,1) into str5 from dual; -> insert into tmp_table1(id,name) values(str1,str5); -> select mid(str4,k+1) into str4 from dual; -> select instr(str4,str3) into k from dual; -> end while; -> set j=j+1; -> end while; -> -> select * from tmp_table1; -> end -> //Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;最后结果:mysql> call strsplit1(',');+------+------+------+----+| id | name | num1 | bb |+------+------+------+----+| 1 | a | NULL | 1 || 2 | b | NULL | 2 || 2 | c | NULL | 3 || 3 | d | NULL | 4 || 3 | e | NULL | 5 || 3 | f | NULL | 6 |+------+------+------+----+6 rows in set (0.25 sec)Query OK, 0 rows affected (0.30 sec)
一般情况下,在一张表中字段比较多是没任何问题的
这样通过一张表结构就可以查询到所有的商家数据
写sql的增删查改的语句也比较简单,性能比较高
如果是分开几个表,就需要用到外码,左右联接查询之类的,这样性能反而比较低
所以,还是建议把这些数据都写在一张表里
如果,在查询的时候不需要用到联系方式这些数据
只要在select语句中不写那个字段就行了
也不会说看起来很冗杂
在mysql中怎样显示表里的内容
select * from 表名称 即可。如果是要查询某一个表某一个列的在这个表中的详细信息,可以用 select * from 表名称 where 列名称=筛选条件 如学号,姓名等,中文字段或特殊字段需加‘’(‘小明’)等。
sql数据库里面:数据项是一列还是一格,表项是一列还是一格,表头是第一格...
sql 是指数据库查询语言,拿mysql举例 一个数据库包含多个表,一个表有多行,一行包含多列 表的理解,类似excel里面的二维表格,就是一张完整的表格 一行对应一个记录(又叫做元组)描述的是一个完整的实体对象 一列对应一个字段,描述的是这个实体的属性信息 拿人作为举例,张三,李四两个人,一个人表示一行...
如何判断消息已读或未读?mySql数据库中如何储存处理?
可以给这张表增加一个字段,0为读,1为没读,然后在写一个触发器,效果是当某条数据被查询时,将新增字段改为读。这样就可以进行确认,那条数据没读,那条数据读了。
php里查询MySQL一条中文信息,生成一个XML文件,为什么文件是空的,用英文...
XML 文件编码的问题,建议使用UTF_8编码
用mysql语句怎样把一组数据里AB距离最短的信息提取出来?
Select * From 表 t1 Where abs(a-b)=(select min(a-b) from 表 t2 where t1.a=t2.a)
怎么在MySQL数据数据库中查询一个字符,马上就得到相关字符的数据信息...
用通配符%,即查询字符串为%s%然后输出此字段。s即为你要查的字符。这些课本上都有讲的,好好看书
在mysql中查看创建好的数据库信息的语法格式是
在mysql中查看创建好的数据库信息的语法格式是CREATEDATABASE数据库名称。根据查询相关公开信息显示,创建数据库就是在数据库系统中划分一块存储数据的空间,在MySQL中,语法格式为:CREATEDATABASE数据库名称。语法格式即语法形式,这是相对于语法意义而言是表达语法意义的外部形式标志。
mysql数据库进行多数据源操作,一个可以连接,写的第二个数据源连接不上...
先用mysql客户端连接一下看看有没有问题,排除这个问题之后,再看mysql的端口是不是3306
命令行删除Mysql数据库表中的一个字段,报错Duplicate entry '' for k...
因为要删除的字段是主键,所以不能删除。先取消主键闰关系,再删除。
...最好是(oracle、mysql、mssql)的。谢谢了。
最好是(oracle、mysql、mssql)的?请问你究竟是要哪个数据库的?Oracle的话就通过触发来做吧 SQL> CREATE TABLE T_TRI (ID VARCHAR2(10) NAME VARCHAR2(10));表已创建。SQL> CREATE SEQUENCE SEQ_TRI MINVALUE 1 START WITH 1 INCREMENT BY 1 NOCACHE;序列已创建。SQL> CREATE OR REPLACE ...
伯牙吾台采君维: 看你需要对表作什么操作 一般情况下,在一张表中字段比较多是没任何问题的 这样通过一张表结构就可以查询到所有的商家数据 写sql的增删查改的语句也比较简单,性能比较高 如果是分开几个表,就需要用到外码,左右联接查询之类的,这样性能反而比较低 所以,还是建议把这些数据都写在一张表里 如果,在查询的时候不需要用到联系方式这些数据 只要在select语句中不写那个字段就行了 也不会说看起来很冗杂
安化县15555176369: mysql中一个表的字段太多会不会影响效率 - ?
伯牙吾台采君维: 绝对会,一般的表很少超过20个字段,通常多字段的表会根据数据的用途拆分成多个表,经常读的表且字段数据定长的放一个表,不常用且变长的放一个表,另外适当做缓存
安化县15555176369: mysql中,一个表有多个字段是主键可不可以?可以的话,建表语句怎么写? - ?
伯牙吾台采君维: 可以,那叫复合主键 create table sc ( studentno int, courseid int, score int, primary key (studentno,courseid) );更详细的可以去搜复合主键的用法
安化县15555176369: MySQL 一个表中的字段太多有什么影响,如查询数据等问题.... - ?
伯牙吾台采君维: 太多是多少?========== 一般说来没什么大的影响.如果用select * 来查可能会慢一些.内存消耗大些.查询数据快慢主要还是取决于数据总量及sql语句本身.有没有建立索引,写的sql能否用到索引等等.
安化县15555176369: mysql,一张表如果字段太多会对性能有影响吗 - ?
伯牙吾台采君维: 字段多只是这个表的列比较多,性能方面和这个关系不大. 如果行记录较多,才会有可能影响性能.
安化县15555176369: mysql中 一张表放很多字段还是 多张表关联,效率更高一些? - ?
伯牙吾台采君维: 这个并不是某一种固定的说法的,要看你具体的业务的.比如,你把许多字段放在一张表里,可能这个查询方法速度快了,但是会导致其他的业务方法效率很慢或者跟本没有办法实现.要具体考虑整个系统来设计数据库的表的,如果就一个方法来说的话,一般放在一张表里效率会好一点,一般项目在优化过程中也会用空间换时间的方法.
安化县15555176369: mysql中一个表有50个字段多吗 - ?
伯牙吾台采君维: 那要看表的结构了!如果基本都是一次获取的需求,50个也不多.----------------------------------------------------------------- 你把表结构的列类型占据的空间加和,看看是不是磁盘块的倍数,比如一个磁盘块是8kb,结果你的行集合占了9kb,这样就不好了!你最好是 4kb 或是 接近 8kb,或是2kb 等 ,如果是2kb,那么4个行一个块.----------------------------------------------------------------- 这可是黄金经验,你至少也要加个一百来分吧!哇哈哈!
安化县15555176369: mysql一个表最多有多少个字段 - ?
伯牙吾台采君维: 在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度).当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息.SQL对每个表中行的数量没有直接限制,但它受数据库存储空间的限制.每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间.
安化县15555176369: MySQL的一个表最多可以有多少个字段 - ?
伯牙吾台采君维: 您好: 在MySQL中,每个数据库最多可创建20亿个表. 一个表允许定义1024列. 每行的最大长度为8092字节(不包括文本和图像类型的长度) 但一般用几十个字段已经很多了. 字段越多,性能越差...
安化县15555176369: 查询出Mysql数据库中一个表的所有字段???? - ?
伯牙吾台采君维: --通过如下语句得到当前Sql server中所有的数据的名称: use master select [name] from [sysdatabases] order by [name] go-- 查询数据库中的所有用户表 use [DBname] select [id], [name] from [sysobjects] where [type] = 'u' order by [name]--通过上...