加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL常见的库操作,表操作,数据操作集锦及一些注意事项

发布时间:2020-12-12 00:03:04 所属栏目:MySql教程 来源:网络整理
导读:一 库操作(文件夹) 1 数据库命名规则 2 数据库相关操作 创建库 create database 数据库名 ; (注意要引号结尾) (默认latin1) 在创建数据库的时候也可指定编码格式,如:create database 数据库名charset utf8; 选择数据库 use 数据库名 切换到指定数据

一 库操作(文件夹)

1 数据库命名规则

2 数据库相关操作

创建库

create database 数据库名 ; (注意要引号结尾) (默认latin1)

在创建数据库的时候也可指定编码格式,如:create database 数据库名charset utf8;

选择数据库

use 数据库名    切换到指定数据库下

查看库

show databases;   查看所有数据库(即文件夹)

show create database db1;  查看db1数据库

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

select user();        查看登录用户

修改库

alter database db1 charset gbk; 将数据库的编码更改为gbk

删除库

drop database db1; 删除数据库db1


如果不小心输入语法时写错了,在其末尾加c 即可取消; 不小心加了‘时用c取消不了,因为引号需要有一个配对的',所以要用'c来取消

3为mysql服务指定配置文件

;skip-grant-tables

<span style="color: #008000;">#<span style="color: #008000;">指定端口,可以不指定,因为mysql默认端口就是3306
port=3306

<span style="color: #008000;">#<span style="color: #008000;">指定数据库默认字符编码
character_set_server=<span style="color: #000000;">utf8

<span style="color: #008000;">#<span style="color: #008000;">指定解压的目录
basedir=E:mysql-5.7.19-<span style="color: #000000;">winx64

<span style="color: #008000;">#<span style="color: #008000;">指定data目录
datadir=E:my_data <span style="color: #008000;">#<span style="color: #008000;">在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据,如果初始化后又将data指定为其他目录,则需要重新进行初始化操作,否则会报错
<span style="color: #000000;">
[client]
port=3306<span style="color: #000000;">
default-character-set=<span style="color: #000000;">utf8

<span style="color: #008000;">#<span style="color: #008000;">2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
<span style="color: #000000;">[client]
port=3306<span style="color: #000000;">
default-character-set=<span style="color: #000000;">utf8
user=<span style="color: #000000;">root
password=123

<span style="color: #008000;">#<span style="color: #008000;">3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
<span style="color: #000000;">[mysql]
;port=3306<span style="color: #000000;">
;default-character-set=<span style="color: #000000;">utf8
user=<span style="color: #000000;">egon
password=4573

<span style="color: #008000;">#<span style="color: #008000;">!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准

5.5.84.1(包括 4.14 种隔离级别,默认为 REPEATABLE 级别,同时使用一种称为 netx-6<span style="color: #008000;">#<span style="color: #008000;">MyISAM 存储引擎
不支持事务、表锁设计、支持全文索引,主要面向一些 OLAP 数 据库应用,在 MySQL 5.5.8<span style="color: #000000;"> 版本之前是默认的存储引擎(除 Windows 版本外)。数据库系统 与文件系统一个很大的不同在于对事务的支持,MyISAM 存储引擎是不支持事务的。究其根 本,这也并不难理解。用户在所有的应用中是否都需要事务呢?在数据仓库中,如果没有 ETL 这些操作,只是简单地通过报表查询还需要事务的支持吗?此外,MyISAM 存储引擎的 另一个与众不同的地方是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,这与 大多数的数据库都不相同。

<span style="color: #008000;">#<span style="color: #008000;">NDB 存储引擎
2003 年,MySQL AB 公司从 Sony Ericsson 公司收购了 NDB 存储引擎。 NDB 存储引擎是一个集群存储引擎,类似于 Oracle 的 RAC 集群,不过与 Oracle RAC 的 share everything 结构不同的是,其结构是 share nothing 的集群架构,因此能提供更高级别的 高可用性。NDB 存储引擎的特点是数据全部放在内存中(从 5.1<span style="color: #000000;"> 版本开始,可以将非索引数 据放在磁盘上),因此主键查找(primary key lookups)的速度极快,并且能够在线添加 NDB 数据存储节点(data node)以便线性地提高数据库性能。由此可见,NDB 存储引擎是高可用、 高性能、高可扩展性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

<span style="color: #008000;">#<span style="color: #008000;">Memory 存储引擎
正如其名,Memory 存储引擎中的数据都存放在内存中,数据库重 启或发生崩溃,表中的数据都将消失。它非常适合于存储 OLTP 数据库应用中临时数据的临时表,也可以作为 OLAP 数据库应用中数据仓库的维度表。Memory 存储引擎默认使用哈希 索引,而不是通常熟悉的 B+<span style="color: #000000;"> 树索引。

<span style="color: #008000;">#<span style="color: #008000;">Infobright 存储引擎
第三方的存储引擎。其特点是存储是按照列而非行的,因此非常 适合 OLAP 的数据库应用。其官方网站是 http://www.infobright.org/<span style="color: #000000;">,上面有不少成功的数据 仓库案例可供分析。

<span style="color: #008000;">#<span style="color: #008000;">NTSE 存储引擎
<span style="color: #000000;">网易公司开发的面向其内部使用的存储引擎。目前的版本不支持事务,但提供压缩、行级缓存等特性,不久的将来会实现面向内存的事务支持。

<span style="color: #008000;">#<span style="color: #008000;">BLACKHOLE
<span style="color: #000000;">黑洞存储引擎,可以应用于主备复制中的分发主库。

MySQL 数据库还有很多其他存储引擎,上述只是列举了最为常用的一些引擎。如果 你喜欢,完全可以编写专属于自己的引擎,这就是开源赋予我们的能力,也是开源的魅 力所在。

二 表操作(文件)

1 表相关操作

操作前要先切换到一个数据库下:use db1

创建表

注意:
1<span style="color: #000000;">. 在同一张表中,字段名是不能相同
2<span style="color: #000000;">. 宽度和约束条件可选
3. 字段名和类型是必须的

如:

create table t1(id int,name varchar(50),sex enum('male','female'),age int(3)); 创建表t1,其有两个id和name,sex,age四个字段,分别为int、varchar、enum、int类型

create table t2(id int,name char(10))engine=innodb default charset utf8;   创建t2并指定默认引擎和默认编码

查看表

show tables;      查看db1库下所有表名
show create table t1;  查看表t1的一些相关信息

desc t1;        查看表t1的结构

MariaDB [db1]> describe t1; +-------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(50) | YES | | NULL | | | sex | enum(,) | YES | | NULL | | | age | int(3) | YES | | NULL | | +-------+-----------------------+------+-----+---------+-------+MariaDB [db1]> show create table t1G; <span style="color: #008000;">#<span style="color: #008000;">查看表详细结构,可加G

修改表

12<span style="color: #000000;">. 增加字段
alter table 表名 add 字段名 数据类型 [完整性约束条件…];
<span style="color: #008000;">#
<span style="color: #008000;">新增加一个字段(默认增加在最后面)

<span style="color: #000000;">
alter table 表名 add 字段名 数据类型 [完整性约束条件…],add 字段名 数据类型 [完整性约束条件…];
<span style="color: #008000;">#
<span style="color: #008000;">增加多个字段

<span style="color: #000000;">
alter table 表名 add 字段名1 数据类型 [完整性约束条件…] after 字段名2;
<span style="color: #008000;">#
<span style="color: #008000;">将新增字段放在字段名2的后面

alter table 表名 add 字段名1 数据类型 [完整性约束条件…] first; <span style="color: #008000;">#
<span style="color: #008000;">将新增字段放在所有字段的最前面

3<span style="color: #000000;">. 删除字段
alter table 表名 drop 字段名;

4<span style="color: #000000;">. 修改字段
alter table 表名 modify 字段名 数据类型 [完整性约束条件…]; <span style="color: #008000;">#<span style="color: #008000;">修改字段数据类型
<span style="color: #000000;">
alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; <span style="color: #008000;">#<span style="color: #008000;">修改字段名
<span style="color: #000000;">
alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件…]; <span style="color: #008000;">#<span style="color: #008000;">修改字段名和数据类型
<span style="color: #000000;">

示例:
1<span style="color: #000000;">. 修改存储引擎
mysql><span style="color: #000000;"> alter table service
-> engine=<span style="color: #000000;">innodb;

2<span style="color: #000000;">. 添加字段
mysql><span style="color: #000000;"> alter table student10
-> add name varchar(20) <span style="color: #0000ff;">not<span style="color: #000000;"> null,-> add age int(3) <span style="color: #0000ff;">not null default 22<span style="color: #000000;">;

mysql><span style="color: #000000;"> alter table student10
-> add stu_num varchar(10) <span style="color: #0000ff;">not null after name; //<span style="color: #000000;">添加name字段之后

mysql><span style="color: #000000;"> alter table student10
-> add sex enum(<span style="color: #800000;">'<span style="color: #800000;">male<span style="color: #800000;">',<span style="color: #800000;">'<span style="color: #800000;">female<span style="color: #800000;">') default <span style="color: #800000;">'<span style="color: #800000;">male<span style="color: #800000;">' first; //<span style="color: #000000;">添加到最前面

3<span style="color: #000000;">. 删除字段
mysql><span style="color: #000000;"> alter table student10
-><span style="color: #000000;"> drop sex;

mysql><span style="color: #000000;"> alter table service
-><span style="color: #000000;"> drop mac;

4<span style="color: #000000;">. 修改字段类型modify
mysql><span style="color: #000000;"> alter table student10
-> modify age int(3<span style="color: #000000;">);
mysql><span style="color: #000000;"> alter table student10
-> modify id int(11) <span style="color: #0000ff;">not null primary key auto_increment; //<span style="color: #000000;">修改为主键

5<span style="color: #000000;">. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int(11) <span style="color: #0000ff;">not<span style="color: #000000;"> null primary key auto_increment;
ERROR 1068 (42000<span style="color: #000000;">): Multiple primary key defined

mysql> alter table student10 modify id int(11) <span style="color: #0000ff;">not<span style="color: #000000;"> null auto_increment;
Query OK,0 rows affected (0.01<span style="color: #000000;"> sec)
Records: 0 Duplicates: 0 Warnings: 0

6<span style="color: #000000;">. 对已经存在的表增加复合主键
mysql><span style="color: #000000;"> alter table service2
-><span style="color: #000000;"> add primary key(host_ip,port);

7<span style="color: #000000;">. 增加主键
mysql><span style="color: #000000;"> alter table student1
-> modify name varchar(10) <span style="color: #0000ff;">not<span style="color: #000000;"> null primary key;

8<span style="color: #000000;">. 增加主键和自动增长
mysql><span style="color: #000000;"> alter table student1
-> modify id int <span style="color: #0000ff;">not<span style="color: #000000;"> null primary key auto_increment;

9<span style="color: #000000;">. 删除主键
a. 删除自增约束
mysql> alter table student10 modify id int(11) <span style="color: #0000ff;">not<span style="color: #000000;"> null;

b. 删除主键
mysql><span style="color: #000000;"> alter table student10
-> drop primary key;

alter table t1 add age int;           给表t1增加新字段age

alter table t1 modify name char(12);      将表t1的name字段的格式修改字符个数为12

alter table t1 rename t2;          将表t1名称修改为t2

删除表

drop table 表名;    

mysql>>> create table t1(name varchar(20> show create table t1; mysql> insert into t1 values(); ERROR 1366>

<span style="color: #008000;">#<span style="color: #008000;">解决方法一:删除库db1,重建db1,字符编码指定为utf8

<span style="color: #008000;">#<span style="color: #008000;">解决方法二:修改
mysql> alter table t1 charset utf8; <span style="color: #008000;">#<span style="color: #008000;">修改表t1的编码
mysql> insert into t1 values(<span style="color: #800000;">'<span style="color: #800000;">林<span style="color: #800000;">'); <span style="color: #008000;">#<span style="color: #008000;">虽然t1的编码改了,但是t1的字段name仍然是按照latin1编码创建的
ERROR 1366<span style="color: #000000;"> (HY000):
mysql> alter table t1 modify name varchar(20); <span style="color: #008000;">#<span style="color: #008000;">需要重新定义下字段name
mysql> insert into t1 values(<span style="color: #800000;">'<span style="color: #800000;">林<span style="color: #800000;">'<span style="color: #000000;">);
mysql> select * <span style="color: #0000ff;">from<span style="color: #000000;"> t1;
+------+
| name |
+------+
| 林 |
+------+<span style="color: #000000;">

ps:不要忘记将数据库编码也改成utf8,这样以后在该数据库下创建表时,都默认utf8编码了

<span style="color: #008000;">#<span style="color: #008000;">配置文件:http://blog.csdn.net/yipiankongbai/article/details/16937815

-character-set=-character-set=-character-set=<span style="color: #008000;">#<span style="color: #008000;">mysql5.5以上:修改方式有所改动
<span style="color: #000000;"> [mysqld]
character
-set-server=<span style="color: #000000;">utf8
collation
-server=<span style="color: #000000;">utf8_general_ci
[client]
default
-character-set=<span style="color: #000000;">utf8
[mysql]
default
-character-set=<span style="color: #000000;">utf8

<span style="color: #008000;">#<span style="color: #008000;">2. 重启服务<span style="color: #008000;">

<span style="color: #008000;">3. 查看修改结果:

<span style="color: #000000;">s
show variables like <span style="color: #800000;">'<span style="color: #800000;">%char%<span style="color: #800000;">'

复制表

> create table new_service select * 只复制表结构
mysql
> select * <span style="color: #0000ff;">from
t1 where 1=2; //<span style="color: #000000;">条件为假,查不到任何记录
Empty set (
0.00<span style="color: #000000;"> sec)

方法一:
mysql> create table t2 select * <span style="color: #0000ff;">from t1 where 1=2<span style="color: #000000;">;
Query OK,0 rows affected (0.00<span style="color: #000000;"> sec)
Records: 0 Duplicates: 0 Warnings: 0

方法二:
mysql> create table t2 like t1;

2 表字段的数据类型

3 表的约束性规则

三 数据操作(记录)

一插入数据insert

1语法二: insert into 表名 values (值1,值3&hellip;值n);

2<span style="color: #000000;">. 指定字段插入数据
语法:
insert into 表名(字段1,字段3…) values (值1,值3…);

3<span style="color: #000000;">. 插入多条记录
语法:
insert into 表名 values
(值1,值3…值n),(值1,值3…值n);

二 更新数据update

==示例:
update mysql.user set password
=password(‘123<span style="color: #000000;">’)
where user
=’root’ <span style="color: #0000ff;">and
host=’localhost’;

三 删除数据delete

示例:
delete
<span style="color: #0000ff;">from
mysql.user where password=’’;

四 查询数据select

单表查询:

多表查询:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读