一、MySQL数据库介绍
- MySQL是一款深受欢迎的开源关系型数据库
- 它是Oracle旗下的产品
- 遵守GPL协议,可以免费使用与修改
特点如下:
- 性能卓越、服务稳定
- 开源、无版权限制、成本低
- 多线程、多用户
- 基于C/S(客户端/服务器)架构
- 安全可靠
MySQL商业版是由MySQL AB公司负责开发与维护,需要支付费用才能使用
MySQL社区版是由分散咋世界各地的MySQL开发者、爱好者仪器开发与维护,可以免费使用
两者区别:
- 商业版组织管理与测试环节更加严格,会比社区版更稳定
- 商业版不遵守GPL,社区版遵从GPL可以免费使用
- 商业版可获得7*24小时的服务,社区版则没有
二、MYSQL基本操作命令
查看数据库信息:
mysql> show databases; ## 查看数据库信息(注意:大部分MYSQL命令要以分号结尾)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
查看数据库中表的信息
mysql> use mysql; ## 使用某个数据库
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_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| user |
+---------------------------+
31 rows in set (0.00 sec)
显示数据表的结构(字段)
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
SQL语句概述
SQL语言
- Structured Query Language的缩写,即结构化查询语言
- 关系型数据库的标准语言
- 用于维护管理数据库(包括数据查询、数据更新、访问控制、对象管理等功能)
SQL分类
- DDL:数据定义语言
- DML:数据操纵语言
- DQL:数据查询语言
- DCL:数据控制语言
创建数据库和表
- DDL语句可用于创建数据库对象,如库、表、索引等使
- 用DDL语句新建库、表
创建数据库
语法格式:CREATE DATABASE 数据库名
例:创建一个名为bbs的数据库
mysql> create database bbs;
Query OK, 1 row affected (0.00 sec)
创建数据表
语法格式:CREATE TABLE 表名(字段定义......)
例:create table info (id int(3) not null primary key auto_increment,name varchar(10) not null,score decimal(5,2),address varchar(50) default '未知');
Query OK, 0 rows affected (0.01 sec)
含义:创建一个名为info的数据表(字段1是id,类型为整型000-999,不允许为空,定义为主键,并让它自增长;字段2是name,类型为字符串长度为10,不允许为空,长度为5,小数点后保留2位;字段3是address,类型为字符串,长度为50,约束default如果不填地址则自动用‘未知’替代它);
mysql> desc info; ## 显示数据表的结构
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(3) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| score | decimal(5,2) | YES | | NULL | |
| address | varchar(50) | YES | | 未知 | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.02 sec)
数据库提权
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
含义:允许使用root用户从任意终端进行访问所有数据库中的所有表
删除数据库和表
- 使用DDL语句删除库、表
删除指定的数据表
DROP TABLE [数据库名.]表名
例:mysql> drop table bbs.info; ## 删除数据库bbs中的info表
删除指定的数据库
DROP DATABSES 数据库名
例:mysql> drop database bbs;
管理表中的数据
- DML语句用户对表中的数据进行管理
包括的操作:
- INSERT:插入新数据
- UPDATE:更新原有数据
- DELETE:删除不需要的数据
向表中插入数据
方法一:insert into info (id,name,score,address) values (3,'zhangsan',99.5,'hangzhou');
方法二:mysql> insert into info values(5,'lisi','80.5','chongqing');
将表中成绩大于等于90的条目筛选出并存放进新表中
mysql> create table new_table as select * from info where score >= 90;
修改、更新数据表中的数据记录
语法格式:UPDATE 表名 SET 字段名1=值1[,字段名2=值2] WHERE 条件表达式
例:update info set score=66 where name='zhangsan';
在数据表中删除指定的数据记录
mysql> delete from bbs.test where name='zhangsan'; ## 删除数据库bbs中test表内name字段为zhangsan的数据
不带where条件的语句表示删除表中所有记录
mysql> delete from test; ## 删除test表中的所有数据
删除表中符合一定条件的数据
mysql> delete from bbs.test where score >=90; ## 数据库bbs中test表内score字段值大于等于90的数据
- DQL是数据库查询语句,只有SELECT
- 用于从数据表中查找符合条件的数据记录
- 查询时可不指定条件
语法结构:SELECT 字段名1,字段名2 ...... FROM 表名
例:mysql> select * from bbs.users; ## 查询bbs数据库中users表内所有内容
清空表:
mysql> truncate table info;