8.mysql-基础.md


目录

数据库管理

查看当前软件中的数据库

show databases;

出现结果:

+--------------------+
| Database |
+--------------------+
| information_schema | --这个是mysql的元数据
| mysql | --这个是mysql的配置数据库,包含用户信息,权限等
| performance_schema | --这个是mysql的运行数据,日志
| test | --这个是mysql的测试数据库,初始是空的
+--------------------+

工具

SQLyog_Enterprise.rar

创建数据库

直接创建

create database hi;
``
创建并设置字符集:注意数据库中的utf-8不带有横杠,写为utf8
```mysql
create database ss
default character set utf8;

删除数据

drop database hi;

查看字符集

show careate database ss;

修改数据库

alter database ss default character set gbk;

表管理

进入数据库

use hi;

查看表

show tables;

创建表

create table person(
id int,
name varchar(20),
age int
);

查看表结构


desc person;

出现:

mysql> desc person;
+-------+-------------+------
| Field | Type | Null
+-------+-------------+------
| id | int(11) | YES
| name | varchar(20) | YES
| age | int(11) | YES
+-------+-------------+------
3 rows in set (0.03 sec)

删除表

drop table person;

修改表

添加字段

alter table person add column hight int;

删除字段

alter table person drop column hight;

修改字段名称



修改字段类型

alter table person modify column hight varchar(8);

修改表名称

alter table person change column hight int;

插入数据

插入所有字段数据

USE hi;
-- 1.增加数据
INSERT INTO person VALUES(1, '张三', 25, '什么');


-- 2.查询数据
SELECT * FROM person;

插入指定字段

-- 3.插入指定字段
INSERT INTO person(id) VALUES(2);

修改



删除



查询优化

空比较

-- 和空字符串比较
SELECT * FROM person AS p WHERE p.name <> ''
-- 和NULL比较
SELECT * FROM person AS p WHERE p.name IS NOT NULL

模糊查询

-- %表示任意个字符比配
SELECT * FROM person AS p WHERE p.name LIKE '%三'
-- _表示单个个字符比配
SELECT * FROM person AS p WHERE p.name LIKE '_三'

分页查询

-- limit分页(起始行,查几行)
SELECT * FROM person LIMIT 0,1;
-- 分页:当前页 每一页显示数据量
-- 分页查询:LIMIT (当前页-1)*每页显示条数, 每页显示条数


数据约束

默认值和非空

-- 默认值
CREATE TABLE default_test(
id INT,
NAME VARCHAR(8) DEFAULT 'a'
);


INSERT INTO default_test(id) VALUES(1);


-- 非空
not null


-- 唯一
CREATE TABLE student(
         id INT UNIQUE, -- 唯一
         NAME VARCHAR(20)
)  

主键和自增长

  • 通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。
  • 不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的 id字段。
CREATE TABLE student(
         id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始  ZEROFILL 零填充。也就是原来的自增长是0,1....而现在int是4位的,变为:0001,0002....

         NAME VARCHAR(20)
)



这里要注意,如果删除数据时候,自增长的删除与否是可设置的

-- 不能影响自增长约束
DELETE FROM student;
-- 可以影响自增长约束
TRUNCATE TABLE student;    

外键

-- 部门表(主表)
CREATE TABLE dept(
         id INT PRIMARY KEY,
         deptName VARCHAR(20)
)
 
-- 修改员工表(副表/从表)
CREATE TABLE employee(
         id INT PRIMARY KEY,
         empName VARCHAR(20),
         deptId INT,-- 把部门名称改为部门ID
         -- 声明一个外键约束
         CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
         --           外键名称                  外键               参考表(参考字段)
)    

注意:

  • 被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
  • 主表的参考字段通用为主键!
  • 添加数据: 先添加主表,再添加副表
  • 修改数据: 先修改副表,再修改主表
  • 删除数据: 先删除副表,再删除主表

级联操作

  • 级联修改: ON UPDATE CASCADE
  • 级联删除: ON DELETE CASCADE

CREATE TABLE employee(
         id INT PRIMARY KEY,
         empName VARCHAR(20),
         deptId INT,-- 把部门名称改为部门ID
         -- 声明一个外键约束
         CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE-- ON CASCADE UPDATE :级联修改
         --           外键名称                  外键               参考表(参考字段)
)
-- 注意: 级联操作必须在外键基础上使用    


原文地址:https://www.cnblogs.com/bugstar/p/8512661.html