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 ,用于全文索引
数据库建了,表建了,数据插入了,索引也加了,不用干嘛!留着过年吗?
查询
简单查询