- 一.概述
- 二.数据库的创建管理
- 三.表的创建
- 四.表的修改(ALTER)
- 五.表的重命名
- 六.表的删除
- 七.表的清空
- 八.DCL中的COMMIT和ROLLBACK
- 九.SQL语言的分类:
- 十.练习
- 1.创建数据库test01_office,指明字符集为utf8
- 2.创建表dept01
- 3.将表departments中的数据插入新表dept02中
- 4.创建表emp01
- 5.将last_name长度增加到50
- 6.根据表employees创建emp02
- 7.删除表emp01
- 8.将表emp02重命名为emp01
- 9.在表dept01和emp01中添加新列test_column。并检查所做的操作
- 10.直接删除表emp01中的列dept_id
一.概述
1.存储数据是处理数据的第一步
2.MySQL中,完整的数据存储过程为创建数据库,确认字段,创建数据表,插入数据
(1)从系统架构层次看,MySQL数据库系统从大到小依次是数据库服务器,数据库,数据表,行于列
(2)所以表依附于数据库
3.MySQL标识符命名规则:
(1)数据库名,表名不能超过30个字符,变量名不超过29个
(2)只能包含A-Z,a-z,0-9,_
(3)数据库名,表名,字段名等中间不能有空格
(4)同一个MySQL软件,数据库不能同名;同一个库中,表不能同名;同一个表中,字段不能重名
(5)保持字段名于类型的一致性
二.数据库的创建管理
1.创建数据库(推荐方法3)
(1)CREATE DATABASE 数据库名;
(2)CREATE DATABASE 数据库名 CHARACTER SET 字符集;//创建并指定字符集
(3)CREATE DATABASE IF NOT EXISTS 数据库名;//判断数据库是否存在,不存在则创建
2.数据库不能改名。可视化工具改名是建新库复制过来删除原来的数据库
3.数据库操作
(1)查看当前所有的数据库:SHOW DETABSASES;
(2)查看当前正在使用的数据库:SELECT DATABASE();
(3)查看指定库下的所有表:SHOW TABLES FROM 数据库名;
(4)查看数据库创建信息:SHOW CREATE DATABASE 数据库名;
(5)使用或切换数据库:USE 数据库名;
(6)查询表结构:DESC 表名;
(7)查询指定表的建表语句:SHOW CREATE TABLE 表名;
4.数据库操作要说明对哪个数据库操作,否则要指明”数据库名”
5.修改数据库
(1)修改字符集:ALTER DATABASE 数据库名 CHARACTER SET 字符集;
6.删除数据库(推荐使用方法2)
(1)删除指定数据库:DROP DATABASE 数据库名;
(2)删除指定数据库:DROP DATABASE IF EXISTS 数据库名;//判断是否存在,存在即删除、
三.表的创建
1.MySQL数据类型:(CREATE)

2.表的创建
(1)[ ]表示可省略 表名,列名,数据类型,长度必须指定
CREATE TABLE IF NOT EXISTS demo( #如果不存在创建demo表
字段1,数据类型 [约束条件] [默认值],
字段2,数据类型 [约束条件] [默认值],
.....
[表约束条件]
)
(2)基于现有的表,同时导入数据
查询语句中字段的别名,可以作为新表的字段名
CREATE TABLE demo #创建新表demo,并把查询语句中的数据导入
AS
SELECT employ_id,last_name,salary
FROM employees;
(3)练习:
#创建新表,将employees复制过去,包括表数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees;
#创建新表,将employees复制过去,不包括表数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees
WHERE 1=2;#就是设置一个不存在的条件,使其查询不到数据
四.表的修改(ALTER)
1.添加一个字段
(1)正常添加默认添加到最后位置
ALTER TABLE demo ADD salary DOUBLE(10,2);—-代表double型数据10位数,小数点后有两位
(2)指定添加到首位置
- ALTER TABLE demo ADD salary DOUBLE(10,2) FIRST;
- 把字段添加到首位置在后加FIRST
(3)指定添加到那个字段的后面
- ALTER TABLE demo ADD salary DOUBLE(10,2) AFTER Dno;
-
2.修改一个字段
(1)修改数据类型:ALTER TABLE 表名 MODIFY 字段名 数据类型;
ALTER TABLE demo MODIFY Dname VARCHAR(35);——-将demo表的Dname长度改为35
(2)修改字段名和类型:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型;
- ALTER TABLE demo CHANGE Dname Dnew_name VARCHAR(35);
(3)只修改数据类型用MODIFY 修改字段名和数据类型用CHANGE
3.重命名一个字段
(1)ALTER TABLE demo CHANGE salary month_salary DOUBLE(10,2);
- 将salary重命名为month_salary
4.删除一个字段
(1)ALTER TABLE 表名 DROP 字段名;
ALTER TABLE emp DROP username;—-在emp表中删除username字段
五.表的重命名
1.使用RENAME
(1)语法:RENAME TABLE 表名 TO 新表名;
(2)举例:RENAME TABLE demo TO text01; 将表demo改名为text012.使用ALTER
(1)语法:ALTER TABLE 表名 RENAME TO 新表名;
TO可省略
(2)举例:ALTER TABLE text01 RENAME TO demo;#将表text01改名为demo
六.表的删除
1.直接删除:DROP TABLE 表名;
2.DROP TABLE IF EXISTS 表1,表2…;
- 查看表是否存在,存在就删除,不存在忽略此语句
-
3.删除操作不能回滚
4.删除表同时也会删除表中的数据,释放表空间
5.删除指定表,并重新创建该表:TRUNCATE TABLE 表名;
七.表的清空
1.清空表中所有数据,表的结构会保留
2.语法:TRUNCATE TABLE 表名;
-
八.DCL中的COMMIT和ROLLBACK
1.COMMIT:
提交数据。一旦执行COMMIT,数据就被永久保存在数据库,意味着数据不能回滚
2.ROLLBACK:
回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近一次COMMIT之后
3.对比TRUNCATE TABLE和DELETE TABLE(比较两个删除)
(1)相同点:都可以实现对表中数据的删除,并保留表结构
(2)不同点:TRUNCATE TABLE:一旦执行此操作,表数据全部清除。且不可回滚
DELETE TABLE:一旦执行此操作,表数据可以全部清除或部分删除(用WHERE实现部分删除)。且数据可以回滚
4.DDL和DML说明:
(1)DDL的操作一旦执行,就不可回滚。
(2)DML的操作一般也不支持回滚。但要是在执行DML前,执行了SET autocommit=False,便可以回滚
(3)SET autocommit=False不能影响DDL只能影响DML九.SQL语言的分类:
1.数据查询语言(DQL):
数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有FROM,WHERE,GROUP BY,HAVING和ORDER BY。这些DQL保留字常与其他类型的SQL语句一起使用。
2.数据定义语言(DDL):
数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由 Codasyl (Conference on Data Systems Languages) 数据模型开始,现在被纳入 SQL 指令中作为其中一个子集。
3.数据操纵语言(DML):
数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。
4.数据控制语言(DCL):
数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。DCL以控制用户的访问权限为主,GRANT为授权语句,对应的REVOKE是撤销授权语句。
5.指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
6.事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK
十.练习
```sql
1.创建数据库test01_office,指明字符集为utf8
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET ‘utf8’;
2.创建表dept01
CREATE TABLE IF NOT EXISTS dept01(
id INT,
name
VARCHAR(25)
);
3.将表departments中的数据插入新表dept02中
CREATE TABLE dept02 AS SELECT * FROM departments;
4.创建表emp01
CREATE TABLE IF NOT EXISTS emp01( id INT(7), first_name VARCHAR(25), last_name VARCHAR(25), dept_id INT(7) );
5.将last_name长度增加到50
ALTER TABLE emp01 MODIFY last_name VARCHAR(50);
6.根据表employees创建emp02
CREATE TABLE emp02 AS SELECT * FROM employees;
7.删除表emp01
DROP TABLE emp01;
8.将表emp02重命名为emp01
RENAME TABLE emp02 TO emp01;
9.在表dept01和emp01中添加新列test_column。并检查所做的操作
ALTER TABLE dept01 ADD test_column VARCHAR(10); ALTER TABLE emp01 ADD test_column VARCHAR(10);
10.直接删除表emp01中的列dept_id
ALTER TABLE emp01 DROP COLUMN dept_id; ```