当前位置:   article > 正文

关系型数据库管理系统MySQL的优势和瓶颈分析

mysql的ddl语句key,Mysql基础入门-SQL_DDL语句

b23c0da21a99be056297a4edd695dc7d.png

一、mysql数据库介绍:

mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表。保持数据的一致性是关系型数据库的最大优势

关系型数据库瓶颈:

1.高并发读写硬盘I/O瓶颈;

2.对于关系型数据来说在一张海量数据表中查询效率是非常低的;

3.横向扩展困难,当一个应用系统用户量访问与日俱增的时候数据库没有办法像web server那样简单的通过添加更多的硬件或者节点来扩展和提供负载能力。

对于并发量不高及数据量较小的应用系统mysql还是占有很大优势,且目前mysql属于开源软件,且目前mysql的衍生数据库mariadb也正在快速发育中。

二、mysql基础入门:

SQL

sql:用户与数据库交付语言,被称为sql,sql是 Structured Query Language 结构话查询语言简称,是关系型数的数据库应用语言;sql分类DDL:数据定义语句

这些语句定义了不同数据段,数据库,列,表,索引等数据库对象。常用关键字包括create ,drop ,alter

DML:数据操纵语句

用于添加、删除、更新、、和查询数据库记录、常用语句关键字包括:insert、delete、update、select

DCL:数据控制语言

用于控制不同数据段之前的许可和访问级别语句,这些语句定义了数据库、表、字段、用户访问、权限和安全级别,主要的语句关键字包括grant、revoke。

DDL语句DDL 是数据定义的缩写,简单来说就是对数据库内部对象进行创建、删除、修改等操作的语言,与DML的区别是DML只是对表内部数据进行操作,而不会涉及到定义结构的修改更不会涉及其他对象,DDL有数据库管理员使用。

库操作

1.数据库创建

启动数据库连接到mysql服务器使用[root@localhost ~]# mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

当输入一条命令要其执行后面加上;或者\g结束,如果不添加默认为换行继续输入命令。

使用help;或者\h命令来获取帮助,通过\c命令来清除命令行buffer。

数据库创建语法如下:CREATE DATABASE DBNAME;

例如:mysql> CREATE DATABASE liaodb;

Query OK, 1 row affected (0.00 sec)

Query OK 表示创建成功,(DML和DDL所有的操作不包括select操作成功后都会显示 Query OK)

1 row affected 表示操作只影响了一行记录;

(0.00 sec)表示操作执行的时间

2.查看数据库

语法:

SHOW DATABASES;mysql> show DATABASES;

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

| Database           |

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

| information_schema |

| liaodb             |

| mysql              |

| test               |

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

4 rows in set (0.00 sec)

默认存在的数据:

information_schema 数据对象信息存储,例如用户表信息。

mysql 存储了系统的用户权限等信息

test系统自动创建的测试数据库,所有用户都可以使用;

3.选择数据库

语法:

USE DBNAME;mysql> USE mysql;

Database changed

4.删除数据库

删除数据语法

drop database DBNAME;

删除我们刚刚创建的数据库liaodbmysql> drop database liaodb;

Query OK, 0 rows affected (0.00 sec)

注:

删除数据库谨慎操作,默认删除数据库后下面的表会一起被删除。

表操作

1.创建表

语法

CREATE TABLE TABLENAME(column_name_1 colemn_type_1 constraints,olumn_name_2 colemn_type_2 constraintsolumn_name_3 colemn_type_3 constraints)

column_name_1 是列的名字;column_type是列的数据类型;constraints是列的约束条件。

下面创建一个最常见的普通班级统计表

表包括name,age,sex,字段类型使用varchar(10) ,date ,varchar(1)mysql> create table class_one(name varchar(10),age INT(3),sex varchar(1));

Query OK, 0 rows affected (0.02 sec)

mysql> show tables;

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

| Tables_in_test |

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

| class_one      |

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

1 row in set (0.00 sec)

2.查看表的定义

语法:

DESC TABLENAME;mysql> DESC class_one;

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

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

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

| name   | varchar(10) | YES  |     | NULL    |       |

| age    | int(3)      | YES  |     | NULL    |       |

| sex    | varchar(1)  | YES  |     | NULL    |       |

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

4 rows in set (0.00 sec)

查看更为详细的表定义信息show create table tablename \G;

mysql> show create table class_one \G;

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

Table: class_one

Create Table: CREATE TABLE `class_one` (

`name` varchar(10) DEFAULT NULL,

`age` int(3) DEFAULT NULL,

`sex` varchar(1) DEFAULT NULL,

ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

\G选项的含义是使得记录能够按照字段竖向排列。

3.删除表DROP TABLE TABLENAME;

mysql> DROP TABLE class_one;

Query OK, 0 rows affected (0.00 sec)

4.修改表

1)修改表类型语法如下:

ALTER TABLE tablename MODIFY[COLUMN] column_definition [FIRST|AFTER col_name]

例如:将之前制作的class_one表中的name字段类型修改为改为verchar(20)mysql> alter table class_one modify name varchar(20);

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table class_one \G;

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

Table: class_one

Create Table: CREATE TABLE `class_one` (

`name` varchar(20) DEFAULT NULL,

`age` int(3) DEFAULT NULL,

`sex` varchar(1) DEFAULT NULL,

`deptno` int(2) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

ERROR:

No query specified

2)增加表字段语法如下

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name]

FIRST|AFTER

定义新增的一条字段放置在那条字段前FIRST或者后AFTER

例如在class_one表中添加一条 fractionmysql> alter table class_one add column fraction int(3);

Query OK, 0 rows affected (0.00 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class_one;

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

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

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

| name     | varchar(15) | YES  |     | NULL    |       |

| age      | int(3)      | YES  |     | NULL    |       |

| sex      | varchar(1)  | YES  |     | NULL    |       |

| fraction | int(3)      | YES  |     | NULL    |       |

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

4 rows in set (0.00 sec)

3)删除表中字段语句如下

ALTER TABLE tablename drop [COLUMN] column_definition [FIRST|col_name]

例如将class中fraction和deptno字段删除mysql> desc class_one;

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

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

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

| name     | varchar(6) | YES  |     | NULL    |       |

| age      | int(3)     | YES  |     | NULL    |       |

| sex      | varchar(1) | YES  |     | NULL    |       |

| fraction | int(3)     | YES  |     | NULL    |       |

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

4 rows in set (0.00 sec)

mysql> alter table class_one drop column fraction;

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table class_one drop column deptno;

Query OK, 0 rows affected (0.00 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class_one;

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

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

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

| name  | varchar(6) | YES  |     | NULL    |       |

| age   | int(3)     | YES  |     | NULL    |       |

| sex   | varchar(1) | YES  |     | NULL    |       |

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

3 rows in set (0.00 sec)

4)字段改名语法如下

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST\AFTER col_name]

例如将age字段更改为age1,字段类型更改为int(2);mysql> alter table class_one change column age age1 int(2);

Query OK, 0 rows affected (0.00 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class_one;

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

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

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

| name  | varchar(6) | YES  |     | NULL    |       |

| age1  | int(2)     | YES  |     | NULL    |       |

| sex   | varchar(1) | YES  |     | NULL    |       |

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

3 rows in set (0.00 sec)

5)更改字段排序

语法关键字

FIRST|AFTER

FIRST 表示放在某字段前

AFTER 表示放在某字段后

示例:新增一个字段为age 并且将其放在name字段后mysql> alter table class_one add column age int(4) after name;

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class_one

-> ;

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

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

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

| name  | varchar(6) | YES  |     | NULL    |       |

| age   | int(4)     | YES  |     | NULL    |       |

| sex   | varchar(1) | YES  |     | NULL    |       |

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

3 rows in set (0.00 sec)

修改字段name将其放到sex字段后mysql> desc class_one;

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

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

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

| name  | varchar(6) | YES  |     | NULL    |       |

| age   | int(4)     | YES  |     | NULL    |       |

| sex   | varchar(1) | YES  |     | NULL    |       |

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

3 rows in set (0.00 sec)

mysql> alter table class_one modify name varchar(6) after sex;

Query OK, 0 rows affected (0.00 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class_one;

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

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

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

| age   | int(4)     | YES  |     | NULL    |       |

| sex   | varchar(1) | YES  |     | NULL    |       |

| name  | varchar(6) | YES  |     | NULL    |       |

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

3 rows in set (0.01 sec)

6)更改表名语法

ALTER TABLE tablename RENAME [TO] new_tablename

例如将class_one 改成成class_1mysql> show tables;

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

| Tables_in_test |

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

| class_one      |

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

1 row in set (0.00 sec)

mysql> alter table class_one rename class_1;

Query OK, 0 rows affected (0.00 sec)

mysql> show tables ;

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

| Tables_in_test |

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

| class_1        |

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

1 row in set

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/212707
推荐阅读
相关标签
  

闽ICP备14008679号