一、mysql简介
MVSOL就是一种关系型数据库管理系统,采用关系模型来组织数据,借助于集合、代数等数学概念和方法来处理数据,通过二维表来表示数据之前的联系,不同的表通过关联字段来建立联系。
二、SQL
DDL 数据定义语言 :CREATE、DROP、 ALTER、TRUNCATE
DML 数据操作语言:INSERT、UPDATE、DELETE、CALL
DQL 数据查询语言:SELECT
DCL 数据控制语言:GRANT、REVOKE
三、基本命令
- 数据库相关
#进入mysql
mysql -u root -p
#查看当前存在的数据库
show databases;
#显示所有表
show tables;
#创建一个game的数据库
create database game;
#删除一个game的数据库
drop database game;
#使用game数据库
use game;
#创建一个users表
create table users(id int,name varchar(30));
#查看users表结构
desc users;
#修改uer表类型
alter table users modify column name varchar(50);
#修改users表name字段名为nick_name
alter table users rename column name to nick_name;
#在users表新增phone字段
alter table users add column phone char(11);
#删除users表phone字段
alter table users drop column phone;
#删除users表
drop table users;
#退出
exit;
- 修改密码及允许远程登录
# 【5.7.9以下版本】修改root⽤户密码为123456:
UPDATE user SET password=PASSWORD("123456") WHERE user=root;
# 刷新权限
FLUSH PRIVILEGES;
#【5.7.9以上版本】修改root⽤户密码为123456:
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
#修改root⽤户允许远程登录 配置⽂件my.cnf中的 bind-address 也需要改成 0.0.0.0
UPDATE user SET host='%' WHERE user='root' AND host='localhost';
# 刷新权限
FLUSH PRIVILEGES;
- 增删改查
# 增(Create)
INSERT INTO students (name, age) VALUES ('Alice', 20);
# 删(Delete)
DELETE FROM students WHERE id = 1;
# 改(Update)
UPDATE students SET age = 21 WHERE id = 1;
# 查(Select)
SELECT * FROM students WHERE age > 18;
- where条件
#使用比较运算符
SELECT * FROM table_name WHERE column_name = value;
#使用通配符
SELECT * FROM table_name WHERE column_name LIKE '%pattern%';
#使用IN子句
SELECT * FROM table_name WHERE column_name IN (value1, value2, value3);
SELECT * FROM table_name WHERE column_name NOT IN (value1, value2, value3);
#使用NULL值
SELECT * FROM table_name WHERE column_name IS NULL;
SELECT * FROM table_name WHERE column_name IS NOT NULL;
#使用BETWEEN AND 查询包含了25岁和33岁
SELECT * FROM user WHERE age BETWEEN 25 AND 33;
- 多表联合查询
#LEFT JOIN(左联接)
SELECT
users.user_id,
users.user_name,
orders.order_id,
orders.order_date
FROM
users
LEFT JOIN orders ON users.user_id = orders.user_id;
- 子查询 (在SELECT中,除了GROUP BY 和 LIMIT之外,其他位置都可以声明子查询)
#在 WHERE 子句中使用子查询
SELECT
column_name
FROM
table1
WHERE
column_name = ( SELECT column_name2 FROM table2 WHERE CONDITION );
#在 FROM 子句中使用子查询(临时表)
SELECT
column_name ( s )
FROM
( SELECT column_name ( s ) FROM table1 ) AS alias_name
WHERE
CONDITION;
#在 SELECT 列表中使用子查询
SELECT
( SELECT column_name FROM table2 WHERE table2.column_name = table1.column_name ) AS column_name_alias
FROM
table1;
#使用 EXISTS 与子查询
SELECT
column_name ( s )
FROM
table1
WHERE
EXISTS ( SELECT column_name FROM table2 WHERE table2.column_name = table1.column_name );
#使用 ALL 与子查询
SELECT
column_name ( s )
FROM
table1
WHERE
column_name > ALL ( SELECT column_name FROM table2 );
#请注意,子查询的性能可能会受到影响,特别是在处理大型数据集时。在某些情况下,可以通过使用 JOIN 来代替子查询,这样可以提高查询的效率。
- 查看mysql的字符集
#查看mysql字符集
show variables like '%character%';
#或者
show variables like '%char%';
- 修改mysql字符集
vim /etc/my.cnf
#在MySQL5.7或之前的版本中,在文件最后加上中文字符集配置:
character_set_server=utf8
#重新启动MySQL服务
systemctl restart mysqld
#修改已创建数据库的字符集
alter database dbtest1 character set 'utf8';
#修改已创建数据表的字符集
alter table t_emp convert to character set 'utf8';
392

被折叠的 条评论
为什么被折叠?



