51cto mysql_mysql

关于mysql的安装等内容,稍后写博客详解,本篇主要在于mysql的使用

1.mysql安装后,统一编码

#1.my.cnf中

#mysql5.5以上:修改方式有所改动

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

#2. 重启服务

#3. 查看修改结果:

show variables like '%char%'

mysql> \s

--------------

/application/mysql/bin/mysql Ver 14.14 Distrib 5.6.34, for linux-glibc2.5 (x86_64) using EditLine wrapper

Connection id: 5

Current database:

Current user: root@localhost

SSL: Not in use

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.6.34 MySQL Community Server (GPL)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: utf8

Db characterset: utf8

Client characterset: utf8

Conn. characterset: utf8

UNIX socket: /tmp/mysql.sock

Uptime: 1 min 33 sec

Threads: 1 Questions: 5 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.053

--------------

2.SQL语句

2.1SQL语句分类

"DDL语句-数据定义语言:"

数据库,表,视图,索引,存储过程,如create,drop,alter

"DML语句-数据操纵语言:"

增加数据-insert,删除数据-delete,修改数据-update,查数据-select

"DCL语句-数据控制语言:"

如用户的访问权限grant,revoke

2.2初识SQL语句

#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;

2.3数据库

2.3.1系统数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

5 rows in set (0.00 sec)

information_schema:

虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息,列信息,权限信息,字符信息

dbb547e1c0e701e34b701ae58b58b002.png

performance_schema:

MySQL5.5版本开始新增的数据库

主要用于手机数据库服务器性能参数,记录处理查询请求时发生的各种事件,锁等

51e7d7bccf97d21d794a255160d795fc.png

mysql

授权库,主要存储系统用户的权限信息

10c2d1e9c85a800e68277a312b76f022.png

test

mysql数据库系统自动创建的测试数据库,默认里面没有表

022ef097ddd021aae60a6f79ef567f19.png

2.3.2数据库相关操作

"创建数据库"

create database 数据库名 charset utf8;

"数据库命名规则"

1.可以是字母,数字,下划线,@,#,$

2.区分大小写

3.唯一性

4.不能使用关键字,如select,drop

5.不能单独使用数据

6.最好命名和其功能相关

7.最长128位

"查看有哪些数据库"

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| db1 |

| mysql |

| performance_schema |

| test |

+--------------------+

5 rows in set (0.00 sec)

"查看建库语句"

mysql> show create database db1;

+----------+--------------------------------------------------------------+

| Database | Create Database |

+----------+--------------------------------------------------------------+

| db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+----------+--------------------------------------------------------------+

1 row in set (0.00 sec)

"select database()"

mysql> select database();

+--------------------+

| database() |

+--------------------+

| information_schema |

+--------------------+

1 row in set (0.01 sec)

"切换到某个数据库下,在该库下,select语句不需要加库名"

mysql> use db1;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

+---------------+

| Tables_in_db1 |

+---------------+

| t1 |

+---------------+

1 row in set (0.00 sec)

'"删除数据库'''

mysql> drop batabase db1;

"修改数据库"

mysql> alter database db1 charset utf8;

Query OK, 1 row affected (0.00 sec)

2.4存储引擎

"查看MySQL中有哪些存储引擎"

mysql> show engines\G

*************************** 1. row ***************************

Engine: MyISAM

Support: YES

Comment: MyISAM storage engine

Transactions: NO

XA: NO

Savepoints: NO

*************************** 2. row ***************************

Engine: CSV

Support: YES

Comment: CSV storage engine

Transactions: NO

XA: NO

Savepoints: NO

*************************** 3. row ***************************

Engine: MRG_MYISAM

Support: YES

Comment: Collection of identical MyISAM tables

Transactions: NO

XA: NO

Savepoints: NO

*************************** 4. row ***************************

Engine: BLACKHOLE

Support: YES

Comment: /dev/null storage engine (anything you write to it disappears)

Transactions: NO

XA: NO

Savepoints: NO

*************************** 5. row ***************************

Engine: MEMORY

Support: YES

Comment: Hash based, stored in memory, useful for temporary tables

Transactions: NO

XA: NO

Savepoints: NO

*************************** 6. row ***************************

Engine: PERFORMANCE_SCHEMA

Support: YES

Comment: Performance Schema

Transactions: NO

XA: NO

Savepoints: NO

*************************** 7. row ***************************

Engine: ARCHIVE

Support: YES

Comment: Archive storage engine

Transactions: NO

XA: NO

Savepoints: NO

*************************** 8. row ***************************

Engine: InnoDB

Support: DEFAULT

Comment: Supports transactions, row-level locking, and foreign keys

Transactions: YES

XA: YES

Savepoints: YES

*************************** 9. row ***************************

Engine: FEDERATED

Support: NO

Comment: Federated MySQL storage engine

Transactions: NULL

XA: NULL

Savepoints: NULL

9 rows in set (0.00 sec)

mysql>

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

mysql> show variables like 'storage_engine%';

+----------------+--------+

| Variable_name | Value |

+----------------+--------+

| storage_engine | InnoDB |

+----------------+--------+

1 row in set (0.00 sec)

mysql>

"InnoDB存储引擎"

支持事务,行级锁定,有表空间和索引

"MyISAM储存引擎"

不支持事务,表级别锁定,支持全文索引

"memery存储引擎"

数据库重启或崩溃,表中数据将会消失

"BLACKHOLE黑洞存储引擎"

数据放进去就没有了

"指定存储引擎"

1.建表时指定

MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb;

MariaDB [db1]> create table innodb_t2(id int)engine=innodb;

MariaDB [db1]> show create table innodb_t1;

MariaDB [db1]> show create table innodb_t2;

2.在配置文件中指定默认存储引擎

/etc/my.cnf

[mysqld]

default-storage-engine=INNODB

innodb_file_per_table=1

#"创建四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试"

mysql> use db1

Database changed

mysql> create table t1(id int)engine=innodb;

Query OK, 0 rows affected (0.01 sec)

mysql> create table t2(id int)engine=myisam;

Query OK, 0 rows affected (0.01 sec)

mysql> create table t3(id int)engine=memory;

Query OK, 0 rows affected (0.00 sec)

mysql> create table t4(id int)engine=blackhole;

Query OK, 0 rows affected (0.00 sec)

#"可以看到,后两种存储引擎只有表结构,无数据,因为只有.frm"

[root@m01 db1]# ll

total 152

-rw-rw---- 1 mysql mysql 61 May 22 17:49 db.opt

-rw-rw---- 1 mysql mysql 8556 May 22 18:52 t1.frm

-rw-rw---- 1 mysql mysql 98304 May 22 18:52 t1.ibd

-rw-rw---- 1 mysql mysql 8556 May 22 18:52 t2.frm

-rw-rw---- 1 mysql mysql 0 May 22 18:52 t2.MYD

-rw-rw---- 1 mysql mysql 1024 May 22 18:52 t2.MYI

-rw-rw---- 1 mysql mysql 8556 May 22 18:53 t3.frm

-rw-rw---- 1 mysql mysql 8556 May 22 18:53 t4.frm

[root@m01 db1]# pwd

/application/mysql/data/db1

#"memory,在重启mysq或重启机器后,表中数据清空"

mysql> insert into t3 values(2);

Query OK, 1 row affected (0.00 sec)

mysql> select * from t3;

+------+

| id |

+------+

| 2 |

+------+

1 row in set (0.00 sec)

mysql>

[root@m01 db1]# service mysqld restart

Shutting down MySQL.... SUCCESS!

Starting MySQL.. SUCCESS!

[root@m01 db1]#

mysql> select * from t3;

Empty set (0.00 sec)

#"blackhole,往表中插入任何数据,都相当于丢入黑洞,表中不保存记录"

mysql> insert into t4 values(2);

Query OK, 1 row affected (0.00 sec)

mysql> select * from t4;

Empty set (0.00 sec)

2.5表的增删改查

2.5.1创建表

create table 表名(

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

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

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

);

#注意:

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

2. 宽度和约束条件可选

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

mysql> create database db1 charset utf8;

Query OK, 1 row affected (0.00 sec)

mysql> use db1;

Database changed

mysql> create table t1(id int,name varchar(50),sex enum('male','female'),age int);

Query OK, 0 rows affected (0.01 sec)

mysql> show tables;

+---------------+

| Tables_in_db1 |

+---------------+

| t1 |

+---------------+

1 row in set (0.01 sec)

mysql> desc t1;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

mysql> show create table t1\G;

*************************** 1. row ***************************

Table: t1

Create Table: CREATE TABLE `t1` (

`id` int(11) DEFAULT NULL,

`name` varchar(50) DEFAULT NULL,

`sex` enum('male','female') DEFAULT NULL,

`age` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.01 sec)

ERROR:

No query specified

mysql> select * from t1;

Empty set (0.00 sec)

mysql>

"插入数据"

mysql> insert into t1 values(1,'vita','male',18);

Query OK, 1 row affected (0.00 sec)

2.5.2查看表结构

#查看表中字段

mysql> desc t1;

+-------+-----------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-----------------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(11) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

# 查看建表语句

mysql> show create table t1\G;

*************************** 1. row ***************************

Table: t1

Create Table: CREATE TABLE `t1` (

`id` int(11) DEFAULT NULL,

`name` varchar(50) DEFAULT NULL,

`sex` enum('male','female') DEFAULT NULL,

`age` int(11) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

ERROR:

No query specified

mysql>

2.5.3修改表结构

语法:

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

"修改存储引擎"

mysql> alter table t2 engine=innodb;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

"添加字段"

mysql> alter table t2 add class varchar(10) not null;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table t2 add school varchar(10) not null,add course varchar(10) not null;#添加多个字段

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| class | varchar(10) | NO | | NULL | |

| school | varchar(10) | NO | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

4 rows in set (0.00 sec)

mysql> alter table t2 add name varchar(10) not null after id;#id后添加一个字段

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id | int(11) | YES | | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | varchar(10) | NO | | NULL | |

| school | varchar(10) | NO | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

mysql> alter table t2 add age int not null first;#设置为第一个字段

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| age | int(11) | NO | | NULL | |

| id | int(11) | YES | | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | varchar(10) | NO | | NULL | |

| school | varchar(10) | NO | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

6 rows in set (0.00 sec)

"删除字段"

mysql> alter table t2 drop school;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| age | int(11) | NO | | NULL | |

| id | int(11) | YES | | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | varchar(10) | NO | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

"修改字段类型modify"

mysql> alter table t2 modify class char(10);

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

"添加约束,设置auto_increment"

mysql> alter table t2 modify id int not null primary key auto_increment;#设置为主键,并自动增长

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+----------------+

| age | int(11) | NO | | NULL | |

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | varchar(10) | NO | | NULL | |

| class | char(10) | YES | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+----------------+

5 rows in set (0.00 sec)

mysql>

"添加主键和自动增长"

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

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

"添加主键"

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

mysql> desc t2;

+--------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+----------------+

| age | int(11) | NO | | NULL | |

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | varchar(10) | NO | | NULL | |

| class | char(10) | YES | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+----------------+

5 rows in set (0.00 sec)

"删除主键自增约束"

mysql> alter table t2 modify id int not null;

Query OK, 0 rows affected (0.02 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| age | int(11) | NO | | NULL | |

| id | int(11) | NO | PRI | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | char(10) | YES | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

mysql>

"删除主键"

mysql> alter table t2 drop primary key;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> desc t2;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| age | int(11) | NO | | NULL | |

| id | int(11) | NO | | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | char(10) | YES | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

2.5.4复制表

mysql> select * from t2;

+-----+----+------+--------+---------+

| age | id | name | class | course |

+-----+----+------+--------+---------+

| 12 | 1 | vita | python | python1 |

+-----+----+------+--------+---------+

1 row in set (0.00 sec)

"复制表结构和数据"

mysql> create table t4 select * from t2;

Query OK, 1 row affected (0.01 sec)

Records: 1 Duplicates: 0 Warnings: 0

mysql> select * from t4;

+-----+----+------+--------+---------+

| age | id | name | class | course |

+-----+----+------+--------+---------+

| 12 | 1 | vita | python | python1 |

+-----+----+------+--------+---------+

1 row in set (0.00 sec)

"只复制表结构"

mysql> create table t5 select * from t2 where 1=2;

Query OK, 0 rows affected (0.01 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> select * from t5;

Empty set (0.00 sec)

mysql> desc t5;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| age | int(11) | NO | | NULL | |

| id | int(11) | NO | | NULL | |

| name | varchar(10) | NO | | NULL | |

| class | char(10) | YES | | NULL | |

| course | varchar(10) | NO | | NULL | |

+--------+-------------+------+-----+---------+-------+

5 rows in set (0.00 sec)

2.5.5删除表

mysql> drop table t5;

Query OK, 0 rows affected (0.01 sec)

mysql> drop table t4;

Query OK, 0 rows affected (0.01 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值