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

1,数据库规范化

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

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

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

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

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

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

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

  mysql>SHOW CREATE 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);





你可能感兴趣的:(【菜鸟数据库学习日记】从头开始学MySQL(3))