- 创建数据库:CREATE DATABASE语句用于创建新的数据库
语法:
CREATE DATABASE [IF NOT EXISTS] db_name;
CREATE DATABASE [IF NOT EXISTS] db_name character SET gbk;
查看创建的数据库的定义信息(默认字符编码)
show CREATE DATABASE db_name;
修改数据库的字符集:
ALTER DATABASE db_name character SET utf8;
删除数据库:
DROP DATABASE IF EXISTS db_name;
- 其他语句
查看当前使用的数据库:
select database(); //没选定数据库时,返回 null
切换数据库:
USE db_name;
退出数据库:
quit 或 exit
- DDL和DML语句
- DDL【操作表及字段】
CREATE TABLE [IF NOT EXISTS] 表名(
字段1 字段类型(长度) 约束,
字段2 字段类型(长度) 约束,
…
字段n 字段类型(长度) 约束
)[charset=utf8];
例子1:
CREATE TABLE IS NOT EXISTS student(
id int not null,
)CHARSET=UTF-8;
----------------------------------------------------------------------------------------------------------------
增删改查
增、改(字段操作):
ALTER TABLE student ADD image blob; //添加image列
ALTER TABLE student MODIFY address varchar(60); //修改address列,使其长度为60
ALTER TABLE student DROP image; //删除image列,一次只能删除一列
ALTER TABLE student CHANGE 旧字段名 新字段名 字段类型 [约束条件]// 修改字段名
改(表):
RENAME TABLE student TO user; //改表名
-------------------------------------------------------------------------------------------------------------------
删:DROP TABLES table_name;
SHOW TABLES; //查看当前数据库中包含的表
DESC table_name; //查看表的字段信息
SHOW CREATE TABLE user; //查看表的创建细节
DESC table_name; //查询表中包含的字段
-
- DML操作【重要】
DML是对表中的数据进行增、删、改的操作。不能和DDL混淆了。
主要包括:INSERT、UPDATE、DELETE
在MySQL中,字符串类型和日期类型都要用单引号括起来。
空值:null。
(1)插入操作:INSERT
语法:INSERT INTO 表名(列名1,列名2…) VALUES(值1,值2…);
(2)修改操作:UPDATE
语法:UPDATE 表名 SET 列名1=值1,列名2=值2… WHERE 列名=值;
(3)删除操作:DELETE
语法:DELETE FROM表名【WHERE 列名=值】; //删除指定行数据
DELETE FROM 表名; //删除表中所有数据
TRUNCATE TABLE 表名; //删除表和数据,再创建同一个空表
数据类型:
---------------------------------------------------------------------------------------------------------------------
int:整型(4字节)
double:浮点型(8字节)
double(5,2) //最多五位,其中必须由2位小数,最大值为:999.99
decimal:精确数值数据,最大位数可以是65
decimal(5,2) //能够存储五位数和两位小数的任何值,范围是[-999.99,999.99]
---------------------------------------------------------------------------------------------------------------------
char:固定长度字符串累心;
char(10) `aaa ` //固定10个字符,不足补空格,长度0~255
// 缺点:浪费空间;优点:查询速度快。
varchar:可变长度字符串类型;
varchar(10) `aaa` //最多存储10个字符
//缺点:查询慢;优点:节省空间。
text:大文本字符串类型;
//有字符编码,存储比较大的文本数据。
---------------------------------------------------------------------------------------------------------------------
blob: Binary Large Object二进制大对象数据;可以存储图片、音频、视频
date:日期类型,格式为:yyy-MM-dd
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyy-MM-dd hh:mm:ss
---------------------------------------------------------------------------------------------------------------------
常用约束条件:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主键约束:primary key //(保证数据唯一性),不能重复,不能为null;
唯一约束:unique [key] //不能重复,可以为null。
非空约束:not null
默认约束:default
外键约束:foreign key
自动增长:auto_increment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
查看数据库编码的具体信息: show variables like ‘character%’;
修改数据库服务端编码:
set character_set_server='utf8';
临时更改客户端和服务器结果集的编码:
set character_set_client=gbk;
set character_set_results=gbk;
或者:SET NAMES ‘GBK’’; //client connection results
- DQL数据查询
数据库执行DQL语句,不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。
查询关键字:SELECT
语法:SELECT 列名 FROM 表名 【WHERE à GROUP BY à HAVING à ORDER BY à LIMIT】;
SELECT selection_list //要查询的列名称
FROM table_list //要查询的表名称
WHERE condition //行条件
GROUP BY grouping_columns //对结果分组
HAVING condition //分组后的行条件
ORDER BY sorting_columns //对结果排序
LIMIT offset_start, row_count //结果限定
条件查询:
就是在查询时给出where字句,在where字句中可以使用如下运算符及关键字:
比较运算符:
| =、!=、<>、<、<=、>、>=;
| BETWEEN…AND;
| IN(set);
| IS NULL;
关系运算符:
| AND; &&
| OR; ||
| NOT; !
算术运算符:
| + - * / %
HAVING与WHERE的区别:
- HAVING是在分组后对数据进行过滤,WHERE是在分组前对数据进行过滤。
- HAVING后面可以使用分组函数(统计函数),WHERE不能。
- WHERE是对分组前记录的条件,如果某行记录没有满足WHERE字句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
LIMIT 限制行查询
LIMTI 起始行,行数;
分页查询://一次查询10行
- SELECT * FROM table_name LIMTI 0,10;
- SELECT * FROM table_name LIMTI 10,10;
- SELECT * FROM table_name LIMTI 20,10;