数据库

mac2022-06-30  133

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 engines\G #查看所有支持的存储引擎

 

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

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

 

 

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

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

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

创建表

create table 表名(

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

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

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

);

 

注意:

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

2. 宽度和约束条件可选

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

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

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

插入数据

insert into 表名 values (依次写上对应字段的数据)[,(依次写上对应字段的数据)...]; 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

最新回复(0)