黑龙江建设厅网站账户竞价托管费用
是记录,我不会记录的特别详细
第10章 创建和管理表
标识符命名规则
- 数据库名、表名不得超过
30
个字符,变量名限制为29
个 - 只能包含 A–Z, a–z, 0–9, _共63个字符
- 数据库名、表名、字段名等对象名中间不要包含空格
- 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使
用`(着重号)引起来 - 保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据
类型在一个表里是整数,那在另一个表里可就别变成字符型了
数据类型
类型 | 类型举例 |
---|---|
整数类型 | TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT |
浮点类型 | FLOAT,DOUBLE |
定点数类型 | DECIMAL |
位类型 | BIT |
日期时间类型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
文本字符串类型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
枚举类型 | ENUM |
集合类型 | SET |
二进制字符串类型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB |
JSON类型 | JSON对象、JSON数组 |
空间数据类型 | 单值:GEOMETRY、POINT、LINESTRING、POLYGON; |
空间数据类型 | 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION |
常用的
数据类型 | 描述 |
---|---|
INT | 从-231到231-1的整型数据。存储大小为 4 个字节 |
CHAR(size) | 定长字符数据。若未指定,默认为1 个字符,最大长度255 |
VARCHAR(size) | 可变长字符数据,根据字符串实际长度保存,必须指定长度 |
FLOAT(M,D) | 单精度,占用4个字节,M=整数位+小数位,D=小数位。 D<=M<=255,0<=D<=30,默认M+D<=6 |
DOUBLE(M,D) | 双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15 |
DECIMAL(M,D) | 高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同。 |
DATE | 日期型数据,格式’YYYY-MM-DD’ |
BLOB | 二进制形式的长文本数据,最大可达4G |
TEXT | 长文本数据,最大可达4G |
创建和管理数据库
创建数据库
//方式1:创建数据库
CREATE DATABASE 数据库名;
//方式2:创建数据库并指定字符集合
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
//方式3:判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
tips:数据库不能改名,一些工具可以改名,它是先建库,再复制所有表到新库,删除旧库.
使用数据库
- 查看当前所有数据库
SHOW DATABASES;
- 查看当前正在使用的数据库
SELECT DATABASE();
- 查看指定库下所有的表
SHOW TABLES FROM 数据库名;
- 查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
SHOW CREATE DATABASE 数据库名\G;//这种在不使用可视化工具的前提下能好看点
- 使用/切换数据库
USE 数据库名;
修改数据库
- 更改数据库字符集
乱码的时候需要用到这条命令
ALTER DATABASE 数据库名 CHARACTER SET 字符集; //字符集就比如utf8,gbk等等
删除数据库
DROP DATABASE 数据库名;
DROP DATABASE IF EXISTS 数据库名;//存在就删,不存在就不执行操作
创建表
- 方式1
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);
//IF NOT EXISTS:若存在该表那么就不创建,反之就创建CREATE TABLE emp (
-- int类型
emp_id INT(8) AUTO_INCREMENT primary key,
-- 最多保存20个中英文字符
emp_name VARCHAR(20),
-- 总位数不超过15位
salary DOUBLE,
-- 日期类型
birthday DATE
);
- 方式2
使用AS subquery选项,将创建表和插入数据结合起来
CREATE TABLE table [(column1,column2,...)] AS subquery;CREATE TABLE e1 AS SELECT * FROM employees;
CREATE TABLE e2 AS SELECT * FROM employeees WHERE 1=2;//创建的emp2是空表
CREATE TABLE dept1
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM employees
WHERE department_id = 80;
查看数据表结构
SHOW CREATE TABLE 表名\G
修改表
这里是指修改表的结构,比如添加/删除/重命名列
添加列
ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 [FIRST | AFTER 字段名];
修改列
修改数据类型,长度,默认值和位置
ALTER TABLE 表名 MODIFY [COLUMN] 字段名1 字段类型 [DEFAULT 默认值] [FIRST | AFTER 字段名2]ALTER TABLE dept MODIFY last_name VARCHAR(30);//把last_name列的数据类型改为varchar(30)
ALTER TABLE dept MODIFY salary double(6,2) default 1000;//把salary的默认值改为1000
--重命名列
ALTER TABLE 表名 CHANGE [COLUMN] 列名 新列名 新数据类型;ALTER TABLE dept CHANGE department_name dept_name varchar(15);//把department_name列改为 dept_name varchar(15)ALTER TABLE 表名 DROP [COLUMN] 字段名;
ALTER TABLE dept DROP COLUMN job_id;
重命名表
- RENAME
RENAME TABLE emp TO emp1;
- ALTER TABLE
ALTER TABLE dept RENAME [TO] dept1;
删除表
DROP TABLE [IF EXISTS] 数据表1 [,数据表2,..,数据表n];
这玩意不能回滚
清空表
删除表中的所有数据,释放表的存储空间
TRUNCATE TABLE test;
不能回滚