1. MySQL
MysQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)应用软件。
MysQL 是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
2.SQL 语言
结构化查询语言(Structured Query Language)简称 SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统:SQL 语句就是对数据库进行操作的一种语言。
Mysql服务器启动:
#MAC
mysqlstart
#Windows
net start mysql
#Linux
/etc/rc.d/init.d/mysqld start
#mysql打开
mysql -u root -p
常用的SQL语句:创建、查看数据库和表
SHOW DATABASES; #查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| GlobalToys |
| information_schema |
| jdbc |
| ltp |
| mysql |
| performance_schema |
| sys |
| testbase |
+--------------------+
8 rows in set (0.00 sec)
CREATE DATABASE NEWNAME; #创建数据库
mysql> create database Aplexia;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| Aplexia |
| GlobalToys |
| information_schema |
| jdbc |
| ltp |
| mysql |
| performance_schema |
| sys |
| testbase |
| xinyi |
+--------------------+
10 rows in set (0.00 sec)
USE NEWNAME; #选择数据库
SHOW TABLES; #查看当前数据库存在表
mysql> use ltp
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_ltp |
+---------------+
| exams |
| new |
| papers |
| questions |
| role |
| subjects |
| users |
+---------------+
7 rows in set (0.00 sec)
CREATE TABLE NEWTABLE; #创建表
mysql> create table xinyi (
sno char(10) NOT NUll,
cname varchar(20) NOT NULL,
CONSTRAINT C1 PRIMARY KEY(sno,cname)
);
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+-------------------+
| Tables_in_aplexia |
+-------------------+
| xinyi |
+-------------------+
1 row in set (0.00 sec)
DESCRIBE NEWTABLE; #显示表结构
mysql> describe xinyi;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sno | char(10) | NO | PRI | NULL | |
| cname | varchar(20) | NO | PRI | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
也可以直接简写:desc xinyi;
#查看表sql源码
show create table xinyi;
#对数据库进行操作
#分离数据库:
sp detach db;
#附加数据库:
sp attach db 数据库名(附加需要完整的路径名)
#修改数据库的名称:
sp_ renamedb 'old name', new_name';
简单条件语句查询:
#删除表
drop TABLE NEWTABLE;
mysql> drop table new;
Query OK, 0 rows affected (0.00 sec)
#清空表
delete from NEWTABLE;
mysql> select * from role;
+--------+--------------+
| roleid | rolename |
+--------+--------------+
| 1 | 管理员 |
| 2 | 普通用户 |
+--------+--------------+
2 rows in set (0.00 sec)
#仅复制表结构
mysql>create table newrole like role;
#where使的条件不成立,仅复制表结构
mysql> create table newrole3 select * from subjects where 2=3;
mysql> show tables;
+---------------+
| Tables_in_ltp |
+---------------+
| exams |
| newrole |
| papers |
| questions |
| role |
| subjects |
| users |
+---------------+
7 rows in set (0.00 sec)
#复制表结构与数据
mysql> create table newrole1 select * from subjects;
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
#给users表查创建一个unique索引pk_name
create UNIQUE INDEX pk_name on users(major);
#索引是不可更改的,想要更改必须现删除重建
drop index idxname;
#给users表添加一个主键
alter table users ADD PRIMARY KEY(major);
#删除主键
alter table users drop primary key(major);
#视图创建
CREATE VIEW viewusers
AS
SELECT username,password
from users;
#删除视图
drop view viewusers;
#选择user表中username=111
SELECT * FROM users WHERE username="111"
#向users表中插入一条数据username和password
INSERT INTO users(username,password) VALUES(100861111,1234);
update BEWTABLE set 字段 2=“数据x” where 字段1=“数据1”;
mysql> select * from xinyi;
+------+-------+
| sno | cname |
+------+-------+
| 2021 | rjw |
+------+-------+
1 row in set (0.00 sec)
mysql> update xinyi set cname="网络安全" where cname="rjw";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from xinyi;
+------+--------------+
| sno | cname |
+------+--------------+
| 2021 | 网络安全 |
+------+--------------+
1 row in set (0.00 sec)
为了便捷一点,在上面很多语句中博主偷懒并没有语句大小写标准化,建议大家平时练习中养成SQL指定大写的习惯~以上是一些简单的SQL语句,此外还有更高级一些语句存在,UNION运算符、EXPECT运算符、左连接、右连接、全连接。感兴趣的小伙伴可以去学习一下进阶版本呢~