什么是数据库

数据库本质上就是文件系统,是存储和管理数据的仓库。

启动/关闭 mysql

net start/stop mysql
要配环境变量

目录结构

Program files下有mysql文件夹,存的是程序相关的代码、文档
ProgramData下是配置文件。my.ini是配置文件,Data里面是表的信息

默认数据库

infomation..... 保存其他数据库的信息
mysql 保存用户和权限相关的信息
performance.... 监控性能用的
sys 记录了DBA所需要的信息,比如哪些SQL慢。更方便DBA了解数据库运行情况。

SQL

注释

-- /**/ # 三种方式。注意第一种方式要加空格

数据类型

int double varchar date(只显示年月日 yyyy-MM-dd) datetime(yyyy-MM-dd HH:mm:ss) char
varchar是可变长的类型,存储字符串的时候只使用所需的空间。
char是固定长度的,指定多少长度,创建时就使用多少。

分类

DDL 操作库和表的。建库建表等等。
DML 对数据进行CRUD的
DQL 查询表中数据
DCL 创建用户、管理权限

DDL

# 默认Latin1编码,容易乱码
CREATE DATABASE db1;

# 指定utf8编码
CREATE DATABASE db1_1 CHARACTER SET utf8;

# 切换数据库
USE db1_1;

# 查询当前正在使用的数据库
SELECT DATABASE();

# 查询MYSQL中有哪些数据库
SHOW DATABASES;

# 修改字符集
ALTER DATABASE db1 CHARACTER SET utf8;

# 查询当前数据库的基本信息
SHOW CREATE DATABASE db1;

# 删除数据库
DROP DATABASE db1_1;

# 创建商品分类表
USE db1;
CREATE TABLE category(
    cid INT,
    cname VARCHAR(20)
);

# 创建测试表
CREATE TABLE test1(
    tid INT,
    tdate DATE
);

# 创建一个表结构相同的表
CREATE TABLE test2 LIKE test1;

# 查看表结构
DESC test2;

# 查看当前数据库中的所有表
SHOW TABLES;

# 查看创建表的SQL语句
SHOW CREATE TABLE category;

# 查看表结构
DESC category;

# 表的删除
DROP TABLE test1;

# 先判断后删除方式
DROP TABLE IF EXISTS test2;

# 修改表名称
RENAME TABLE category TO category1;

# 修改字符集
ALTER TABLE category1 CHARACTER SET gbk;

# 向表里添加字段
ALTER TABLE category1 ADD cdesc VARCHAR(20);

# 修改表中列的类型或长度
ALTER TABLE category1 MODIFY cdesc CHAR(50); 

# 修改列的名称 关键字change
ALTER TABLE category1 CHANGE cdesc description VARCHAR(30);

# 删除列
ALTER TABLE category1 DROP description;

DML

# 插入全部字段,同时写出所有字段名
INSERT INTO student (sid, sname, age, sex, address) VALUES (1, 'sunwukong', 18, '男', '花果山');

# 插入全部字段 不写字段名
INSERT INTO student VALUES(2, 'sunwufan', 5, '男', '地球');

# 插入部分字段
# 插入date类型也要加引号。插入null的话可以写null,也可以不提那些字段
INSERT INTO student (sid, sname) VALUES (3, '蜘蛛精');

# 修改数据 
# 几乎不这么玩
UPDATE    student SET sex = '女';

# 一般都带条件,用where
UPDATE student SET sex = '男' WHERE sid = 1;
UPDATE student SET age = 20, address = '日本' WHERE sid = 2;

# 删除数据
DELETE FROM student WHERE sid = 3;
# 基本不用, 记录全删
DELETE FROM student;
# 删除整张表再创建个一模一样的表,这样删除整张表的数据性能高
TRUNCATE TABLE student;