第一次学习(mysql)


mysql安装目录分为bin、docs、include、lib、share五个目录。

bin:可执行文件,操作mysql

docs:文档

include:.h头文件信息。因为mysql是用c语言写的,所有会有一些头文件

lib:c语言里面的一些库文件

share:语言和一些字符集

COPYING:版权信息、README开源信息

一、配置环境变量

MYSQL_HOME:D:\mysql\mysql-8.0.27-winx64

Path:%MYSQL_HOME%\bin

二、新建配置文件

mysql有个配置文件:my.ini,新建它并将添加以下内容:

[mysql]

default-character-set=utf8

[mysqld]

basedir=D:\\mysql\\mysql-8.0.27-winx64

datadir=D:\\mysql\\Data(不要自己添加data文件夹,否则就不一样了)

character-set-server=utf8

default-storage-engine=INNODB

skip-qrant-table # 跳过密码验证 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER(mysql8取消了这个,把这个删了), NO_ENGINE_SUBSTITUTION

并该文件置于安装路径下

三、初始化mysql

mysqld -install 安装MySQL服务

mysqld --initialize-insecure初始化数据文件

四、启动

windows先修改(regedit)\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL的imagepath为mysqld路径,否则启动不了mysql服务。

net start mysql

net stop mysql

先mysqladmin -uroot password xxxx 就创建了一个root管理员账户,mysql -uroot -pxxxx就进去了

---------------------------------------------------------------分割线----------------------------------------------------------

这里开始介绍datadir(D:\\mysql\\Data),文件夹里的每一个文件夹都是一个数据库。比如 create database db1; 这里是show databases结果。

相应的文件夹:

mysql8相比mysql5做了些优化,应该是表结构以及数据全部存到ibd文件里了。

--------------------------------分割线-----------------------

通用语法

1.以分号结尾

2. -- #都是单行注释(后面有个空格)

/*注释*/是多行注释

DDL Definition 数据定义语言:操作数据库或数据表

DML Manipulation 数据操作语言:操作数据

DQL query数据查询语言:查询数据

DCL control 数据控制语言:对数据库权限控制

DDL:

  库操作:

    show databases;(information_schema记录了库、表信息,以视图的形式存储数据,视图是一种逻辑表,并不存在物理文件;mysql存储了权限、安全一类的核心信息;performance。。存储性能相关信息 sys系统相关的信息)

    create database db1; 创建db1数据库 + if not exists db1 如果不存在db1则创建

    drop database db1删除db1

    select database();查看当前使用的哪个数据库

    use databasename;进入数据库

  表操作

    Retrieve查询

      show tables查询所有表

      desc tablename;查询表结构

    Create创建

        create table name{ 字段名 数据类型, 。。。 };

        数据类型: 数值类型、日期和时间类型、字符串类型

    update修改

      修改表名

        alter table name rename to newname;

      添加一列

        alter table name add colname 数据类型;

      修改数据类型

        alter table name modify colname 新数据类型

      修改列名和数据类型

        alter table name change colname newcolname 新数据类型

      删除列

        alter table name drop 列名;

    delete删除

      drop table name if exists name;

  DML:

    insert添加:

      给指定列添加数据:insert into 表名(列1,列2)values(值1,值2);

      给全部列添加数据:insert into 表名 values(值1,值2);

      批量添加:insert into 表名() values (值1,值2),(),。。。;

            insert into 表名 values(值1,值2),(),。。。;

    update修改:

      update 表名 set 列1=值1,列2=值2 [where 条件];

    delete删除:

      delete from 表名 [where 条件];

  DQL:select 字段列表 from 表名 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit 分页限定

    基础查询:

      select 字段列表 from 表名;

      select * from 表名

      select distinct 字段列表 from 表名;去重

      as:起别名 也可以省略

    条件查询where:

      select 字段列表 from 表名 where 条件列表;

    排序查询

      select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序方式2[排序方式2]...;

      ASC:升序排列,DESC:降序排列

    聚合查询

    分组查询

      聚合函数(纵向计算):

 select 聚合函数名(列明) from 表名;(NULL不参与聚合函数计算)

select 字段列表 from 表名 [where 条件] group by 分组字段名[having 分组后条件过滤];(having可以对分组后条件过滤,where不可以---》区别)

    分页查询

      select 字段列表 from 表名 limit 起始索引,查询条目数;

---------------------------------------分割线-----------------------------------------------------

约束:作用域表中列上的规则,用于限制加入表的数据,保证数据库中数据的正确性、有效性和完整性。

添加约束:alter table 表名 modify 字段名 数据类型 约束类型;

删除约束:alter table 表名 modify 字段名 数据类型;

默认约束(创建完表后):alter table 表名 alter 列名 set default 默认值;alter table 表名 alter 列名 drop default;

外键约束:外键用来让两个表的数据之间建立连接,保证数据的一致性和完整性

添加外键

create table 表名(

  [constraint] [外键名称] foreign key(外键列明) references 主表(主表列名)

alter table tab_name add constraint 外键名称 foreign key(外键列名) references 主表(主表列名);

删除外键:alter table 表名 drop foreign key key_name;

数据库设计

多表查询

  连接查询

  子查询

事务