数据库: 存储数据的库,数据是有组织的进行存储?? DataBase? (DB)
数据库管理系统: 操纵和管理数据库的大型软件?? DataBase Management System (DBMS)
SQL:操作关系数据库的编程语言,定义了一套操作关系关系型数据库统一标准? Structred Query Language SQL
关系型数据库都是由sql操控的,学会sql即可操作其他关系型数据库
关系型数据库
概念:建立在关系模型基础上,由多张互联的二维表组成的数据库。
特点:
数据模型
一个dbms可以设置多个数据库,而一个数据库可以创建多个表,这个表就是二维表
SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。通过使用SQL,用户可以执行各种数据库操作,如查询、插入、更新、删除和修改数据,以及创建和管理数据库结构。
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用于查询数据库中表的记录 |
DCL | DataControl Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
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 库名;
SHOW TABLE STATUS from CodeBaoku LIKE 'codebaoku%';
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';