开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

mysql的库和表相关操作

简介:
+关注继续查看

一、数据库介绍

1、数据库的由来

我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上,这样就带来了许多问题:

(1)程序所有的组件就不可能运行在一台机器上

(2)数据安全问题

(3)并发问题

总结:我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,mysql不仅仅解决的是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。


2、数据库说明

数据库服务器 -:运行数据库管理软件

数据库管理软件:管理 - 数据库

数据库:即文件夹,用来组织文件 / 表

表:即文件,用来存放多行内容 / 多条记录


3、mysql介绍

MySQL是一个关系型数据库管理系统

(1)分两大类:

  关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用

  非关系型:mongodb,redis,memcache

(2)可以简单的理解为:

    关系型数据库需要有表结构

    非关系型数据库是key-value存储的,没有表结构

二、操作

1、mysql数据库环境准备

环境:window7_X86_64

版本:mysql-5.6.38-winx64.zip

下载地址:https://dev.mysql.com/downloads/mysql/

文件路径:E:\mysql-5.6.38-winx64

添加到环境变量:计算机---->属性---->高级系统设置---->环境变量---->系统变量---->path---->E:\mysql-5.6.38-winx64\bin\;


2、登录和设置密码

1
2
3
4
5
C:\Users\Administrator> mysqld --install
C:\Users\Administrator> net start MySQL                   #启动mysql数据库
C:\Users\Administrator> mysql                         #默认用户不用密码可以直接登录
mysql> select user();                               #查看当前登录用户,显示的是ODBC用户
C:\Users\Administrator> mysqladmin -uroot -p password "123"     #设置root账号的密码是123

3、重置密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\Users\Administrator> net stop MySQL
C:\Users\Administrator> mysqld --skip-grant-tables
 
新打开一个终端操作:
C:\Users\Administrator> mysql -uroot -p
mysql > update mysql.user set password=password("") where user='root' and host="localhost";
mysql > flush privileges;
mysql> exit;
C:\Users\Administrator>tasklist |findstr mysql             #查看mysql服务的进程号
mysqld.exe         6316 Console          1    454,544 K
 
C:\Users\Administrator>taskkill //PID 6316               #结束mysql服务
C:\Users\Administrator>net start MySQL                  #启动mysql服务
C:\Users\Administrator> mysql -uroot -p                  #登录不需要密码了


4、同一字符编码

#mysql5.5以上的配置文件配置

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8


mysql> show variables like '%char%';                           #查看字符编码


5、SQL语言介绍

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:

#1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

#2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

#3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE


(1)操作文件夹

增:create database db1 charset utf8;

查:show databases;

改:alter database db1 charset latin1;

删除: drop database db1;


(2)操作文件

先切换到文件夹下:use db1

增:create table t1(id int, name char);

查:show tables

改:alter table t1 modify name char(3); alter table t1 change name name1 char(2);

删:drop table t1;


(3)操作文件中的内容/记录

增:insert into t1 values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');

查:select * from t1;

改:update t1 set name = 'sb' where id = 2;

删:delete from t1 where id = 1;


清空表:

    delete from t1;  # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。

    truncate table t1; 数据量大,删除速度比上一条快,且直接从零开始,

    auto_increment 表示:自增

    primary key    表示:约束(不能重复且不能为空);加速查找

6、库操作

(1)查看数据库

show databases;

show create database db1;

select database();

(2)选择数据库

USE 数据库名

(3) 删除数据库

DROP DATABASE 数据库名;

(4)修改数据库

alter database db1 charset utf8;


7、表操作

(1)创建表

#注意:

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

        2. 宽度和约束条件可选

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show engines;                      #显示所有的存储引擎
mysql> use db1
mysql> create table t1(id int)engine=innodb;
mysql> create table t2(id int)engine=myisam;
mysql> create table t3(id int)engine=memory;
mysql> create table t4(id int)engine=blackhole;
mysql> show tables;                          #查看db1库下的所有的表名
mysql> desc t1;  
                            #查看t1表的表结构
#memory存储引擎,在重启mysql或者重启机器后,表内数据清空
#blackhole存储引擎,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
 
mysql> create table db1.f2 select user,host from mysql.user;          #复制表
mysql> create table db1.f3 select user,host from mysql.user where 1=2;    #只复制表结构(查询的结果不存在,没有值)
mysql> create table db1.f4 like mysql.user;                      #只复制表结构

(2)日期类型

1
2
3
4
5
6
7
8
9
10
11
create table student(
    id int,
    name char(16),
    born_year year,
    birth_date date,
    class_time time,
    reg_time datetime
);
 
insert into student values(1,'wang',now(),now(),now(),now());                     #插入当前时间
insert into student values(2,'wang','1999','1999-11-11','11:11:11',"1990-11-11 11:11:11");  #插入指定时间

(3)字符类型

#char类型:定长,简单粗暴,浪费空间,存取速度快

    字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)

#varchar类型:变长,精准,节省空间,存取速度慢

    字符长度范围:0-65535(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-8)

#常用字符串系列:char与varchar

注:虽然varchar使用起来较为灵活,但是char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡


#宽度代表的是字符的个数

create table t6(name char(5));

create table t7(name varchar(5));


(4)修改表ALTER TABLE

语法:

#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 旧字段名 新字段名 新数据类型[完整性约束条件…];


#5.删除表

DROP TABLE 表名;


示例:

#1.修改存储引擎

mysql > alter table service engine = innodb;


#2.添加字段

1
2
3
4
5
6
mysql > alter table student10
        -> add name varchar(20not null,
        -> add age int(3not null default 22;
         
mysql > alter table student10 add stu_num varchar(10not null after name;          // 添加name字段之后
mysql > alter table student10 add sex enum('male''female') default 'male' first;     // 添加到最前面

#3.删除字段

mysql > alter table student10 drop sex;

mysql > alter table service drop mac;


#4.修改字段类型modify

mysql > alter table student10 modify age int(3);

mysql > alter table student10 modify id int(11) not null primary key auto_increment;    // 修改为主键


#5.增加约束(针对已有的主键增加auto_increment)


mysql > alter table student10 modify id int(11) not null auto_increment;


#6.对已经存在的表增加复合主键

mysql > alter table service2 add primary key(host_ip, port);


#7.增加主键

mysql > alter table student1 modify name varchar(10) not null primary key;


#8.增加主键和自动增长

mysql > alter table student1 modify id int not null primary key auto_increment;


#9.删除主键

a.删除自增约束

mysql > alter table student10 modify id int(11) not null;


b.删除主键

mysql > alter table student10 drop primary key;


(5)枚举类型与集合类型

字段的值只能在给定范围中选择,如单选框,多选框

enum 单选 只能在给定的范围内选一个值

set 多选 在给定的范围内可以选择一个或一个以上的值


1
2
3
4
5
6
7
8
create table employee(
    id int,
    name char(10),
    sex enum('male','female','other'),
    hobbies set('play','eat','music','read')
);
insert into employee values(1,'li','male','music,read');
insert into employee values(2,'wang','xxxx','music,read');




本文转自 宋鹏超 51CTO博客,原文链接:http://blog.51cto.com/qidian510/2072077,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
linux下安装升级mysql版本
linux下安装升级mysql版本
241 0
MySQL 安装路径以及配置信息 | 学习笔记
快速学习 MySQL 安装路径以及配置信息。
83 0
卧槽,安装完MySQL竟然提示数据表不存在!!
本来想基于MySQL 8.0研究Seata源码,结果我不小心把MySQL 8.0的源码安装包删除了,我这的网又很慢,下载MySQL 8.0源码安装包下载了半天,没下载下来。只好安装我电脑上存在的MySQL 5.6来研究Seata源码了。安装完MySQL 5.6竟然提示我数据表不存在!! 今天,就给小伙伴们分享下我是如何解决这个问题的。
199 0
MySQL 5.7安装图文教程
本文目录 1. 背景 2. 安装流程 2.1 同意安装协议 2.2 选择安装类型 2.3 选择产品及特征 2.4 检查必备条件 2.5 安装 2.6 开始配置 2.7 集群配置 2.8 数据库类型和网络配置 2.9 设置ROOT账户密码 2.10 mysql安装为windows服务 2.11 插件和拓展 2.12 应用配置 2.13 搞定
78 0
MySQL 超新手入门(2) 资料库概论与 MySQL 安装
储存与管理资料一直是资讯应用上最基本、也是最常见的技术。在还没有使用电脑来管理你的资料时,你可能会使用这样的方式来保存世界上所有的国家资料:
90 0
Linux环境下Mysql++安装及操作深入详解
题记: 之前项目中使用OTL连接操作Oracle数据库,对于Mysql有用,但没有总结。目前常用的两种连接方式:
142 0
腾讯云 ubuntu服务器mysql安装和外网访问
1 腾讯云 购买ubuntu 默认账户是ubuntu(由于winscp 使用ubuntu没有权限写文件)
124 0
云服务器安装mysql小白操作
多数新人在使用云服务器之前对此都是一无所知的,所以再次分享一篇详细的使用云服务器mysql的教程
294 0
小白使用ECS安装mysql远程连接的心酸历程
在使用阿里云ECS服务器中遇到的心酸事件!
237 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载