sql语句规范

修改表名称:rename table 原始表名称 to 新的表名称;

SQL注释

一般在编写sql脚本文件时需要添加合理的注释信息。
单行注释:select 1; #说明信息 或者 select 1; – 说明信息。
多行注释: /*开头 */收尾

数据类型

数值型

  • 5种整型 tinyint、smallint、mediumint、int和bigint,主要区别就是取值范围不同,还可以在类型前添加一个限制词unsigned,不允许添加负数;
  • 3种浮点型:不能精确存放float和double,可以精确存放decimal和numeric。
    sql语句规范_第1张图片
    unsigned设置列为无符号型,只能存放大于等于0的数据,没有负数。当使用无符号类型时取值范围由于没有负数部分,从而导致上限扩大一倍。
create table t3(id int unsigned);
mysql> insert into t3 value(-10); -- 不允许存储负数

ERROR 1264 (22003): Out of range value for column 'id' at row 1

mysql> insert into t3 value(255); -- 存储数据的上线扩大一倍
Query OK, 1 row affected (0.01 sec)

可以在类型名后添加括号,其中包含一个正整数,例如int(5),这里的含义并不是要求只能存放5位长度的整数;含义是当进行查询时自动使用空格填充到5个长,如果真实数据长度大于5,则按实际输出。

mysql> create table t4(id int(2));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t4 values(99999);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t4 values(9);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t4;
+-------+
| id |
+-------+
| 99999 |
| 9 |
+-------+
2 rows in set (0.00 sec)

decimal和numeric作为字符串存储浮点数,可以实现浮点数的精确存储,并不是float和double种使用
二进制浮点数存储。
使用方法numeric(总位宽,小数位数),小数位数必须小于等于总位宽;小数位数最大值30,总位宽最大值为65,注意可能存储的数据会超出范围,其中的符号位和小数点不占位宽。

mysql> create table t5(id numeric(5,3));
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t5 values(99.999);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t5 values(-99.999); -- 位宽统计中符号位不算
Query OK, 1 row affected (0.01 sec)

mysql> insert into t5 values(100); -- 整数超出范围报错
ERROR 1264 (22003): Out of range value for column 'id' at row 1

mysql> insert into t5 values(9.1235); -- 小数位数多余则自动四舍五入
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> insert into t5 values(9.1234);
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from t5;
+---------+
| id |
+---------+
| 99.999 |
| -99.999 |
| 9.124 |
| 9.123 |
+---------+
4 rows in set (0.00 sec)

int和numeric

  • int类型不能保存小数位,存储小数时会自动进行四舍五入
mysql> create table t6(id int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into t6 values(99.99);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t6;
+------+
| id |
+------+
| 100 |
+------+
1 row in set (0.00 sec)
  • numeric可以保存小数位,如果小数位数为0,可以模拟得到int类型的存储效果。采用的实际存储方式为字符串。查询效率远低于int。
mysql> create table t7(id numeric);
Query OK, 0 rows affected (0.03 sec)

mysql> desc t7;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id | decimal(10,0) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
1 row in set (0.00 sec)

数值列的扩展属性

标识符命名

数据库涉及的字符规范,注意不是语法规则,属于建议性质的规则:

  • 采用a-z英文字母、数字0-9和下划线_组成,共63个字符,不能出现其他字符,除非是注释;
    • 不区分大小写
    • 使用中文字符实际上是不会有语法错误的,但是不建议
  • 一般命名长度不要超过30个字符的系统限制,变量名称由于需要使用@标识符,所以长度限制为29;
  • 数据库对象、变量的命名都采用英文字符,禁止使用中文命名,绝对不允许在对象名称中间出现空
    • 如果在命名过程中破坏规则实际上引入反引号就好`,注意不是单引号
    • create tablet 1(id int);
  • 小心保留字,尽量保证命名中不采用保留字,避免容易产生冲突;
  • 注意开发中字段名称和类型名称的一致性

你可能感兴趣的:(数据库学习笔记,数据库)