第四次预习

1. 数据库操作

  • 创建数据库

    • 语法:CREATE DATABASE 数据库名 [CHARACTER SET 字符集] [COLLATE 排序规则];

    • 示例:CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 这里创建了一个名为 mydb 的数据库,字符集是 utf8mb4,排序规则是 utf8mb4_general_ci

  • 查看数据库

    • 语法:SHOW DATABASES; 用于列出所有数据库。

  • 使用数据库

    • 语法:USE 数据库名; 例如:USE mydb; 表示切换到 mydb 数据库,后续操作默认在这个数据库中进行。

  • 删除数据库

    • 语法:DROP DATABASE 数据库名; 例如:DROP DATABASE mydb; 会删除 mydb 数据库,注意这个操作会丢失数据库中的所有数据,要谨慎使用。

2. 数据表操作

  • 创建数据表

    • 语法:

      • CREATE TABLE 表名 (

      • 列名1 数据类型 [约束],

      • 列名2 数据类型 [约束],

      • ...

      • [表级约束]

      • );

    • 示例:

      • CREATE TABLE students (

      • id INT AUTO_INCREMENT PRIMARY KEY,

      • name VARCHAR(50) NOT NULL,

      • age INT CHECK (age > 0 AND age < 150),

      • gender ENUM('M', 'F') NOT NULL

      • );

      • 这里创建了一个名为 students 的表,其中 id 是整型,自动递增,作为主键;name 是长度最多 50 个字符的字符串,不能为空;age 是整型,通过检查约束限制年龄范围;gender 是枚举类型,只能取 'M''F',且不能为空。

  • 查看数据表结构

    • 语法:DESCRIBE 表名;SHOW COLUMNS FROM 表名; 例如:DESCRIBE students; 可以查看 students 表的列名、数据类型、是否为空等信息。

  • 修改数据表

    • 添加列

      • 语法:ALTER TABLE 表名 ADD 列名 数据类型 [约束]; 例如:ALTER TABLE students ADD email VARCHAR(100);students 表添加了一个名为 email 的列,数据类型是长度最多 100 个字符的字符串。

    • 修改列

      • 语法:ALTER TABLE 表名 MODIFY 列名 数据类型 [约束]; 例如:ALTER TABLE students MODIFY name VARCHAR(100);students 表中 name 列的数据类型从原来的 VARCHAR(50) 修改为 VARCHAR(100)

    • 删除列

      • 语法:ALTER TABLE 表名 DROP 列名; 例如:ALTER TABLE students DROP email; 删除 students 表中的 email 列。

    • 重命名表

      • 语法:RENAME TABLE 原表名 TO 新表名; 例如:RENAME TABLE students TO pupils;students 表重命名为 pupils

  • 删除数据表

    • 语法:DROP TABLE 表名; 例如:DROP TABLE students; 会删除 students 表,表中的数据也会丢失,要谨慎操作。

3. 数据操作

  • 插入数据

    • 插入完整数据行

      • 语法:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);

      • 示例:INSERT INTO students (name, age, gender) VALUES ('Alice', 20, 'F');students 表中插入一行数据,name'Alice'age20gender'F'

    • 插入多行数据

      • 语法:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), ...;

      • 示例:INSERT INTO students (name, age, gender) VALUES ('Bob', 22, 'M'), ('Charlie', 21, 'M'); 一次性插入两行数据。

    • 插入部分数据(省略列名)

      • 语法:INSERT INTO 表名 VALUES (值1, 值2, ...); 但是要求值的顺序和表中列的顺序一致,且不能遗漏非空列。

      • 示例:INSERT INTO students VALUES (1, 'David', 18, 'M'); 假设 students 表的列顺序是 idnameagegender,这里插入一行数据,id1name'David'age18gender'M'

  • 查询数据

    • 基本查询

      • 语法:SELECT 列名1, 列名2, ... FROM 表名; 例如:SELECT name, age FROM students; 查询 students 表中 nameage 列的所有数据。

    • 查询所有列

      • 语法:SELECT * FROM 表名; 例如:SELECT * FROM students; 查询 students 表中所有列的所有数据。

    • 带条件查询

      • 语法:SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件; 例如:SELECT name, age FROM students WHERE age > 18; 查询 students 表中 age 大于 18nameage 列的数据。

    • 排序查询

      • 语法:SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 [ASC|DESC]; 例如:SELECT name, age FROM students ORDER BY age DESC; 查询 students 表中 nameage 列的数据,并按照 age 列降序排列。

    • 分组查询

      • 语法:SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名 [HAVING 条件]; 例如:SELECT gender, COUNT(*) FROM students GROUP BY gender; 查询 students 表中按 gender 分组的每组人数。

    • 分页查询

      • 语法:SELECT 列名1, 列名2, ... FROM 表名 LIMIT 偏移量, 行数; 例如:SELECT * FROM students LIMIT 0, 10; 查询 students 表中从第 0 行开始的 10 行数据,常用于分页显示。

  • 更新数据

    • 语法:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... WHERE 条件; 例如:UPDATE students SET age = 21 WHERE name = 'Alice';students 表中 name'Alice' 的记录的 age 更新为 21。注意使用 WHERE 条件限定更新的记录范围,否则可能会更新表中所有记录。

  • 删除数据

    • 语法:DELETE FROM 表名 WHERE 条件; 例如:DELETE FROM students WHERE age > 30; 删除 students 表中 age 大于 30 的记录。同样,使用 WHERE 条件限定删除的记录范围,否则可能会删除表中所有记录。

4. 数据类型

  • 数值类型

    • TINYINT:范围是 -128 到 127(有符号)或 0 到 255(无符号)。

    • SMALLINT:范围是 -32768 到 32767(有符号)或 0 到 65535(无符号)。

    • MEDIUMINT:范围是 -8388608 到 8388607(有符号)或 0 到 16777215(无符号)。

    • `INTINTEGER:范围是 -2147483648 到 2147483647(有符号)或 0 到 4294967295(无符号)。

BIGINT:范围是 -9223372036854775808 到 9223372036854775807(有符号)或 0 到 18446744073709551615(无符号)。

FLOAT:单精度浮点数,用于表示小数。

DOUBLE:双精度浮点数,精度比 FLOAT高

DECIMAL`:定点数,用于表示精确的小数,适合存储货币等需要精确计算的数值。

  • 字符串类型

    • CHAR:固定长度的字符串,最大长度是 255 个字符,如果存储的字符串长度小于定义长度,会用空格填充。

    • VARCHAR:可变长度的字符串,最大长度是 65535 个字符(受 MySQL 最大行大小限制),存储时只占用实际长度加上一个长度前缀的存储空间。

    • TEXT:用于存储较大的文本数据,有多种类型,如 TINYTEXT(最大长度 255 字节)、TEXT(最大长度 65535 字节)、MEDIUMTEXT(最大长度 16777215 字节)、LONGTEXT(最大长度 4294967295 字节)。

    • BLOB:用于存储二进制数据,也有多种类型,如 TINYBLOBBLOBMEDIUMBLOBLONGBLOB,与 TEXT 类型类似,但用于存储二进制数据。

  • 日期和时间类型

    • DATE:格式为 YYYY-MM-DD,用于存储日期。

    • TIME:格式为 HH:MM:SS,用于存储时间。

    • DATETIME:格式为 YYYY-MM-DD HH:MM:SS,用于存储日期和时间。

    • TIMESTAMP:范围是 '1970-01-01 00:00:01''2038-01-19 03:14:07',用于存储时间戳,自动转换为 UTC 时间。

    • YEAR:用于存储年份,可以是两位或四位数字。

5. 约束

  • 主键约束(PRIMARY KEY)

    • 用于唯一标识表中的每一行记录,一个表中只能有一个主键,主键列的值不能重复且不能为 NULL。例如在创建表时:id INT PRIMARY KEY,或者在表创建后:ALTER TABLE 表名 ADD PRIMARY KEY (列名);

  • 外键约束(FOREIGN KEY)

    • 用于建立两个表之间的关联关系,一个表的外键列的值必须是另一个表的主键列的值或 NULL。语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 被引用表名 (被引用列名); 例如:ALTER TABLE orders ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers (id); 假设 orders 表的 customer_id 列是外键,引用 customers 表的 id 列。

  • 唯一约束(UNIQUE)

    • 用于保证列中的值不重复,但可以有 NULL 值。语法:ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE (列名); 例如:ALTER TABLE students ADD CONSTRAINT unique_email UNIQUE (email); 保证 students 表的 email 列的值是唯一的。

  • 非空约束(NOT NULL)

    • 用于限制列的值不能为 NULL。在创建表时可以直接指定:name VARCHAR(50) NOT NULL,或者在表创建后:ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL;

  • 默认约束(DEFAULT)

    • 用于为列指定默认值,当插入数据时没有指定该列的值时,会自动填充默认值。语法:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值; 例如:ALTER TABLE students ALTER age SET DEFAULT 18;

  • 检查约束(CHECK)

    • 用于限制列的值必须满足某个条件。语法:ALTER TABLE 表名 ADD CONSTRAINT 检查约束名 CHECK (条件); 例如:ALTER TABLE students ADD CONSTRAINT chk_age CHECK (age > 0 AND age < 150); 限制 students 表的 age 列的值必须大于 0 且小于 150

6. 事务

  • 开启事务

    • 语法:START TRANSACTION;BEGIN;

  • 提交事务

    • 语法:COMMIT; 提交事务,使事务中的所有操作永久生效。

  • 回滚事务

    • 语法:ROLLBACK; 回滚事务,撤销事务中的所有操作。

  • 设置事务隔离级别

    • 语法:SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别; MySQL 支持的隔离级别有 READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READ(默认级别)、SERIALIZABLE

7. 索引

  • 创建索引

    • 语法:CREATE INDEX 索引名 ON 表名 (列名); 例如:CREATE INDEX idx_name ON students (name);students 表的 name 列上创建一个名为 idx_name 的索引,可以加快按 name 列查询数据的速度。

  • 查看索引

    • 语法:SHOW INDEX FROM 表名; 例如:SHOW INDEX FROM students; 可以查看 students 表的所有索引信息。

  • 删除索引

    • 语法:DROP INDEX 索引名 ON 表名; 例如:DROP INDEX idx_name ON students; 删除 students 表上的 idx_name 索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值