mysql开始全部日记_【菜鸟数据库学习日记】从头开始学MySQL(3)

1,数据库规范化

根据使用数据的方式来设计数据库的格式,不要储存重复数据,常用到的数据最好单列。

要描述的事物-->信息列表(如何取得信息)-->综合信息拆分-->原子性数据(不一定最小但是效率最高)

原子性的规则:1)具有原子性数据的列中不会有多个类型相同的值;2)具有原子性数据的表中不会有多个存储同类数据的列

设计查询的时候语句越简单越好。LIKE这样的模糊查询在查询精确数据时候很不方便,速度也不快,

第一范式:每个数据行必须包含具有原子性的值;每个数据行必须有独一无二的识别项,即主键。

主键规则:主键不能为NULL;插入新纪录必须指定主键;主键必须简洁;主键值不能被修改;

下面语句返回可以重建表但没有数据的CREATE TABLE 语句,返回的语句中表名和列名都会用反撇号引住,这个可以保留也可以删除。最后还有一句,是指明数据如何存储以及使用的字符集,这一句在默认情况下是不用管的,删了或是保留都不影响。

mysql>SHOWCREATE TABLE your_table;

关键词SHOW的其他用法:

显示表的所有列及其数据类型和其他相关列的细节

mysql> SHOW COLUMNS FROM your_table;

显示所有编了索引的列以及索引类型,例如主键

mysql>SHOW INDEX FROM your_table;

收到控制台的错误信息后,查看详细的错误内容

mysql>SHOW WARNING;

在创建表的时候加上主键列并设置为自动递增.注意主键的规则,

mysql>CREATE TABLE my_table

-->(

-->contact_id  INT NOT NULL AUTO_INCREMENT,

-->name  VARCHAR(8) default NULL,

...

-->PRIMARY_KEY(contact_id)

-->);

创建了上面的表之后可以插入数据,插入数据时可以对主键赋值,也可以不管他,但是赋值的时候一定不能把已有的主键的值赋值给新的主键,不然会出错。

新的插入主键的方法:

mysql>ALTER TABLE my_table

-->ADD COLUMN id INT NOT NULL AUTO_INCREMENT FIRST,

-->ADD PRIMARY KEY(id);

2,改写

关键词 ALTER TABLE 表明要对数据表,RENAME TO 重命名表 ,ADD COLUMN向表中增加一列,CHANGE COLUMN同时改变列名称和类型 ,MODIFY COLUMN只调整该列的数据类型或者位置,DROP COLUMN  删除一列,包括该列的所有数据,

mysql>ALTER TABLE my_table

-->RENAME TO table,

-->ADD COLUMN room INT(5) NOT NULL AUTO_INCREMENT LAST,

-->CHANGE COLUMN id student_id VARCHAR(7) ,

-->MODIFY COLUMN age VARCHAR(3),

-->MODIFY COLUMN name SECOND,

删除列

-->DROP COLUMN gender.

删除主键

-->DROP PRIMARY KEY;

有些RDBMS只有在添加新列时才允许改变顺序。改变顺序用到的关键词:FIRST,SECOND 等序数词,LAST, AFTER   XX,BEFORE XX。

3,寻找模式

从名为location的列的字符串中,取出右侧的两个字符。取左侧的话换成LEFT。

mysql>SELECT RIGHT(location,2)FROM my_table;

从名为location的列的字符串中,取出从第1 个逗号前面的所有子串。要取第二个前面的,换成2 ;要取别的字符前面的,单引号中的字符换成想要的。

mysql>SELECT SUBSTRING_INDEX(location, ',' , 1)FROM my_table;

从起始位置 start_position开始取出your_string字符串的指定长度length的一个字符串

mysql>SELECT SUBSTRING('your_string',start_position,length);

把整个字符串中的字符都改成大写/小写

mysql>SELECT UPPER('your_string');

mysql>SELECT LOWER('your_string);

反转字符串里的字符排序

mysql>SELECT REVERSE('your_string');

去掉字符串左侧/右侧的空格

mysql>SELECT LTRIM('   your_string  ');

mysql>SELECT RTRIM('   your_string  ');

返回字符串长度,也就是字符串中含有的字符数

mysql>SELECT LENGTH('your_string');

以现有列的内容填入新的列,注意UPDATE和SET的搭配,只用名称的话是可以遍历数表的。

用newValue的值填入column_name列

mysql>UPDATE my_table

-->SET column_name=newValue;

从location列右侧取出两个字符作为新的值加入到column_name列

mysql>UPDATE my_table

-->SET column_name=RIGHT(location,2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值