八,数据库的增删改查
1,管理数据库
sql#查看当前连接中的数据库都有哪些 SHOW DATABASES; #切换数据库 USE atguigudb; #查看当前数据库中保存的数据表 SHOW TABLES; #查看当前使用的数据库 SELECT DATABASE() FROM DUAL; #查看指定数据库下保存的数据表 SHOW TABLES FROM mysql;2,创建数据库操作
sqlCREATE DATABASE 数据库名; # 没有声明字符集,则使用默认的字符集类型 CREATE DATABASE 数据库名字 CHARACTER SET 'utf8'; # 声明字符集类型 CREATE DATABASE IF NOT EXISTS 数据库名字 CHARACTER SET 'utf8'; # 相对安全的创建数据库的写法 gbk3,修改数据库
sqlALTER DATABASE 数据库名字 CHARACTER SET 'utf8'; # 关键字 ALTER4,删除数据库
sql#方式1:如果要删除的数据库存在,则删除成功。如果不存在,则报错 DROP DATABASE mytest1; #方式2:推荐。 如果要删除的数据库存在,则删除成功。如果不存在,则默默结束,不会报错 DROP DATABASE IF EXISTS mytest1;
九,表的增删改查
1,创建表
sql# 白手起家方式创建表 CREATE TABLE IF NOT EXISTS 表名( id INT, students varchar(10), hire_date date # 注意最后一个列名不加逗号 ); # 富二代模式 # 基于现有表创建表 CREATE TABLE myemp3 AS SELECT e.employee_id emp_id,e.last_name lname,d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id; # 创建一个表,然后利用 AS SELECT... 在别的表进行查询操作,然后把这个数据赋予到新的表当中 # 列名和数据都是一样的 如何巧用方法进行 WHERE 然后只取列名,不取数据 CREATE TABLE myemp3 AS SELECT e.employee_id emp_id,e.last_name lname,d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id; WHERE 1 = 2; # 这个条件永远不会成立,那么一个数据都不会导入2,修改表
sql# 添加一个字段 # 1. 随机添加一个字段 ALTER TABLE 表名 ADD salary DOUBLE(10,2); # 2. 指定添加一个字段 ALTER TABLE 表名 ADD salary INT AFTER 列名 # 修改一个字段:数据类型、长度、默认值(略) ALTER TABLE 表名 MODIFY Email varchar(20) # 重新命名一个字段 ALTER TABLE myemp1 CHANGE email my_email VARCHAR(50);3,删除表
sqlALTER TABLE 表名 DROP COLUMN 字段名4,基于对表的操作
sql#1,重新命名一个表 ALTER TABLE 表名 RENAME TO 新表名 #2,删除表 #不光将表结构删除掉,同时表中的数据也删除掉,释放表空间 DROP TABLE IF EXISTS myemp2; #3,清空表 #清空表,表示清空表中的所有数据,但是表结构保留。 TURNCATE TABLE 表名 #7. DCL 中 COMMIT 和 ROLLBACK # COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。 # ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。 #8. 对比 TRUNCATE TABLE 和 DELETE FROM # 相同点:都可以实现对表中所有数据的删除,同时保留表结构。 # 不同点: # TRUNCATE TABLE:一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的。 # DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE)。同时,数据是可以实现回滚的。
十,数据的增删改
sql# 1, 添加数据 # 白手起家 INSERT INTO 表名(列名1, 列名2,...) VALUES(值1.1, 值2.1, ...), (值1.2, 值2.2, ...), ... # 富二代 INSERT INTO emp1(id,NAME,salary,hire_date) #查询语句 SELECT employee_id,last_name,salary,hire_date # 查询的字段一定要与添加到的表的字段一一对应 FROM employees WHERE department_id IN (70,60); #2, 或修改数据 # UPDATE .... SET .... WHERE ... # 可以实现批量修改数据的 UPDATE emp1 SET hire_date = CURDATE() WHERE id = 5; #3, 删除数据 # DELETE FROM .... WHERE.... DELETE FROM emp1 WHERE id = 1;