Mysql基础总结
⦁ 数据库服务启动与关闭(以管理员的身份运行黑窗口):
启动: net start mysql
关闭: net stop mysql
⦁ 数据库连接(黑窗口) :
明文: mysql -u用户名 -p密码
密文: mysql -u用户名 -p 回车 密码
远程: mysql -h地址 -u用户名 -p 回车 密码
注意:-u和用户名之间可以有空格 但是-p和密码之间不能有空格
⦁ 关于数据库的操作
3.1创建数据库:
CREATE DATABASE 数据库名;
3.2判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
3.3创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
可以吧3.2与3.3结合起来:
CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集;
3.4 查看所有的数据库
SHOW DATABASES;
3.5查看某个数据库的定义信息
SHOW CREATE DATABASE 数据库名;
3.6修改数据库默认的字符集
ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
3.7删除数据库
DROP DATABASE 数据库名;
3.8查看正在使用的数据库
SELECT DATABASE();
3.9使用/切换数据库
USE 数据库名;
⦁ 关于表的操作
4.1创建表的格式 [约束可以不用写]:
CREATE TABLE 表名 (
字段名 1 字段类型 1 约束1,
字段名 2 字段类型 2 约束2
);
4.2查看某个数据库中的所有表
SHOW TABLES;
4.3查看表结构
DESC 表名;
4.4查看创建表的 SQL 语句
SHOW CREATE TABLE 表名;
4.5快速创建一个表结构相同的表
CREATE TABLE 表名1 LIKE 表名2;
创建 2 表,2 表结构和 1 表结构相同
4.6直接删除表
DROP TABLE 表名;
4.7判断表是否存在,如果存在则删除表
DROP TABLE IF EXISTS 表名;
4.8修改表名
RENAME TABLE 表名 TO 新表名;
4.9修改字符集
ALTER TABLE 表名 character set 字符集;
4.10添加表列
ALTER TABLE 表名 ADD 列名 类型 约束;
4.11修改列类型
ALTER TABLE 表名 MODIFY 列名 新的类型;
4.12修改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
4.13删除列
ALTER TABLE 表名 DROP 列名;
⦁ 关于表中数据的操作:
5.1插入数据
根据字段插入数据
INSERT INTO 表名 ( 字段名 1, 字段名 2, …) VALUES (值 1, 值 2,…);
假如所有字段都插入数据 可以略写为(省略字段名):
INSERT INTO 表名 VALUES (值1, 值2, 值3…);
批量添加:
INSERT INTO 表名 ( 字段名 1, 字段名 2) VALUES (值 1, 值 2),(值 1, 值 2);
5.2更新表记录
UPDATE 表名 SET 列名= 值 [WHERE 条件表达式]
不带条件修改数据
UPDATE 表名 SET 字段名= 值; -- 修改所有的行
带条件修改数据
UPDATE 表名 SET 字段名= 值 WHERE 字段名= 值;
5.3删除表记录(如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。)
DELETE FROM 表名 [WHERE 条件表达式]
不带条件删除数据
DELETE FROM 表名;
带条件删除数据
DELETE FROM 表名 WHERE 字段名= 值;
5.4使用 truncate 删除表中所有记录
TRUNCATE TABLE 表名;
truncate 和 delete 的区别:truncate 相当于删除表的结构,再创建一张表。
⦁ 查询数据
6.1查询指定字段
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
若是查询所有字段,可简写为:
SELECT * FROM 表名;
6.2使用别名(AS可以省略)
SELECT 字段1 AS 别名, 字段2 AS 别名... FROM 表名 AS 表别名;
SELECT 字段1 别名, 字段2 别名... FROM 表名 表别名;
6.3查询指定列并且去重
SELECT DISTINCT 字段名 FROM 表名;
6.4查询结果参与运算
SELECT 列名1 + 固定值 FROM 表名;
SELECT 列名1 + 列名2 FROM 表名;
6.5条件查询的语法
SELECT 字段名 FROM 表名 WHERE 条件;
6.6 like 关键字 表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
6.7 排序
select * from 表名 order by 列名 asc(升序,默认) / desc (降序);
6.8聚合函数
6.8.1统计函数count() 统计指定字段不为空的记录行数
select count(列名) from 表名
6.8.2求和函数sum() 对指定记录中的某个字段进行求和
select sum(列名) from 表名;
6.8.3最值函数max()/min() 对指定记录中的某个字段进行求最值
select max(列名) from 表名;
6.8.4平均值函数avg() 对指定记录中的某个字段进行求平均值
select avg(列名) from 表名;
6.8 分组查询(必须跟随聚合函数)
select count(*) from 表名 group by 列名;
6.8.1. where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
6.9 分页查询
1. 语法:limit 开始的索引,每页查询的条数;
SELECT * FROM 表名 LIMIT 0 , 3;
2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数 -- 每 页显示3条记录
⦁ 主键约束:
主键约束:primary key
1.在创建表时,添加主键约束
create table stu(
Id int primary key,-- 给id添加主键约束
name varchar(20)
);
2. 删除主键(不能用modify以修改的方式删除主键)
ALTER TABLE 表名 DROP PRIMARY KEY;
3. 创建完表后,添加主键
ALTER TABLE 表名 MODIFY id INT PRIMARY KEY;
4.自动增长:
1. 在创建表时,添加主键约束,并且完成主键自增长
create table stu(
id int primary key auto_increment,-- 给id添加主键约束
name varchar(20)
);
2.删除自动增长
ALTER TABLE 表名 MODIFY id INT;
3.添加自动增长
ALTER TABLE 表名 MODIFY id INT AUTO_INCREMENT;
非空约束
创建表时添加约束
CREATE TABLE stu(
Id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
2. 创建表完后,添加非空约束
ALTER TABLE 表名 MODIFY 字段名 类型 NOT NULL;
3. 删除字段的非空约束
ALTER TABLE 表名 MODIFY 字段名 类型;
唯一约束
1. 在创建表时,添加唯一约束
CREATE TABLE stu(
Id INT,
phone_number VARCHAR(20) UNIQUE -- 手机号
);
2. 删除唯一约束
ALTER TABLE 表名 DROP INDEX 字段名;
3. 在表创建完后,添加唯一约束
ALTER TABLE 表名 MODIFY 字段名 类型 UNIQUE;
外键约束
1. 在创建表时,可以添加外键
create table 表名(
....
外键列,
constraint 外键名称 foreign key (外键列名称) referecnes 主表名称(主表列名称)
);
2. 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
3. 创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
4. 级联操作
1. 添加级联操作 (更新级联和删除级联)
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字 段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;
2.分类:
⦁ 级联更新:ON UPDATE CASCADE
⦁ 级联删除:ON DELETE CASCADE