Head First SQL 第五章

来源:互联网 发布:你的眼神网络歌手 编辑:程序博客网 时间:2024/05/22 15:26

改写历史~


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

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


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

ALTER TABLE my_contactsADD COLUME phone VARCHAR(11);

如果我们要电话列放在 first_name 列后面,应该:

ALTER TABLE my_contactsADD COLUME phone VARCHAR(11)AFTER first_name;

当然也有 BEFORE/ LAST/ SECOND等等...以此类推


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

修整一个表:

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

ALTER TABLE projektsRENAME TO project_list;


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

ALTER TABLE project_listCHANGE COLUME number proj_id INT NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY (proj_id);

一条语句修改两个列:

ALTER TABLE project_listCHANGE COLUMN descriptionofproj proj_desc VARCHAR(100),CHANGE COLUMN contracttoronjob con_name VARCHAR(30);

注意这里修改了数据类型,有可能导致数据丢失。


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

ALTER TABLE project_listMODIFY COLUMN proj_desc VARCHAR(120);

卸除名叫 start_date 的列:

ALTER TABLE project_listDROP 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_nameSET column_name = newvalue;

例如:

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












0 0
原创粉丝点击