徐州网站制作费用,在线做漫画的网站,建设一个网站的支出,百度广州分公司怎么样基础知识
在 MySQL 中#xff0c;一个完整的数据存储过程总共有 4 步#xff0c;分别是#xff1a;创建数据库、确认字段、创建数据表、插入数据。 要先创建一个数据库#xff0c;而不是直接创建数据表#xff1a;从系统架构的层次上看#xff0c;MySQL 数据库系统从大到…基础知识
在 MySQL 中一个完整的数据存储过程总共有 4 步分别是创建数据库、确认字段、创建数据表、插入数据。 要先创建一个数据库而不是直接创建数据表从系统架构的层次上看MySQL 数据库系统从大到小依次是数据库服务器、数据库、 数据表、数据表的 行与列 。MySQL 数据库服务器之前已经安装。所以从创建数据库开始。
标识符命名规则
数据库名、表名不得超过30个字符变量名限制为29个必须只能包含 A–Z, a–z, 0–9, _共63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个MySQL软件中数据库不能同名同一个库中表不能重名同一个表中字段不能重名必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用请在SQL语句中使 用 着重号引起来保持字段名和类型的一致性在命名字段并为其指定数据类型的时候一定要保证一致性假如数据类型在一个表里是整数那在另一个表里可就别变成字符型了。
MySQL中的数据类型
类型说明整数类型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、LONGBLOBJSON类型JSON对象、JSON数组空间数据类型单值GEOMETRY、POINT、LINESTRING、POLYGON集合MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION
数据类型描述INT从-2^31 到 2^31-1的整型数据。存储大小为 4个字节CHAR(size)定长字符数据。若未指定默认为1个字符最大长度255VARCHAR(size)可变长字符数据根据字符串实际长度保存必须指定长度FLOAT(M,D)单精度占用4个字节M整数位小数位D小数位。 DM255,0D30默认MD6DOUBLE(M,D)双精度占用8个字节DM255,0D30默认MD15DECIMAL(M,D)高精度小数占用M2个字节DM650D30最大取值范围与DOUBLE相同。DATE日期型数据格式’YYYY-MM-DD’BLOB二进制形式的长文本数据最大可达4GTEXT长文本数据最大可达4G
创建和管理数据库
创建数据库
方式1 创建数据库
CREATE DATABASE 数据库名;CREATE DATABASE mytest1;
SHOW CREATE DATABASE mytest1;方式2 创建数据库并指定字符集’ ‘
CREATE DATABASE 数据库名 CHARACTER SET 字符集;方式3 判断数据库是否已经存在不存在则创建数据库 推荐
CREATE DATABASE IF NOT EXISTS 数据库名;DATABASE 不能改名。一些可视化工具可以改名它是建新库把所有表复制到新库再删旧库完成的。
使用数据库
查看当前所有的数据库 查看当前连接中的数据库都有哪些
SHOW DATABASES; #有一个S代表多个数据库查看当前正在使用的数据库
SELECT DATABASE(); #使用的一个 mysql 中的全局函数查看指定库下所有的表
SHOW TABLES FROM 数据库名;查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
# 或者
SHOW CREATE DATABASE 数据库名\G使用/切换数据库
USE 数据库名;要操作表格和数据之前必须先说明是对哪个数据库进行操作否则就要对所有对象加上“数据库名.”。
修改数据库
更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如gbk、utf8等删除数据库
方式1 删除指定的数据库
DROP DATABASE 数据库名;方式2 删除指定的数据库 推荐
DROP DATABASE IF EXISTS 数据库名;创建表
创建方式1
必须具备 1.CREATE TABLE权限 2.存储空间 语法格式
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);加上了IF NOT EXISTS关键字则表示如果当前数据库中不存在要创建的数据表则创建数据表如果当前数据库中已经存在要创建的数据表则忽略建表语句不再创建数据表。
必须指定 1.表名 2.列名(或字段名)数据类型长度 可选指定 1.约束条件 2.默认值
CREATE TABLE IF NOT EXISTS myemp1( #需要用户具备创建表的权限。
id INT,
emp_name VARCHAR(15), #使用VARCHAR来定义字符串必须在使用VARCHAR时指明其长度。
hire_date DATE
);
#查看表结构
DESC myemp1;
#查看创建表的语句结构
SHOW CREATE TABLE myemp1; #如果创建表时没有指明使用的字符集则默认使用表所在的数据库的字符集。
#查看表数据
SELECT * FROM myemp1;创建方式2
使用 AS subquery 选项将创建表和插入数据结合起来 指定的列和子查询中的列要一一对应 通过列名和默认值定义列
CREATE TABLE emp1 AS SELECT * FROM employees;
CREATE TABLE emp2 AS SELECT * FROM employees WHERE 12; -- 创建的emp2是空表CREATE TABLE myemp2
AS
SELECT employee_id,last_name,salary
FROM employees;DESC myemp2;
DESC employees;SELECT *
FROM myemp2;查看数据表结构
在MySQL中创建好数据表之后可以查看数据表的结构。MySQL支持使用 DESCRIBE/DESC 语句查看数据表结构也支持使用 SHOW CREATE TABLE 语句查看数据表结构。
SHOW CREATE TABLE 表名\G使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句还可以查看存储引擎和字符编码。
修改表
修改表指的是修改数据库中已经存在的数据表的结构。
使用 ALTER TABLE 语句可以实现向已有的表中添加列修改现有表中的列删除现有表中的列重命名现有表中的列。
追加一个列
ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST;修改一个列
可以修改列的数据类型长度、默认值和位置 修改字段数据类型、长度、默认值、位置的语法格式如下
ALTER TABLE 表名 MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名2】;ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) ;ALTER TABLE myemp1
MODIFY emp_name VARCHAR(35) DEFAULT aaa;重命名一个列
使用 CHANGE old_column new_column dataType子句重命名列。语法格式如下
ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);删除一个列
删除表中某个字段的语法格式如下
ALTER TABLE 表名 DROP [COLUMN] 字段名
SHOW DATABASES;ALTER TABLE myemp1
DROP COLUMN my_email;重命名表
方式一 使用RENAME
RENAME TABLE emp
TO myemp;方式二
ALTER table dept
RENAME [TO] detail_dept; -- [TO]可以省略删除表
在MySQL中当一张数据表 没有与其他任何数据表形成关联关系 时可以将当前数据表直接删除数据和结构都被删除所有正在运行的相关事务被提交所有相关索引被删除语法格式
IF EXISTS 的含义为如果当前数据库中存在相应的数据表则删除数据表如果当前数据库中不存在相应的数据表则忽略删除语句不再执行删除数据表的操作。 举例DROP TABLE 语句不能回滚。
清空表
TRUNCATE TABLE语句
删除表中所有的数据释放表的存储空间 举例TRUNCATE TABLE detail_dept; TRUNCATE语句不能回滚而使用 DELETE 语句删除数据可以回滚
DCL中COMMIT与ROLLBACK的使用
COMMIT提交数据。一旦执行COMMIT则数据就被永久的保存在了数据库中意味着数据不可以回滚。 ROLLBACK回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。
DELETE FROM emp2;
#TRUNCATE TABLE emp2;
SELECT * FROM emp2;
ROLLBACK;
SELECT * FROM emp2;TRUNCATE TABLE 比 DELETE 速度快且使用的系统和事务日志资源少但 TRUNCATE 无事务且不触发 TRIGGER有可能造成事故故不建议在开发代码中使用此语句。 说明TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。
DDL 和 DML 的说明
① DDL的操作一旦执行就不可回滚。指令SET autocommit FALSE对 DDL 操作失效。(因为在执行完 DDL 操作之后一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit FALSE影响的。) ② DML的操作默认情况一旦执行也是不可回滚的。但是如果在执行DML之前执行了 SET autocommit FALSE则执行的 DML 操作就可以实现回滚。
拓展
表删除 操作将把表的定义和表中的数据一起删除并且MySQL在执行删除操作时不会有任何的确认信息提示因此执行删除操时应当慎重。在删除表前最好对表中的数据进行 备份 这样当操作失误时可以对数据进行恢复以免造成无法挽回的后果。 同样的在使用 ALTER TABLE 进行表的基本修改操作时在执行操作过程之前也应该确保对数据进行完整的 备份 因为数据库的改变是 无法撤销 的如果添加了一个不需要的字段可以将其删除相同的如果删除了一个需要的列该列下面的所有数据都将会丢失。
新特性
在MySQL 8.0版本中InnoDB表的DDL支持事务完整性即 DDL操作要么成功要么回滚 。DDL操作回滚日志写入到data dictionary数据字典表mysql.innodb_ddl_log该表是隐藏的表通过show tables无法看到中用于回滚操作。通过设置参数可将DDL操作日志打印输出到MySQL错误日志中。
数据库学习视频 【MySQL数据库入门到大牛mysql安装到优化百科全书级全网天花板】