一.概述

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)
image.png

2.表的创建

(1)[ ]表示可省略 表名,列名,数据类型,长度必须指定

  1. CREATE TABLE IF NOT EXISTS demo( #如果不存在创建demo表
  2. 字段1,数据类型 [约束条件] [默认值],
  3. 字段2,数据类型 [约束条件] [默认值],
  4. .....
  5. [表约束条件]
  6. )

(2)基于现有的表,同时导入数据

  • 查询语句中字段的别名,可以作为新表的字段名

    1. CREATE TABLE demo #创建新表demo,并把查询语句中的数据导入
    2. AS
    3. SELECT employ_id,last_name,salary
    4. FROM employees;

    (3)练习:

    1. #创建新表,将employees复制过去,包括表数据
    2. CREATE TABLE employees_copy
    3. AS
    4. SELECT *
    5. FROM employees;
    6. #创建新表,将employees复制过去,不包括表数据
    7. CREATE TABLE employees_copy
    8. AS
    9. SELECT *
    10. FROM employees
    11. 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;
  • 指定将salary字段添加到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

(2)重命名的时候可以同时改变长度

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改名为text01

    2.使用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 表名;

  • TRUNCATE TABLE demo;

    八.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; ```