Head First SQL 第五章

本文介绍如何使用SQL语句来修改表结构,包括添加、更改和删除列,并展示了如何利用函数进行数据操作,如截取字符串和更新字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改写历史~


朝着数据库里面添加数据,先看上一章结尾的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);
需要多次运行。












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值