Head First SQL 第五章

    xiaoxiao2021-04-18  71

    改写历史~

    朝着数据库里面添加数据,先看上一章结尾的ALTER例子:

    ALTER TABLE my_contacts ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (contact_id);

    这时候我们要加一个列存放电话号码:

    ALTER TABLE my_contacts ADD COLUME phone VARCHAR(11); 如果我们要电话列放在 first_name 列后面,应该:

    ALTER TABLE my_contacts ADD COLUME phone VARCHAR(11) AFTER first_name; 当然也有 BEFORE/ LAST/ SECOND等等...以此类推

    =======================================================

    修整一个表:

    首先如果表名称不太对,可以改为:

    ALTER TABLE projekts RENAME TO project_list;

    然后修改列名称,修改列的同时注意是不是要修改列的属性?比如存储类型,NULL之类的:

    ALTER TABLE project_list CHANGE COLUME number proj_id INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (proj_id); 一条语句修改两个列:

    ALTER TABLE project_list CHANGE COLUMN descriptionofproj proj_desc VARCHAR(100), CHANGE COLUMN contracttoronjob con_name VARCHAR(30); 注意这里修改了数据类型,有可能导致数据丢失。

    单纯修改数据类型还有别的方法:

    ALTER TABLE project_list MODIFY COLUMN proj_desc VARCHAR(120);

    卸除名叫 start_date 的列:

    ALTER TABLE project_list DROP COLUMN tart_date; 注意这也是删除了数据。

    ================================================================

    比如我们要选择一列里面的最后两个字符,City Name, XX

    可以:

    SELECT RIGHT(location, 2) FROM my_contacts;同理左边两个:

    SELECT LEFT(location, 2) FROM my_contacts;

    如果要选择逗号前面: SELECT SUBSTRING_INDEX(location, ',', 1) FROM my_contacts;

    这里1表示第一个逗号,如果是2就是第二个逗号前面的内容:

    SUBSTRING_INDEX 寻找单引号里面的字符串,取出它前面的所有内容,

    location是列名称

    =======================================================================

    还有一些有意思的辅助函数:

     

    截取一部分 your_string 字符串,截取起始位置为start_position,长度为length

    格式SUBSTRING(your_string, start_position, length)

    SELECT SUBSTRING('San Antonio, TX', 5, 3);

    把整组字符串改为大写或者小写:

    格式UPPER(your_string)

    SELECT UPPER('uSa');

    格式LOWER(your_string)

    SELECT LOWER('spaGHEtti');

     

    反转字符串里面的字符排序:

    格式REVERSE(your_string)

    SELECT REVERSE('spaGHEtti');

     

    返回清除多余空格后的字符串:

    ①清除左侧,格式LTRIM(your_string):

    SELECT LTRIM(' dogfood ');

    ①清除右侧,格式RTRIM(your_string):

    SELECT RTRIM(' catfood ');

    返回字符串中的字符数量:

    SELECT LENGTH('San Antonio, TX');

     ===============================================================

    改变每一行中同一列的值:

    UPDATE table_name SET column_name = newvalue; 例如:

    UPDATE my_contacts SET state = RIGHT(location, 2);需要多次运行。

    转载请注明原文地址: https://ju.6miu.com/read-675403.html

    最新回复(0)