MySql

什么是数据库?

数据库分类

图片说明
============================================================================================================

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。

1. 数据查询语言DQL

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE

子句组成的查询块:

SELECT <字段名表>

FROM <表或视图名>

WHERE <查询条件>


2 .数据操纵语言DML

数据操纵语言DML主要有三种形式:

1) 插入:INSERT

2) 更新:UPDATE

3) 删除:DELETE


3. 数据定义语言DDL

数据定义语言DDL用来创建数据库中的各种对象-----表、视图、

索引、同义词、聚簇等如:


4. 数据控制语言DCL

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制

数据库操纵事务发生的时间及效果,对数据库实行监视等

启动/关闭数据库(CMD)

net start mysql

net stop mysql

登陆数据库(CMD)


1.了解基本的数据库语句

数据库语句以分号结尾,代表命令结束

创建数据库

CREATE DATABASE 数据库名

DEFAULT CHARACTER SET utf8mb4                     #  utf8mb4:字符集

DEFAULT COLLATE utf8mb4_general_ci;              #   collate:校对 utf8mb4_general_ci:排序规则

示例:

效果:


查看数据库列表

SHOW DATABASES;

示例:

修改数据库表     该功能主要用于改字符集和校对规则

ALTER DATABASE 数据库名

DEFAULT CHARACTER SET utf8

DEFAULT COLLATE utf8_general_ci;

示例:

效果:

删除数据库

DROP DATABASE 【IF EXISTS】数据库名

示例:

==========================库相关操作结束========================================

创建表

要在数据库中建表,则必须先选中目标数据库      USE 数据库名字;

选中目标数据库

USE test_db;

开始建表

CREATE TABLE test_tb(

id INT UNSIGNED NOT NULL AUTO_INCREMENT,

name VARCHAR(10) NOT NULL ,

sex CHAR(2) NOT NULL DEFAULT '男',    # DEFAULT '男' :默认值

birthday DATE,

remark VARCHAR(20),

PRIMARY KEY(id)  # 设置主键

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

如果你好奇他的建表过程可以使用

SHOW CREATE TABLE test_tb;

结果

CREATE TABLE `test_tb` (

    `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT,

    `name` VARCHAR ( 10 ) NOT NULL,

    `sex` CHAR ( 2 ) NOT NULL DEFAULT '男',

    `birthday` date DEFAULT NULL,

    `remark` VARCHAR ( 20 ) DEFAULT NULL,

PRIMARY KEY ( `id` )

) ENGINE = INNODB AUTO_INCREMENT = 3 DEFAULT CHARSET = utf8

一个表没有数据哪还有什么用

插入数据前,可以先查看表结构,方便自己插入数据

查看表结构

DESC test_tb;


修改表结构

添加型修改

ALTER TABLE test_tb

ADD sNo INT AFTER id;    # AFTER 在哪个字段名后 没有BEFORE

ALTER TABLE test_tb

ADD QQ INT FIRST;   # FIRST加到最前面

变化型修改

只修改数据的数据类型

ALTER TABLE test_tb

MODIFY birthday TIMESTAMP;

字段名修改 

ALTER TABLE test_tb

CHANGE birthday rxDate DATE;


删除型修改

ALTER TABLE test_tb

DROP QQ,

DROP sNo;

调整自增开始值

ALTER TABLE test_tb

AUTO_INCREMENT=5;  # 修改自增从5开始

修改后执行以下语句

INSERT INTO test_tb(rxDate,remark)

VALUES('2020-01-01','hello 我是 备注');

修改表名

ALTER TABLE test_tb

RENAME AS new_tb;


插入数据

INSERT INTO test_tb(name,sex,birthday,remark)

VALUES ('test_name1','女','2021-01-01','测试信息1'),

               ('test_name2','女','2020-01-02','测试信息1');

修改数据(更新数据)

UPDATE new_tb

SET rxDate='2000-04-05',remark='测试信息已更改'

WHERE rxDate='2020-01-02';

删除数据

DELETE FROM new_tb WHERE rxDate='2021-01-01';

删除表

DROP TABLE new_tb;

==========================表相关操作结束========================================

索引的引入,加快查询速度

查看一张表中的索引

SHOW INDEX FROM stu_info;

索引类型

普通索引  NORMAL

唯一索引  UNIQUE  

空间索引  SPATIAL

全文索引  FULLTEXT

索引方式(BTREE/HASH):两种索引结构

MyISAM和InnoDB支持BTREE索引;

MEMORY和HEAP支持HASH和BTREE索引。

索引的类型:

PRIMARY KEY:主键索引。

UNIQUE:唯一索引。字段值必须各不相同。如身份证号码。一张数据表上可以创建多个唯一索引。

INDEX:普通索引,KEY通常是INDEX的同义词。普通索引是用来提升数据库性能、提高数查询效率的一项重要的技术。

SPATIAL:空间索引。只有MyISAM存储引擎支持空间索引。

FULLTEXT:全文索引。在定义索引的列上支持全文查找,在用于搜索很长一篇文章的时候,效果最好。只有MyISAM存储引擎支持全文索引。

建表时加入索引

CREATE TABLE  xxx (

id INT UNSIGNED NOT NULL AUTO_INCREMENT,

sNo CHAR(10) NOT NULL,

sName VARCHAR(20) NOT NULL,

sex CHAR(1),

birthday DATE,

deptName VARCHAR(30),

remark VARCHAR(80),

PRIMARY KEY (id),   #添加主键索引

UNIQUE (sNo),        #添加唯一索引

INDEX (sName)       #添加普通索引

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER 加入索引可以给索引项取名

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)                  添加一个主键,这意味着索引值必须是唯一的,且不能为NULL

ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)        这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)

ALTER TABLE tbl_name ADD INDEX index_name (column_list)            添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list)     指定了索引为 FULLTEXT ,用于全文索引

数据库建了,表建了,数据插入了,索引也加了,不用干嘛!留着过年吗?

查询

简单查询