Mysql 语法-数据类型和对列的操作

数据类型:

MySQL的数据类型
主要包括以下五大类
整数类型: bit 、bool 、tinyint 、smallint 、mediumint 、int 、bigint
浮点数类型: float 、double 、decimal
字符串类型: char 、varchar 、tinyblob 、blob 、mediumblob 、longblob 、
tinytext 、text 、mediumtext 、longtext
日期类型: Date 、DateTime 、TimeStamp 、Time 、Year

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型。
浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度。
float和double在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。

char(M) [0,m],m的范围[0, -1] m 定产字符串
varchar(M) [0,m],m的范围[0,-1]m 0-65535 字节
tinyblob 0-255( -1)字节 不超过 255 个字符的二进制字符串
blob 0-65535( -1)字节 二进制形式的长文本数据
mediumblob 0-16777215( -1)字节 二进制形式的中等长度文本数据
longblob 0-4294967295( -1)字节 二进制形式的极大文本数据
tinytext 0-255( -1)字节 短文本字符串
text 0-65535( -1)字节 长文本数据
mediumtext 0-16777215( -1)字节 中等长度文本数据
longtext 0-4294967295( -1)字节 极大文本数据

Mysql权限工作原理

mysql是如何来识别一个用户的呢?
mysql为了安全性考虑,采用主机名+用户名来判断一个用户的身份,因为在互联网中很难通过用户名来判断一个用户的身份,但是我们可以通过ip或者主机名判断一台机器,某个用户通过这个机器过来的,我们可以识别为一个用户,所以mysql中采用用户名+主机名来识别用户的身份。当一个用户对mysql
发送指令的时候,mysql就是通过用户名和来源(主机)来断定用户的权限。
查看mysql中所有用户
用户信息在mysql.user 表中,如下:
mysql> use mysql;
Database changed
mysql> select user,host from user;

复制表结构+数据

create table 表名 [as] select 字段,… from 被复制的表 [where 条件];

mysql> create table test13 as select * from test11;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from test13;
+---+-----+
| a | b |
+---+-----+
| 1 | 100 |
+---+-----+
1 row in set (0.00 sec)

表中列的管理

添加列
alter table 表名 add column 列名 类型 [列约束];

mysql> drop table IF EXISTS test14;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql>
mysql> create table test14(
-> a int not null AUTO_INCREMENT PRIMARY KEY comment '字段a'
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> alter table test14 add column b int not null default 0 comment '字段b';
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table test14 add column c int not null default 0 comment '字段c';
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into test14(b) values (10);
Query OK, 1 row affected (0.00 sec)

修改列
alter table 表名 modify column 列名 新类型 [约束];
或者
alter table 表名 change column 列名 新列名 新类型 [约束];

原来的表:

mysql> show create table test14;
+--------+--------+
| Table | Create Table |
+--------+--------+
| test14 | CREATE TABLE `test14` (
`a` int(11) NOT NULL AUTO_INCREMENT COMMENT '字段a',
`b` int(11) NOT NULL DEFAULT '0' COMMENT '字段b',
`c` int(11) NOT NULL DEFAULT '0' COMMENT '字段c',
PRIMARY KEY (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
+--------+--------+
1 row in set (0.00 sec)

我们将字段c名字及类型修改一下,如下:

mysql> alter table test14 change column c d varchar(10) not null default ''
comment '字段d';
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table test14;
;;
+--------+--------+
| Table | Create Table |
+--------+--------+
| test14 | CREATE TABLE `test14` (
`a` int(11) NOT NULL AUTO_INCREMENT COMMENT '字段a',
`b` int(11) NOT NULL DEFAULT '0' COMMENT '字段b',
`d` varchar(10) NOT NULL DEFAULT '' COMMENT '字段d',
PRIMARY KEY (`a`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
+--------+--------+
1 row in set (0.00 sec)

删除列
alter table 表名 drop column 列名;

来源:公众号路人甲java

猜你喜欢

转载自blog.csdn.net/qq_41358574/article/details/112954842