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。