赞
踩
一、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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。