MySQL 库、表、用户,增删改查基本语句

发布时间:2024年01月08日

数据库的介绍

数据库: 存储数据的库,数据是有组织的进行存储?? DataBase? (DB)

数据库管理系统: 操纵和管理数据库的大型软件?? DataBase Management System (DBMS)

SQL:操作关系数据库的编程语言,定义了一套操作关系关系型数据库统一标准? Structred Query Language SQL

关系型数据库都是由sql操控的,学会sql即可操作其他关系型数据库

关系型数据库

概念建立在关系模型基础上,由多张互联的二维表组成的数据库。

特点:

  • 使用表存储数据,格式统一,便于维护
  • 使用SQL语言操作,标准统一,使用方便

数据模型

一个dbms可以设置多个数据库,而一个数据库可以创建多个表,这个表就是二维表

SQL

简介

SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。通过使用SQL,用户可以执行各种数据库操作,如查询、插入、更新、删除和修改数据,以及创建和管理数据库结构。

通用语法

  • SQL语句可以单行或多行书写,以分号结尾。
  • SQL语句可以使用空格/缩进来增强语句的可读性2.
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  • 注释:
    • 单行注释:-- 注释内容或#注释内容(MySQL特有)
    • 多行注释:/注释内容*/

SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用于查询数据库中表的记录
DCLDataControl Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL语句

连接数据库
mysql -u your_username -p
-u 参数用于指定用户名。
-p 参数表示需要输入密码。

例子
root@serein-virtual-machine:~/fisco# mysql -uroot -p
Enter password:   //输入密码,这种写法较安全别人看不到密码


也可以这样写
mysql -uroot -p123456

?每个语句后面都必须带’;‘

有关库的相关语句
--查询所有数据库
SHOW DATABASES;
?查询当前数据库
--查询当前数据库
SELECT DARABASE();
--使用这个语句的时候如果没有使用数据库将分为null
?使用数据库
--使用数据库
use 数据库名;
?创建数据库
--创建
CREATE DATABASE [IF NOT EXISTS] 数据库名[ DEFAULT CHARSET 字符集] [COLIATE 排列规则]  
create database webasesign;
删除数据库
--删除
DROP DATABASE [IF EXISTS] 数据库名;

DROP DATABASE webasesign;
表的相关语句
 --查询当前库所有表
SHOW TABLES;


-- 查询表结构
DESC 表名;
SHOW COLUMNS FROM 表名;


--查询指定表的建表语句
SHOW CREATE TABLE 表名;
创建表

创建表要具有表名、表字段名、定义每个表字段的数据类型

注意:创建表之前请先选择要使用数据库

语法:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);
/*table_name 是你要创建的表的名称。
column1, column2, ... 是表中的列名。
datatype 是每个列的数据类型。*/

实例创建用户表

CREATE TABLE users (
? ? id INT AUTO_INCREMENT PRIMARY KEY,
? ? name VARCHAR(50) NOT NULL,
? ? email VARCHAR(100) NOT NULL,
? ? birthdate DATE,
? ? is_act BOOLEAN DEFAULT TRUE
);

/*id: 用户 id,整数类型,自增长,作为主键。
username: 用户名,变长字符串,不允许为空。
email: 用户邮箱,变长字符串,不允许为空。
birthdate: 用户的生日,日期类型。
is_active: 用户是否已经激活,布尔类型,默认值为 true。
AUTO_INCREMENT 属性来定义自增长列。当插入新记录时,数据库会自动为该列分配下一个可用的唯一值。*/

创建成功之后

如果你希望在创建表时指定数据引擎,字符集和排序规则等,可以使用?CHARACTER SET?和?COLLATE?子句:

CREATE TABLE mytable (
? ? id INT PRIMARY KEY,
? ? name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
查询存储的数据
--列出表中的所有数据
select * from  tb_user
+----+----------+---------+
| id | username | email   |
+----+----------+---------+
|  1 | 小明     |         |
|  2 | 小里     | 00000   |
|  3 | 小明     | 000000  |
|  4 | 小里     | 00000   |
|  5 | 小里     | 0000000 |
+----+----------+---------+


--选择特定的列的所有行
select username,email from tb_user;
+----------+---------+
| username | email   |
+----------+---------+
| 小明     |         |
| 小里     | 00000   |
| 小明     | 000000  |
| 小里     | 00000   |
| 小里     | 0000000 |
+----------+---------+

--添加WHERE子句,选择满足条件的行
select *from tb_user where username='小里';
+----+----------+---------+
| id | username | email   |
+----+----------+---------+
|  2 | 小里     | 00000   |
|  4 | 小里     | 00000   |
|  5 | 小里     | 0000000 |
+----+----------+---------+

--添加ORDER BY子句,按照某列的升序排序
 select *from tb_user order by email;
+----+----------+---------+
| id | username | email   |
+----+----------+---------+
|  1 | 小明     |         |
|  2 | 小里     | 00000   |
|  4 | 小里     | 00000   |
|  3 | 小明     | 000000  |
|  5 | 小里     | 0000000 |
+----+----------+---------+


--添加ORDER BY子句,按照某列的降序排序
select *from tb_user order by email desc;
+----+----------+---------+
| id | username | email   |
+----+----------+---------+
|  5 | 小里     | 0000000 |
|  3 | 小明     | 000000  |
|  2 | 小里     | 00000   |
|  4 | 小里     | 00000   |
|  1 | 小明     |         |
+----+----------+---------+


--添加LIMIT子句限制返回的行数
select * from tb_user limit 2;
+----+----------+-------+
| id | username | email |
+----+----------+-------+
|  1 | 小明     |       |
|  2 | 小里     | 00000 |
+----+----------+-------+

返回如下则表示表中无数据?

?查看表的字段数据类型
DESCRIBE tb_user;

SHOW COLUMNS FROM tb_user;

查看数据表详细索引信息
--显示数据表的详细索引信息,包括PRIMARY KEY(主键)

SHOW INDEX FROM codebaoku_tbl;

显示数据库所有表信息
SHOW TABLE STATUS  FROM 库名;

?表名以codebaoku开头的表的信息
SHOW TABLE STATUS from CodeBaoku LIKE 'codebaoku%';

?加上 \G,查询结果按列打印
SHOW TABLE STATUS from web3 LIKE 'tb%'\G

?删除表的语法

DROP TABLE table_name ;
表的修改
添加字段
ALTER TABLE 表名 add 字段名 类型(长度)[COMMENT 注释] [约束];

alter table tb_user add emil varchar(100) comment '邮箱' NOT NULL;
?修改数据类型
ALTER TABLE 表名 MODIFY column字段名 新数据类型 (长度);

alter table tb_user modify column emil varchar(150);

修改前

修改后

修改字段名和数据类型
ALTER TABLE 表明 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

alter table tb_user change emil email varchar(150) comment '邮箱' not null;

?

?删除字段
ALTER TABLE 表名 DROP 字段名;

 alter table tb_user drop email;

?

修改表名
ALTER TABLE 表名 RENAME TO 新表名;

 alter table tb_user rename to user;

删除表
DROP TABLE [IF EXISTS] 表名;

 drop table user;

?

?删除指定表并重新创建
TRUNCATE TABLE 表名

truncate table user;

?

用户的创建授权以及删除
--创建用户
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

create user 'testuser'@'localhost' identified by '123456';


--授权用户访问数据库
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

grant all privileges on serein.* to 'testuser'@'localhost';  #数据库的名字改为*就是授权访问所有数据库

--刷新权限
flush privileges;

--查询所有用户
select user,host from mysql.user;

--删除用户
drop user 'testuser'@'localhost';

文章来源:https://blog.csdn.net/2301_77326975/article/details/135440618
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。