MySql需要注意的知识点

本文介绍了MySQL数据库中关于表结构的修改方法,包括列名、列类型的更改及使用场景。同时涵盖了数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)的基本概念,以及日期时间、字符串处理等常用函数的使用。

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

1、ALTER 对于列的应用:

change 和modify 都可以修改表的定义,不同的是change 后面需要写两次列名,不方便。 但是change 的优点是可以修改列名称,modify 则不能

(1)更改列名
格式:CHANGE old_col_name new_col_name column_definition,保留old和new列名,列名:a —->b 列类型

ALTER TABLE t1 CHANGE a b INTEGER;​

(2)更改列类型,不改列名,保留old和new的列名,即使一样

ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

(3)更改列类型,不改列名。 不保留old列名。

 ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

2、SQL 语句主要可以划分为以下3 个类别。
(1)DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。
(2)DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括insert、delete、udpate 和select 等。
(3)DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant、revoke 等。
3、对于小数的表示,MySQL 分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数则只有decimal 一种表示。定点数在MySQL 内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。

4、MySQL 中有多种数据类型可以用于日期和时间的表示:
(1)、如果要用来表示年月日,通常用DATE 来表示。
(2)、如果要用来表示年月日时分秒,通常用DATETIME 表示。
(3)、如果只用来表示时分秒,通常用TIME 来表示。
(4)、如果需要经常插入或者更新日期为当前系统时间,则通常使用TIMESTAMP 来表示。TIMESTAMP 值返回后显示为“YYYY-MM-DD HH:MM:SS”格式的字符串,显示宽度固定为19 个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。
(5)、如果只是表示年份,可以用YEAR 来表示,它比DATE 占用更少的空间。YEAR 有2 位或4 位格式的年。默认是4 位格式。在4 位格式中,允许的值是1901~2155 和0000。在2 位格式中,允许的值是70~69,表示从1970~2069 年。MySQL 以YYYY 格式显示YEAR
值。
5、MySQL只给表中的第一个TIMESTAMP字段设置默认值为系统日期,如果有第二个TIMESTAMP类型,则默认值设置为0值,即为:

`id1` timestamp NOT NULL default CURRENT_TIMESTAMP,
`id2` timestamp NOT NULL default '0000-00-00 00:00:00'

但是在设定timestamp默认值的时候不能设定为0000-00-00 00:00:00,原因:timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59
6、CHAR 和VARCHAR 很类似,都用来保存MySQL 中较短的字符串。二者的主要区别在于存储方式的不同:CHAR 列的长度固定为创建表时声明的长度,长度可以为从0~255 的任何值;而VARCHAR 列中的值为可变长字符串,长度可以指定为0~255(5.0.3 以前)或者65535(5.0.3以后)之间的值。在检索的时候,CHAR 列删除了尾部的空格,而VARCHAR 则保留这些空格。

7、注意NULL 不能用于“=”比较。

8、CANCAT(S1,S2,…Sn)函数:把传入的参数连接成为一个字符串。任何字符串与NULL 进行连接的结果都将是NULL。

mysql> select concat('aaa','bbb','ccc') ,concat('aaa',null);
+---------------------------+--------------------+
| concat('aaa','bbb','ccc') | concat('aaa',null) |
+---------------------------+--------------------+
| aaabbbccc | NULL |
+---------------------------+--------------------+
1 row in set (0.05 sec)

9、LEFT(str,x)和 RIGHT(str,x)函数:分别返回字符串最左边的x 个字符和最右边的x 个字符。
如果第二个参数是NULL,那么将不返回任何字符串。

mysql> SELECT LEFT('beijing2008',7),LEFT('beijing',null),RIGHT('beijing2008',4);
+-----------------------+----------------------+------------------------+
| LEFT('beijing2008',7) | LEFT('beijing',null) | RIGHT('beijing2008',4) |
+-----------------------+----------------------+------------------------+
| beijing | | 2008 |
+-----------------------+----------------------+------------------------+
1 row in set (0.00 sec)

10、STRCMP(s1,s2)函数:比较字符串s1 和s2 的ASCII 码值的大小。如果s1 比s2 小,那么返回-1;
如果s1 与s2 相等,那么返回0;如果s1 比s2 大,那么返回1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值