一,MySQL的常用命令
查看当前所有的数据库:show databases
选择指定的库:use 库名
查看当前的所有表:show tables
查看其他库的所有表:show tables from 库名
查看mysql版本:select version()
二,结构化查询语言(sql)
结构化查询语言(Structured Query Language)简称SQL,是一种数据库程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统.
SQL语言特点:
不是某个特定数据库专有的语言,几乎所有关系型数据库都支持SQL
简单易学,灵活使用可以进行复杂和高级的数据库操作
1.数据结构定义语言DDL(Data Definition Language):
用来创建和修改数据库结构的语言
常用语句:creat,alter,drop,rename
创建,删除数据库
创建:CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]
删除:DROP DATABASE 数据库名 / [IF EXISTS数据库名]
修改:ALTER DATABASE 数据库名 CHARSET gbk
数据库的基本概念:
(1)数据表:
表(table)是构成关系型数据库的基本元素。表是由行和列组成的。表中的列被看成是这些记录的字段,表中的行是一条记录,也就是一条数据
(2)字段(column)
字段是表中的一列,用于保存每条记录的特定信息。
(3)记录(row)
记录时表里的一行数据
设计表:
创建表之前,需明确表的特征:
(1)表明
(2)表中的字段
(3)字段的数据类型和长度
(4)约束
数据类型:
字符:
char(n)n = 5,长度为5的定长字符串,固定存储5个字符,即使只存储一个字符,也是占5个字符空间
varchar(n),最大字节长度为n的可变长字符串n = 5最大上限能存储5个字符,实际存储几个字符,就占实际的空间
日期
date 日期,年月日
datetime 时间,年月日 时分秒
整数:
浮点
decimal
数据类型(M,D):
M:精度,数据的总长度
D:标度,小数点后的长度
长文本字符
TINYTEXT:最大长度255个字符(2^8-1)
TEXT:最大长度65535(2^16-1)
MEDIUMTEXT:最大长度16777215(2^24-1)
LONGTEXT:最大长度4294967295(2^32-1)
约束:
主键:
在一张表中代表唯一的一条记录,不能为空,不能重复
约束:
PRIMARY KEY:设置为主键约束
NOT NULL:不能为空约束
UNIQUE:唯一性约束
检查约束:设置条件(check())
外键约束:
AUTO_INCREMENT
主键自动增长,设置为自动增长时,只能为整数类型
默认值
DEFAULT default_value
字段解释
comment'注释'
eg:
-- 创建数据库
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8
-- 删除数据库
DROP DATABASE schooldb
-- 修改数据库字符编码
ALTER DATABASE schooldb CHARSET utf8
-- 注意mysql数据库名字创建后不支持修改
/*
创建表
表是数据中基本的组成单位
由列和行构成
列(column)/字段,是要存储的具体的信息
学生信息:
学号,姓名,性别,电话,生日,身高,注册时间....
行(row)/记录
就是表中的一条数据
创建表:
确定表名(存储哪类信息) 学生信息表
确定列名(具体的信息) 学号,姓名,性别,电话,生日,身高,注册时间
确定列的数据类型和长度
确定约束(唯一约束,不能为空...)
mysql中支持的数据类型:
字符型:
char(n) 存储定长为n个字符, 一般用于存储固定长度的字符串,
即使只存储了一个字符,也会占用n个空间
varchar(n) 存储最大上限为n个字符,用于存储变长的字符串,
实际存储几个字符,占用几个空间
日期类型:
date: 日期 年月日
datetime: 时间 年月日时分秒
数值类型:
整数
TINYINT
SMALLINT
int (常用)
浮点:
decimal(M,D)
长文本字符(存储新闻,小说)
TINYTEXT:最大长度255个字符(2^8-1)
TEXT:最大长度65535(2^16-1)
MEDIUMTEXT:最大长度16777215(2^24-1)
LONGTEXT最大长度4294967295(2^32-1)
*/
-- 学号,姓名,性别,电话,生日,身高,注册时间
CREATE TABLE student(
num INT,
NAME VARCHAR(8),
gender CHAR(1),
phone CHAR(11),
birthday DATE,
height DECIMAL(3,2),
regtime DATETIME
)
DROP TABLE student
/*
创建表,并为表设置约束条件
主键约束: 一张表中只能有一个主键约束,
添加了主键约束的列不能为空,不能重复
PRIMARY KEY设置列为主键
AUTO_INCREMENT设置主键列的值自动增长,只能为主键列设置,而且主键列类型为整数
唯一约束: 不能重复,可以为多个列设置 UNIQUE
非空约束: 值不能为空,可以为多个列设置 NOT NULL
检查约束: 值需要满足设定条件,可以为多个列设置 CHECK(height<2.55)
外键约束(多表)
*/
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT COMMENT'主键',
num INT UNIQUE NOT NULL COMMENT'学号',
NAME VARCHAR(8) NOT NULL COMMENT'姓名',
gender CHAR(1) NOT NULL DEFAULT '男',
phone CHAR(11) UNIQUE NOT NULL,
birthday DATE,
height DECIMAL(3,2) CHECK(height<2.55),
regtime DATETIME NOT NULL
)
-- 删除表 DROP TABLE 表名
DROP TABLE student
-- 修改表名
RENAME TABLE stu TO student
2,数据操纵语言DML(Data Mainpulation Language)
(1)插入方式
此处使用上文创建的学生表为例
分为三种方式,如下处代码
-- insert
-- 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
INSERT INTO student(num,NAME,gender,phone,birthday,height,regtime)
VALUE(100,'张三',"男",'152222222','2005-03-05',1.88,NOW())
-- 方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;
INSERT INTO student SET num=101,NAME='李四',gender='女',phone='1522222223',regtime=NOW()
-- 方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
-- 批量插入
INSERT INTO student(num,NAME,phone,regtime)
VALUES(102,'jim','11111',NOW()),
(103,'tom','222',NOW()),
(104,'jery','3333',NOW())
(2)修改数据
-- update
UPDATE student SET birthday='2008-8-8',height=1.89 -- 没有条件的修改,注意没有条件会修改表中所有数据
UPDATE student SET birthday='2008-9-8',height=1.79 WHERE id=8
(3)删除数据
-- delete
DELETE FROM student WHERE id = 8
DELETE FROM student
此外还有:
TRUNCATE TABLE 表名称 ; 清空整张表 建议使用