DML
DML(Data Manipulation Language, 数据操纵语言), 可以在下列条件下执行:
向表中插入数据.
修改现存数据.
删除现存数据.
事务是由完成若干项工作的 DML 语句组成的, 要么全部成功, 要么全部失败.
INSERT
语法:
INSERT INTO 表名(列名 1, 列名 2,......, 列名 n) values(值 1, 值 2,......, 值 n);
INSERT INTO 表名(列名 1, 列名 2,......, 列名 n) values(值 1, 值 2,......, 值 n),(值 1, 值 2,......, 值 n),......;
应用示例:
新增雇员信息:
- insert into employees (first_name,last_name,email,phone_number,job_id,salary,commission_pct,manager_id,department_id,hiredate)
- values ('xx','xxx','[email protected]','18888888',null,3000,null,null,null,'2019-11-11')
- UPDATE
语法:
UPDATE 表名
SET 列 1 = 值 1, 列 2 = 值 2,......, 列 n = 值 n
[WHERE 条件];
应用示例:
修改表中姓名为 K_ing 的手机号码为 12345678901.
- UPDATE employees
- SET phone_number = '12345678901'
- WHERE
- last_name = 'K_ing';
- DELETE
语法:
DELETE FROM 表名
[WHERE 筛选条件];
应用示例:
删除 last_name 为 xxx 的员工.
- DELETE
- FROM
- employees
- WHERE
- last_name = 'xxx';
- DDL
库的管理 (创建, 修改, 删除) 和表的管理(创建, 修改, 删除).
库的管理
创建数据库
语法:
CREATE DATABASE [IF NOT EXISTS] 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
应用示例:
创建 user 数据库.
CREATE DATABASE IF NOT EXISTS `user` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
修改数据库
修改数据库名: 先删除数据库, 再创建新的数据库.
更改数据库的字符集和排序规则:
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
删除数据库
语法:
DROP DATABASE [IF EXISTS] 数据库名;
应用示例:
删除数据库:
DROP DATABASE IF EXISTS 数据库名;
表的管理
表的创建
语法:
CREATE TABLE 表名(
列名 1 列的类型[长度] [列的约束],
列名 2 列的类型[长度] [列的约束],
......
列名 n 列的类型[长度] [列的约束]
);
应用示例:
创建一个学生表:
- CREATE TABLE student (
- id BIGINT primary KEY auto_increment,
- `name` VARCHAR ( 255 )
- );
表的修改
语法:
ALTER TABLE 表名 add|drop|modify|change column 列名 [列类型 约束];
应用示例:
修改列名
ALTER TABLE student CHANGE COLUMN `name` stu_name VARCHAR ( 255 );
修改列的类型或约束
ALTER TABLE student MODIFY COLUMN `stu_name` VARCHAR ( 32 );
添加新列
ALTER TABLE student ADD COLUMN `salary` DOUBLE;
删除列
ALTER TABLE student DROP COLUMN `salary`;
修改表名
ALTER TABLE student RENAME TO `new_student`;
表的删除
语法:
DROP TABLE IF EXISTS 表名;
应用示例:
删除学生表
DROP TABLE IF EXISTS `student`;
复制表
语法:
仅仅复制表的结构:
CREATE TABLE 要复制的表名 LIKE 原表名;
复制表的结构和数据:
CREATE TABLE 要复制的表名 SELECT * FROM 原表名;
应用示例:
仅仅复制表的结构:
CREATE TABLE admin_back LIKE admin;
复制表的结构和数据:
- CREATE TABLE admin_back
- SELECT * FROM admin;
常见的数据类型
概述:
数值型: 整型, 小数(定点数, 浮点数).
字符型: 较短的文本(char,varchar), 较长的文本(text,longtext,blob).
日期型:
整型:
分类:
特点:
如果不设置无符号还是有符号, 默认是有符号. 如果需要设置无符号, 需要添加 unsigned 关键字.
- CREATE TABLE `test_data_struct` (
- id INT,
- id1 INT UNSIGNED
- );
如果插入的数值超过了整型的范围, MySQL 会报 (Out of range for column ...) 异常.
如果不设置长度, 会有默认的长度. 比如 int 类型有符号默认是 11 位, 无符号默认是 10 位. 在 MySQL 中, 对于整型来说, 整型类型确定字段的范围大小, 而长度确定字段显示的长度, 如果不够, 将用 0 来填充, 当然此时需要配置 zerofill 关键字来配合使用, 并且此时的数据类型必须是 unsigned.
- CREATE TABLE `test_data_struct` (
- id INT,
- id1 INT(7) UNSIGNED ZEROFILL
- );
小数:
分类:
语法:
CREATE TABLE ` 表名 ` (
列名 FLOAT ( M, D ),
列名 DOUBLE ( M, D ),
列名 DECIMAL ( M, D )
);
特点:
M 表示整数位 + 小数位. D 表示小数位.
M 和 D 都可以省略不写. 如果是 DECIMAL, 那么 M 默认是 10,D 默认为 0.
定点型的精确度较高. 如货币运算.
字符型
分类:
char 和 varchar 表示较短的文本.
text 和 longtext 表示较长的文本.
blob 表示二进制数据.
enum 表示枚举.
- create table test_enum (
- c enum('a','b','c')
- );
set 和 enum 类似, 但是 set 一次可以插入多个值.
- CREATE TABLE test_set (
- s SET ( 'a', 'b', 'c' )
- );
- INSERT INTO test_set (s) VALUES ('a');
- INSERT INTO test_set (s) VALUES ('a,b');
特点:
char 表示固定长度的字符, varchar 表示可变长度的字符.
日期类型
分类:
MySQL 基础(四)
来源: http://www.bubuko.com/infodetail-3496425.html