数据库

Mysql数据库的基本配置

登陆

mysql -uroot -p

提示输入密码,直接点击回车 select user(); 就显示用户信息

注意net start是在管理员运行下才会有效的。

修改密码

先退出mysql,管理员身份运行cmd,尽管在输入命令的过程中出现了警告,但是登陆验证会发现已经修改成功。

密码破解

当你忘记密码时候,千万不要卸载重新安装,只需跳过授权库。

不是在ODBC下修改,而是要在用户root 下修改

统一字符编码

s 查看编码

在mysql的解压目录下新建my.ini文件,在文件中如下设置:

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

重启服务,查看编码,就会得到想要的编码格式。

操作文件夹---库操作

系统数据库

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库    启动后的一些参数,如    用户表信息、列信息、权限信息、字符信    息等
performance_schema: MySQL 5.5开始新增一个数据库:主要用于    收集数据库服务器性能参数,记录处理查询请求时发生的各种事    件、锁等现象
mysql: 授权库,主要存储系统用户的权限信息
test:     MySQL数据库系统自动创建的测试数据库

创建数据库

CREATE DATABASE 数据库名 charset utf8;

数据库命名规则和python变量命名规则一致。

数据库操作

查看数据库

show databases;

show create database db1;

select database();查看当前数据库

选择数据库

USE 数据库名

删除数据库

DROP DATABASE 数据库名;

修改数据库

alter database db1 charset utf8;

 

操作文件---表操作

存储引擎

数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

查看mysql支持的存储引擎

MariaDB [(none)]> show enginesG #查看所有支持的存储引擎

 

MariaDB [(none)]> show variables like 'storage_engine%';

#    查看正在使用的存储引擎

 

 

首先选择好数据库,然后进行表操作。

use 数据库名; ---实现切换数据库

select database();查看当前所在的数据库

创建表

create table 表名(

字段名1 类型[(宽度) 约束条件],

字段名2 类型[(宽度) 约束条件],

字段名3 类型[(宽度) 约束条件]

);

 

注意:

1. 在同一张表中,字段名是不能相同

2. 宽度和约束条件可选

3. 字段名和类型是必须的

创建完成后,可以用show tables;查看所有的表名     可以用desc 表名;查看表结构

可以用 select * from 表名;查看表内容

插入数据

  1. insert into 表名 values (依次写上对应字段的数据)[,(依次写上对应字段的数据)...];
  2. insert into 表名(字段名1[,字段名2]) values (依照前边括号格式写) [,(依照前边括号格式)];

    以上两种方式都可以插入单条或多条数据,但是以第一种方式插入要按照字段顺序插入数据,而已第二种方式插入数据要按照表名后面的格式,不一定包含全部字段,不包含的字段会被设置为空。

    修改

    修改表结构

    1. 修改表名

    ALTER TABLE 表名

    RENAME 新表名;

     

    2. 增加字段

    ALTER TABLE 表名

    ADD 字段名 数据类型 [完整性约束条件…],

    ADD 字段名 数据类型 [完整性约束条件…];

    ALTER TABLE 表名

    ADD 字段名 数据类型 [完整性约束条件…] FIRST;

    ALTER TABLE 表名

    ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

     

    3. 删除字段

    ALTER TABLE 表名

    DROP 字段名;

     

    4. 修改字段

    ALTER TABLE 表名

    MODIFY 字段名 数据类型 [完整性约束条件…];

    ALTER TABLE 表名

    CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

    ALTER TABLE 表名

    CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    修改表内容---修改数据

    复制表

    复制表结构+记录 (key不会复制: 主键、外键和索引)

    mysql> create table new_service select * from service;

     

    只复制表结构

    mysql> select * from service where 1=2; //条件为假,查不到任何记录

    Empty set (0.00 sec)

    mysql> create table new1_service select * from service where 1=2;

    Query OK, 0 rows affected (0.00 sec)

    Records: 0 Duplicates: 0 Warnings: 0

     

    mysql> create table t4 like employees;

    删除表

    drop table 表名;

     

    not null default

    sex enum('male','female') not null default 'male'

    这样就设置了sex属性是'male''female'其中之一,如果在插入数据的时候没有指定sex,那么默认为'male'。

    unique key 唯一约束

    顾名思义,唯一约束,为了保证唯一性,那么就不能重复。

    单列唯一

    方式一:

    create table dept(

    id int,

    name char(10) unique

    );

    方式二:

    create table dept(

    id int,

    name char(10)

    unique(name)

    );

    联合唯一

    create table service(

    id int,

    ip char(15),

    port int,

    unique(ip,port)

    );

    ip不是唯一的,端口也不是唯一的,但是ip和端口合起来保证唯一的一个主机上的软件是唯一的。

    Primary key 主键约束

    主键约束:不为空且唯一

    单列主键

    create table dept(

    id int primary key,

    name char(10)

    );

     

    复合主键

    create table service(

    ip char(15),

    port int,

    primary key(ip,port)

    );

    自增约束

    一般表都会有一个编号id,要把id设置成自增就在创建表的时候这样设置:

    id int primary key auto_increment

    需要注意的是,在表创建成功之后可以插入数据的时候不带id,这样id会自动排序,而且不能重复,可是如果id设置为一个表中数据没有达到的id号,这是没有错误的,但是以后的插入就会在此基础上继续往上增。当要删除表内容的时候,如果用delete from 表名;那么只能删除内容,id号依然保存着,下次插入的时候还是在此基础上增长。所以用truncate 表名;才会达到我们想要的效果。

    Foreign key---建立表之间的关系

    先建立被关联的表并且保证被关联字段的唯一性。

     

    create table dept(

    id int primary key,

    name char(10),

    comment char(50)

    );

    create table emp(

    id int primary key,

    name char(10),

    sex enum('male','female'),

    dept_id int,

    foreign key(dept_id) reference dept(id) on delete cascade on update cascade

    );

     

    foreign key(dept_id) reference dept(id) 设置外键约束,本表中的dept_id 是参考的dept表中的id创建的。

    on delete cascade on update cascade 删除更新同步

    但是不建议在项目中设置外键,只需要在逻辑上实现表之间的关联,而在代码中实现一些操作。

     

原文地址:https://www.cnblogs.com/yuliangkaiyue/p/9759184.html