MySQL入门(三)

一.MySQL表数据类型

http://www.runoob.com/mysql/mysql-data-types.html 详见

变长字符可以存储任意长度的文本.相比定长字符灵活许多,但是性能上有差距,也就是系统处理定长列远快于变长.此外许多DBMS不允许对变长列进行索引!

注意:如果再数值类型内输入01234,将会显示1234,也就是丢失了0这个数字,所以这个是用应该用字符串数据类型.常常订单号什么的会出现这个情况

二.用SQL语句创建表

1. 语句解释

Create Table Products
( prod_id char(10) not null,
  vend_id text     not null);

这里解释一下’Create Table’这是个命令代表创建表,后面跟表名.然后表里所有的列都写在后面的括号里,这次我们在这个表里定义了prod_id和vend_id两列,注意括号里开头必须是列名,再是数据类型,然后是是否包括空值,之后用逗号分隔.

注意:在创建新的表时,指定的表名必须不存在,否则会出错。防止意外覆盖已有的表,SQL 要求首先手工删除该表(请参阅后面的内容),然后再重建它,而不是简单地用创建表语句覆盖它。

2.设定列类型,大小,约束

可以看到我们在上面的每行代码最后我们都写了not null,意思也就是指定这个列为not null 列.这就会阻止插入没有值的数据,如果插入没有值的数据,将返回错误.

注意:如果我们在上面的代码行里不输入not null 直接在数据类型后跟上逗号,那么我们就指定这个列为null列,也就是这列里面的数据可以允许空值存在.当然我们也可以输入null指定null列

主键是其值唯一标识表中每一行的列。只有不允许NULL
值的列可作为主键,允许NULL 值的列不能作为唯一标识。

不要把NULL 值与空字符串相混淆。NULL 值是没有值,不是空字符串。如果指定’’(两个单引号,其间没有字符),这在NOT NULL 列中是允许的。空字符串是一个有效的值,它不是无值。NULL 值用关键字NULL而不是空字符串指定。

3.设定主键

Create Table Products
(prod_id   int  not null  Primary Key);

注意上面说到的,设定主键的列必须为not null列,这时候我们在not null 后面跟上’Primary Key’ 命令 就是设定这一列为主键.

三.用SQL语句向表中添加数据

下面我们来介绍’Insert’ 命令,也就是对表中添加数据.

Insert into Customers
Values ('1006',
	'Toy Land',
	'New York',
	Null);

上面是第一种插入方法,表示将下面的数据插入到Customers 这张表里.这里需要注意的是,我们添加的这一行新数据必须对于Customers表里每一列的数值按照其顺序都进行填充,如果某列值不需要填充,则使用Null.这个方法不太安全,也不推荐使用,因为每次都要把所有列名数据填充一边,而且还必须按照顺序.

下面介绍一个更为安全的方法:

Insert into Customers(cust_id,
								cust_name,
								cust_address
								)
Values ('1006',
	'Toy Land',
	'New York',
	);

这个相比于上面那个方法,我们在表名后面增加了一个括号内容,括号里填充的就是我们要添加的数据对应的列名,比如cust_email这列我们在上面用的是Null,就是我们不需要添加,所以我们在这个方法里,根本不需要加入这个列名,只需要添加我们需要的列名就行了,然后values括号后面的内容,根据我们输入的列名顺序,进行添加值.

当然我们也可以根据在另一张表里检索到的内容来添加到我们正在使用的表中,

INSERT INTO Customers(cust_id,
cust_contact,
cust_email,
cust_name,
)
SELECT cust_id,
cust_contact,
cust_email,
cust_name,

FROM CustNew;

说明:新例子的说明
这个例子从一个名为CustNew 的表中读出数据并插入到Customers
表。为了试验这个例子,应该首先创建和填充CustNew 表。CustNew
表的结构与附录A 中描述的Customers 表相同。在填充CustNew 时,
不应该使用已经在Customers 中用过的cust_id 值(如果主键值重
复,后续的INSERT 操作将会失败)。

上面说的都是插入数据,我们这里提一下复制表的操作如下:

Insert * into CustCopy
From Customers;

就是把Customers表里所有的数据都添加到CustCopy表里(也就是新建一张Custcopy表,作为他的复制).

四.用SQL语句删除表

1.DELETE

Delete From Customers

DELETE语句执行删除操作的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作.Delete只是删除表中的内容,并不是把整个表去除.

2.DROP

删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE 语句即可:

Drop Table Customers;

3.TRUNCATE

Truncate Table Customers 

跟Drop 一样 Truncate跟Table 连用.但是他只是清楚表内所有内容,并不是把整张表删除.

4.不同方式的区别

1.Drop是把整个表删除,Truncate和Delete只是清除表的内容
2.速度上来说Drop>Truncate>Delete

提示:truncate table是将表结构重新建一次速度要比使用delete from快很多,而delete from是一行一行的删除,速度很慢.

3.Delete 可以通过Where来精准选择要删除的行,也可以全部删除表内容.其他两个只能全部删除.
4.Delete 可以回滚删除,其他两个不行

五.用SQL语句修改表

1.修改列名

Alter Table  Customers Rename NewCus;

用Alter命令配合Rename.上面为把Customers表名字改为NewCus

2.修改表中数据

修改数据我们用Update 命令

Update Customers
Set cus_email = '**@gmail.com',
   cust_contact = 'Sam Roberts'
Where cus_id = '1005';

解释一下,首先我们要选择表,也就是在Update 后面跟上你要用的表名,之后输入Set在其后面跟上你需要修改的列,并附上新的值也就是(列=值),最后用Where筛选出你要更新的是哪一个数据,这里用了cus_id进行了指定,也就是选择了cus_id为1005的这行数据对cus_email进行更新.如果没有Where,那么Dbms会对所有数据的cus_email 都进行更新(也就是更新所有行).

我们甚至可以使用Update命令进行删除操作如下:

Update Customer
Set cus_email  = Null
Where  cus_id = '1005';

其实跟上面的理解一样,我们就是对cus_id 为1005顾客的邮件地址进行了更新,只不过这次更新是使得他的邮件地址变成了空值(Null),也就是删除了他的邮件地址信息.如果不指定Where则是表示让整个email列都变成空值.

3.删除行

下面的语句表示从Customers 表中删除一行,也就是删除了整个cus_id 是1005的顾客信息,就是我们表里去掉了这个顾客

Delete From Customers
Where cust_id = '1005';

同样如果省略where,那么就变成了删除整张表的内容,但是并不会删除整个表的本身.但是如果列里有外键,则会抛出异常,这也是防止误删的一个手段.

4.删除列

注意:小心使用ALTER TABLE
使用ALTER TABLE 要极为小心,应该在进行改动前做完整的备份(表结构和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,也许无法删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据。

假设我们要对Customers表删除一列,操作如下:

ALTER TABLE Customers
Drop Column  = cus_phone;

用ALter命令, Alter Table 后面更需要操作的表名,之后输入Drop后面跟自己需要删除的列的列名.

5.新建列

假设我们要对Customers表新增一列,也就是添加一个新属性,操作如下:

ALTER TABLE Customers
ADD cus_phone CHAR(20);

用ALter命令, Alter Table 后面更需要操作的表名,之后输入Add 后面跟自己需要增加的列的信息,列名,字段类型,是否not null,默认值等.

6.新建行

新建行就是我们前面说的Insert

Insert into Customers(cust_id,
								cust_name,
								cust_address
								)
Values ('1006',
	'Toy Land',
	'New York',
	);

作业

项目三

在这里插入图片描述
在这里插入图片描述

项目四

在这里插入图片描述
在这里插入图片描述

…都写完了忘记保存哭哭惹…暂时不写了 直接交作业

项目五

项目六

原数据:
在这里插入图片描述

处理后:
在这里插入图片描述

这里解释一下我们首先用select找出class_id为重复的数据(并且重复次数大于3)也就是通过,这里返回的是筛选后的表:

select class_id from students
group by class_id 
having count(class_id) >3 ;

再接着我们需要用in来完成where后面的条件语句.

class_id in 筛选条件

意思就是匹配 在筛选条件中的 class_id
在这里插入图片描述
然后我们需要通过再添加另一个条件也就是寻找id是最小的数据行:

id in (select min(id) from students);

在这里插入图片描述

最后组合这些条件 用delete

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值