0
点赞
收藏
分享

微信扫一扫

MySQL基础语法(数据库、表、数据整合)

大柚子top 2022-03-24 阅读 176

MySQL基础语法

压缩包MySQL安装

一、MySQL的安装和配置

  1. 压缩包MySQL安装需要手动创建配置文件,解压后,在解压文件夹根目录中新建一个my.ini文件:如下
    在这里插入图片描述
    在my.ini文件中添加如下内容:
[client]
port=3306

[mysql]
default-character-set=utf8

[mysqld]
port=3306

#MySQL的安装路径
basedir="F:/SERVER/PHPTutorial/MySQL/"
#MySQL数据文件的存储位置,也是数据库表的存放位置
datadir="F:/SERVER/PHPTutorial/MySQL/data/"

#服务端使用的字符集
character-set-server=utf8
#创建表时默认使用的数据引擎
#支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。
#如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。
default-storage-engine=INNODB

下面是非必须参数

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

#表示允许同时访问MySQL服务器的最大连接数
max_connections=512

#表示查询时的缓存大小
#缓存中可以存储以前通过select语句查询过的信息
#再次查询时就可以直接从缓存中拿出信息
query_cache_size=0

#表示所有进程打开表的总数
table_cache=256

#表示内存中临时表的总数
tmp_table_size=18M

#表示保留客户端线程的缓存
thread_cache_size=8

#表示MySQL重建索引时所允许的最大临时文件的大小
myisam_max_sort_file_size=64G

#表示重建索引时的缓存大小
myisam_sort_buffer_size=35M

#表示关键词的缓存大小
key_buffer_size=25M

#表示MyISAM表全表扫描的缓存大小
read_buffer_size=64K

#表示将排序好的数据存入该缓存中
read_rnd_buffer_size=256K

#表示用于排序的缓存大小
sort_buffer_size=256K

#表示附加的内存池,用来存储InnoDB表的内容
innodb_additional_mem_pool_size=2M

#设置提交日志的时机,若设置为1,InnoDB会在每次提交后将事务日志写到磁盘上
innodb_flush_log_at_trx_commit=1

#表示用来存储日志数据的缓存区的大小
innodb_log_buffer_size=1M

#表示缓存的大小,InnoDB使用一个缓冲池类保存索引和原始数据
innodb_buffer_pool_size=47M

#表示日志文件的大小
innodb_log_file_size=24M 
  1. 在MySQL根目录中创建数据库存放文件夹data
    在这里插入图片描述
    修改my.ini文件中的路径
    在这里插入图片描述
    3.初始化数据库
    进入到MySQL安装目录中的bin目录,然后输入如下命令回车:
    mysqld --initialize-insecure --user=mysql
    执行完上面命令后,MySQL会自建一个data文件夹,并且建好默认数据库,登录的用户名为root,密码为空,之后就可以通过命令net start mysql启动mysql服务了。

二、启动MySQL

服务模式
启动 mysql 的方式 比较稳定推荐的做法通过系统服务注册。如果你下载的版本是解压版本,可以进入mysql bin目录下 通过

# 第一步
# 命令安装服务
mysqld -install
# 移除服务
mysqld -remove

# 第二步
# 启动该服务
net start MySQL
# 停止服务
net stop MySQL

# 第三步:链接数据库
mysql -uroot -p

非服务模式
启动通过bin目录下的 mysqld 命令即可

# 第一步:独立启动
mysqld --standalone
# 关闭MySQL
mysqladmin -uroot -proot shutdown

# 第2步:链接数据库
mysql -uroot -p

连接数据库
安装完数据库后,可以尝试连接数据来测试是否安装成功,连接数据库的命令如下:

mysql -uroot -p    

输入命令后,回车输入密码:默认密码为空

所以直接回车

修改密码
默认密码为空,如果想修改密码,则需要使用如下方式来修改:

# 连接数据库
mysql -u root -p

# 修改数据
ALTER USER 'root'@'localhost' IDENTIFIED  BY '你的新密码';

# 或者:指定旧加密模式修改密码,以支持旧版本的软件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';

# 刷新
flush privileges;

说明:

  • root是用户名
  • locahost是ip地址127.0.0.1都是特指本机
  • mysql_native_password是旧的密码验证机制

最后别忘了分号;

三、SQL语法

SQL指结构化查询语言(Structured Query Language)简称SQL。

SQL包含6个部分:

  1. 数据查询语言(DQL: Data Query Language):也称为“数据检索语句”,用以从表中查询数据。
  2. 数据操作语言(DML:Data Manipulation Language):包括动词插入、修改、删除操作。
  3. 数据定义语言(DDL:Data Definition Language):包括创建、修改、删除表;为表加入索引等。
  4. 数据控制语言(DCL:Data Control Language):用来设置或者更改数据库用户或角色权限的语句。
  5. 指针控制语言(CCL:Cursor Control Language):使用DECLARE CURSOR,FETCH INTO等对游标指针操作的语言。
  6. 事务控制语言(TCL:Transaction Control Language):包括提交事务、保存回滚点、事务回滚等操作命令。

SQL 语句用来操作数据库,包括对数据的增删改查等

  • create database -创建新数据库
  • drop database -删除数据库
  • alter database -修改数据库
  • create table -创建表
  • alter table -变更(改变)数据库表
  • drop table -删除表
  • select -从数据库中提取数据
  • updata -更新数据库中的数据
  • delete -从数据库中删除数据
  • insert into -向数据库中插入新数据
  • create index -创建索引(搜索键)
  • drop index -删除索引

四、数据库

  1. 显示数据库
SHOW DATABASES [LIKE '数据库名'];
# LIKE 从句是可选项,用于匹配指定的数据库名称。LIKE 从句可以部分匹配,也可以完全匹配。
# 数据库名由单引号''包围。

例如:
SHOW DATABASES;
# 或者
SHOW DATABASES LIKE 'mydb';
  1. 创建数据库
CREATE DATABASE [IF NOT EXISTS] <数据库名>
	[[DEFAULT] CHARACTER SET <字符集名>] 
	[[DEFAULT] COLLATE <校对规则名>];

例如:
create database [if not exists] <star> 
default character set utf8mb4
default collate utf8mb4_general_ci

  • <数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
  • IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
  • [DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。常见的字符集有:GBK、UTF-8
  • [DEFAULT] COLLATE:指定字符集的默认校对规则。
    MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。
    例如:
CREATE DATABASE IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. 查看数据库结构
显示数据库创建语句
SHOW CREATE DATABASE <数据库名>

例如:
SHOW CREATE DATABASE `mydb`;
  1. 删除数据库
DROP DATABASE [ IF EXISTS ] <数据库名>

# <数据库名>:指定要删除的数据库名。
# IF EXISTS:用于防止当数据库不存在时发生错误。
# DROP DATABASE:删除数据库中的所有表格并同时删除数据库。使用此语句时要非常小心,以免错误删除。如果要使用 DROP DATABASE,需要获得数据库 DROP 权限。

# MySQL 安装后,系统会自动创建名为 information_schema 和 mysql 的两个系统数据库,系统数据库存放一些和数据库相关的信息,如果删除了这两个数据库,MySQL 将不能正常工作。

  1. 使用数据库
use <数据库名>
例如:
use `mydb`;
  1. 修改数据库
ALTER DATABASE [数据库名] 
	[[ DEFAULT ] CHARACTER SET <字符集名>]
	[[ DEFAULT ] COLLATE <校对规则名>]

# ALTER DATABASE 用于更改数据库的全局特性。
# 使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
# 数据库名称可以忽略,此时语句对应于默认数据库。
# CHARACTER SET 子句用于更改默认的数据库字符集。

例如:
ALTER DATABASE `mydb` DEFAULT CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;

在查看数据库结构
show create table `mybd`;

数据库总结

-- 1、查看数据库
show databases;
show database like '<数据库名>';
-- 2、查看数据结构
show create database <数据库名>;
-- 3、创建数据库
create database [if not exists] <数据库名>
	[[default] character set <utf8mb4>] 
	[[default] collate <utf8mb4_general_ci>];
-- 4、修改数据库
alter database [if not exists] <数据库名>
	[[default] character set <utf8mb4>] 
	[[default] collate <utf8mb4_general_ci>];
-- 5、删除数据库
drop database [if exists] <数据库名>;
-- 6、使用数据库
use <数据库名>;

五、表

  1. 显示表中列
SHOW COLUMNS FROM <表名>;

# 要显示指定数据库中不是当前数据库中的表的列定义信息,请使用以下形式:
SHOW COLUMNS FROM database_name.table_name;
-- 例如
SHOW COLUMNS FROM mysql.user;

或者
SHOW COLUMNS FROM table_name IN database_name;
-- 例如
SHOW COLUMNS FROM user IN mysql;

  • SHOW COLUMNS命令的结果与DESC语句的结果相同。
  1. 创建数据表库
CREATE TABLE [IF NOT EXISTS] `tablename`
(
    列1 数据类型(数据大小) 约束,
    列2 数据类型(数据大小) 约束,
    列3 数据类型(数据大小) 约束,
    ....
)[ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8];

字段名 数据类型 数据大小 约束 默认值 注释

说明:

  • 列:参数规定表中列的名称。
  • 数据类型:参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
  • 数据大小:参数规定表中列的最大长度。
  • 约束:参数规定数据的规范

例如:

CREATE TABLE `users` (
    `id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
    `nickname` VARCHAR (255) NOT NULL DEFAULT '' COMMENT '昵称',
    `name` VARCHAR (60) NOT NULL DEFAULT '' COMMENT '用户名',
    `pswd` VARCHAR (255) NOT NULL DEFAULT '' COMMENT '密码',
    `sex` BIT (1) NOT NULL DEFAULT b'1' COMMENT '1:男;0:女',
    `birthday` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '生日',
    `register` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '注册时间',
    `status` INT (10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '状态'
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

常用数据类型:
——常用数据类型:
——数字:bit、tinyint、smallint、int、bigint、float、decimal
——字符:char、varchar、text
——时间:datetime、timestamp
——字段的顺序:字段名 类型 约束(数据规则约束) 默认值
——(comment) 注释

约束
在SQL中,有如下约束:

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须唯一,不能有相同的值。
  • UNIQUE KEY - 必须唯一键,不能有相同的值。如:UNION KEY (id,name)
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或多个列的结合)有唯一标识。如:PRIMARY KEY (id,name)
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件**(MySql无效)**。如:CHECK (id>0)
  • DEFAULT - 规定没有给列赋值时的默认值。如:DEFAULT b’1’
  • UNSIGNED - 无符号整数
    AUTO_INCREMENT - 自增
    COMMENT - 表示注释
  1. 删除数据库表
# 删除数据表
DROP TABLE [IF EXISTS] `tablename`;
# 不删除表,清空表数据
TRUNCATE TABLE `tablename`;
  1. 显示表结构
DESC table_name;
例如:
desc uesr;
  1. 复制表
# 复制表结构
CREATE TABLE `copy_user` LIKE `user`;

# 复制结构和数据,将查询出来的结果创建成新的表。
CREATE TABLE IF NOT EXISTS `tablename` [AS] SELECT * FROM …;

# 只复制表数据:
CREATE TABLE `tablename` SELECT * FROM `tablename2` WHERE 1=0;

六、数据

插入数据
inster into 语句可以有两种编写形式。

第1种:
INSERT INTO `tablename` 
VALUE
(value1,value2,value3,...);

第2种:
INSERT INTO `tablename` 
VALUES 
(value1,value2,value3,...),
(value1,value2,value3,...);

第3种:
INSERT INTO `tablename` (column1,column2,column3,...) 
VALUES 
(value1,value2,value3,...),
(value1,value2,value3,...);

例如:
INSERT  INTO `users`(`id`,`nickname`,`name`,`pswd`,`sex`,`birthday`,`register`,`status`) 
VALUES 
(1,'小三','张三','123456',0,'0000-00-00 00:00:00','0000-00-00 00:00:00',0),
(2,'小四','李四','123456',0,'0000-00-00 00:00:00','0000-00-00 00:00:00',0),
(3,'小五','王五','123456',1,'0000-00-00 00:00:00','0000-00-00 00:00:00',0);

从查询结果插入数据

INSERT INTO [IF EXISTS] `tablename` [AS] SELECT * FROM …;

# 执行命令后会把查询出来的数据插入的另一张表中。目标表中任何已存在的行都不会受影响。
例如:
INSERT INTO `newdb` SELECT * FROM `mydb`;

查询数据
查询表中的数据
SELECT 语句用于从数据库中选取数据。

结果被存储在一个结果表中,称为结果集。

结果集。也是一张数据库表,只不过这张表是临时的,用完就销毁

SELECT column_name,column_name
FROM `tablename`
WHERE condition;

# 或者

SELECT * 
FROM `tablename` 
WHERE condition;

# 在表中,一个列可能会包含多个重复值,如果要排除重复的值,可以使用DISTINCT 关键词用于返回唯一不同的值
SELECT DISTINCT column_name,column_name
FROM table_name;
WHERE condition;

删除数据

# DELETE 语句用于删除表中的记录。
DELETE FROM table_name WHERE some_column=some_value;
例如:
DELETE FROM `users` WHERE id='3';

# 删除所有数据
可以在不删除表的情况下,删除表中所有的行。这意味着表结构等保持不变
DELETE FROM table_name;

# 或

DELETE * FROM table_name;

修改数据

#UPDATE 语句用于更新表中的记录。
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
例如:
UPDATE `users` SET nickname='wangwu',NAME='ww' WHERE id='2';
举报

相关推荐

0 条评论