• MySQL数据库和表的操作


    数据库基础

    存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点:

             1、文件的安全性问题 2、文件不利于数据查询和管理 3、文件不利于存储海量数据 4、文件在程序中控制不方便

    数据库存储介质: 磁盘 内存

    为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。

    基本使用

    连接数据库

            mysql (-h 127.0.0.1 -P 3306) -u root -p

    注意:

            如果没有写 -h 127.0.0.1 默认是连接本地

            如果没有写 -P 3306 默认是连接3306端口号

    创建数据库

            create database helloworld;

    使用数据库

            use helloworld;

    创建数据库表

    create table student(

            id int,

            name varchar(32),

            gender varchar(2)

    );

    表中插入数据

    insert into student (id, name, gender) values (1, '张三', '男');

    insert into student (id, name, gender) values (2, '李四', '女');

    insert into student (id, name, gender) values (3, '王五', '男');

    查询表中的数据

    select * from student;

    SQL分类

    DDL【data definition language】 数据定义语言,用来维护存储数据的结构

            代表指令: create, drop, alter

    DML【data manipulation language】 数据操纵语言,用来对数据进行操作

            代表指令: insert,delete,update

            DML中又单独分了一个DQL,数据查询语言,代表指令: select

    DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务

            代表指令: grant,revoke,commit

    数据库操作

    创建数据库

            语法

    CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]

            create_specification:

                    [DEFAULT] CHARACTER SET charset_name

                    [DEFAULT] COLLATE collation_name

            大写的表示关键字

            [] 是可选项

            CHARACTER SET: 指定数据库采用的字符集

            COLLATE: 指定数据库字符集的校验规则

    说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。

    示例:

    创建一个使用utf字符集,并带校对规则的 db3 数据库。

    create database db3 charset=utf8 collate utf8_general_ci;

    字符集和校验规则

    查看系统默认字符集以及校验规则

    show variables like 'character_set_database';

    show variables like 'collation_database';

    查看数据库支持的字符集

    show charset;

    ps:字符集主要是控制用什么语言。比如utf8就可以使用中文。

    查看数据库支持的字符集校验规则

    show collation;

    ps:字符集的校验规则,指的是字符集比较大小的时候依据的准则,比如我们比较a和B的大小,如果不考虑大小写,那么aB,也就是说,同一字符集,不同的比较规则,对某列数据的排序结果也就会产生不同。

    操纵数据库

    查看数据库

    show databases;

    显示创建语句

    show create database 数据库名;

    示例:

    ps:

            MySQL 建议我们关键字使用大写,但是不是必须的。

            数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字

            /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

    修改数据库

    语法:

    ALTER DATABASE db_name [alter_spacification [,alter_spacification]...]

    alter_spacification:

            [DEFAULT] CHARACTER SET charset_name

            [DEFAULT] COLLATE collation_name

    说明: 对数据库的修改主要指的是修改数据库的字符集,校验规则

    删除数据库

    DROP DATABASE [IF EXISTS] db_ name;

    数据库备份和还原

    备份数据库

    语法:

    # mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

    同时备份多个数据库

    # mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

    如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用 source来还原。

    示例:将mytest库备份到文件(退出连接)

    # mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

    ps:这时,可以打开看看 mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

    备份表

    # mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

    还原数据库

    mysql> source D:/mysql-5.7.22/mytest.sql;

    查看连接情况

    show processlist

    可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被 人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

    表操作

    创建表

    语法

    CREATE TABLE table_name (

            field1 datatype,

            field2 datatype,

            field3 datatype

    ) character set 字符集 collate 校验规则 engine 存储引擎;

    说明:

            field 表示列名

            datatype 表示列的类型

            character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准

            collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

    查看表结构

    desc 表名;

    修改表

    //添加字段

    ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

    //修改字段

    ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);

    //删除字段

    ALTER TABLE tablename DROP (column);

    //修改表名

    alter table users rename to tablename;

    删除表

    DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

    示例

    drop table t1;

  • 相关阅读:
    2022全球边缘计算大会深圳站,8/6深圳南山
    项目沟通管理案例题
    递归算法讲解,深度理解递归
    git常用命令
    国产数据库盘点
    彻底清除Mac缓存数据的方法,这样清理Mac缓存数据太干净了
    安全+Linux!IBM新一代大型机Z14全新发布
    27岁Python程序员做独立开发年收入超900万,家中有屋又有田,生活乐无边
    35 LRU缓存
    前端为什么要工程化
  • 原文地址:https://blog.csdn.net/qq_45576085/article/details/132721998