数据库的创建与删除
创建数据库
注:
- CREATE DATABASE 不支持 comment。
- COLLATE: 校对集,在某个字符集的情况下,字符集的排列顺序应该是什么,称之为校对集。
1
CREATE DATABASE IF NOT EXISTS `my_db` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
删除数据库
1 | DROP DATABASE IF EXIST `my_db`; |
查看数据库列表
1 | SHOW DATABASES; |
查看数据库DDL
1 | SHOW CREATE DATABASE `my_db`; |
查看当前使用的数据库
1 | SELECT database(); |
切换数据库
1 | USE `my_db2`; |
数据库表的增删改
创建数据库表
注:
CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。VARCHAR列中的值为可变长字符串, 同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节),VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL.
BINARY和VARBINARY类型类似于CHAR和VARCHAR类型,但是不同的是,它们存储的不是字符字符串,而是二进制串. 保存BINARY值时,在它们右边填充0x00(零字节)值以达到指定长度。取值时不删除尾部的字节; 对于VARBINARY,插入时不填充字符,选择时不裁剪字节.
长度限制:
CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串”123”,如果插入数据”1234”,则从高位截取,变为”123”。 VARCAHR同理。
TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度;
FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9;BLOB, TEXT, GEOMETRY or JSON 不能有默认值.
FULLTEXT 索引仅可用于 MyISAM 表, 为 CHAR, VARCHAR, TEXT 列 创建全文索引.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 1. 一般create table 语句
CREATE TABLE IF NOT EXISTS `users` (
`id` INT(11) UNSIGNED NOT NULL [PRIMARY KEY] AUTO_INCREMENT COMMENT '用户id',
`name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名',
`sex` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '性别',
`age` TINYINT(2) UNSIGNED NOT NULL DEFAULT 1 COMMENT '年龄',
`address` TEXT(500) NOT NULL COMMENT '地址',
PRIMARY KEY (`id`) COMMENT '主键',
INDEX `age_idx` (`age`) COMMENT '普通索引',
UNIQUE `name_idx`(`name`(20)) COMMENT '唯一索引',
FULLTEXT `address` (`address`) COMMENT '全文索引'
) ENGINE = MyISAM DEFAULT CHARSET utf8 COLLATE utf8_general_ci AUTO_INCREMENT=1 COMMENT '用户信息表';
# 2. create table like 参照已有表的定义,来定义新的表
CREATE TABLE IF NOT EXISTS `users_like` LIKE `users`;
# 3. 根据select 的结果集来创建表
CREATE TABLE IF NOT EXISTS `user_select` AS SELECT `id`, `name` FROM `users`;
删除数据库表
1 | DROP DATABASE `users`; |
修改表自增起始ID
1 | ALTER TABLE `users` AUTO_INCREMENT=2; |
查看数据库表的列表
1 | SHOW TABLES; |