MySQL是关系型数据库系统(RDBMS:Relational Database Management System)。
SQL(Structured Query Language):是一种结构化查询语言,用于访问和处理关系型数据库系统的计算机标准语言。
SQL标准命令:
DDL(数据定义语言)
数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有:
CREATE TABLE---- 创建(在数据库中创建新表、表视图或其他对象)
ALTER TABLE-- --更改 (修改现有的数据库对象,如表)
DROP TABLE---- 删除 (删除数据库中的整个表、表或其他对象的视图)
DML(数据操纵语言)
数据操纵语言用于检索、插入和修改数据,数据操纵语言是最常见的SQL命令
数据操纵语言命令包括:
INSERT-- 插入 (创建记录)
DELETE-- 删除 (删除记录)
UPDATE-- 修改(修改记录)
SELECT -- 检索 (从一个或多个表检索某些记录)
DCL(数据控制语言)
数据控制语言为用户提供权限控制命令
用于权限控制的命令有:
GRANT-- 授予权限
REVOKE-- 撤销已授予的权限
我是安装的MariaDB,Oracle收购SUN公司,收购了MYSQL。
查询已有数据库列表
show databases;
创建数据库
CREATE DATABASE 数据库名字 [库选项];
查看数据库的创建语句
show create database 数据库名字;
修改数据库,注意:数据库的名字不能够修改
alter database 数据库名字 [库选项];
删除数据库
drop database [if exists] 数据库名字;
进入/使用数据库的操作
use 数据库名;
进入数据库后数据表的相关操作
创建表的语句格式
Create table [if not exists] 表名
(字段名字 数据类型 [列约束],
字段名字 数据类型 [列约束] ##最后一行不需要逗号)
[表选项];
进入数据库students创建一个名为“hero”的表:
CREATE TABLE IF NOT EXISTS hero (
id char(5) primary key,
name char(20)unique,
sex char(2),
age int(3),
kungfu varchar(20) not null);
具体解释
约束(Constraints)
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。
DEFAULT - 规定没有给列赋值时的默认值。
AUTO_INCREMENT- 会在新记录插入表中时生成一个唯一的数字。
存储引擎: engine 具体的存储引擎(InnoDB和MyISAM)
搜索带有关键词的数据表
show tables like '%关键词%';
查看创建表时的语句
show create table 表名 \G
查看表结构
desc/describe/show columns from 表名;
修改数据表
数据表可修改的部分:表结构 和 字段
表结构
表名:
rename table 老表名 to 新表名;
表选项:字符集、校对集和存储引擎
alter table 表名 表选项 [=] 值;
表字段
新增字段:
alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
重命名字段
alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置]
删除字段
alter table 表名 drop 字段名;
删除数据表
drop table [if exists] 表名1,表名2...; #可以一次性删除多张表
数据操作
新增数据
INSERT INTO 表名 VALUES (值列表)[,(值列表)]; ## 可以一次性插入多条记录
INSERT INTO 表名 (字段列表) VALUES (值列表)[,(值列表)];
查看数据
SELECT */字段列表 FROM 表名 [WHERE 条件];
更新数据
UPDATE 表名 SET 字段 = 值 [WHERE条件]; #建议都有where: 要不然是更新全部
删除数据
DELETE FROM 表名 [WHERE条件]; #建议都有where: 要不然是删除全部
清空表中所有数据
要删除表中的所有数据,可使用不带WHERE子句的DELETE语句。 但是对于具有几百万行的大表,DELETE语句很慢且效率不高。
要快速删除大表中的所有行,使用以下TRUNCATE TABLE语句:
TRUNCATE TABLE 表名;