SQL语法与数据库快速入门(1)

article/2025/8/19 20:30:16

目录

  1. 数据库简介
  2. 数据库分类
  3. 常用数据库简介
  4. 使用场景
  5. MySql 的安装与配置
  6. 数据库客户端工具
  7. MySql 介绍
  8. SQL 简介
  9. DDL 数据库操作-创建
  10. DDL 数据库操作-查看
  11. DDL 数据库操作-修改
  12. DDL 数据库操作-删除
  13. DDL 数据库表操作简介
  14. DDL 数据库表操作-创建
  15. DDL 数据库表操作-查看
  16. DDL 数据库表操作-修改
  17. DDL 数据库表操作-删除
  18. DML 表数据操作-插入
  19. DML 表数据操作-修改
  20. DML 表数据操作-删除
  21. DQL 表查询操作-简介
  22. DQL 表查询-条件查询
  23. DQL 表查询操作-排序
  24. DQL 表查询操作-聚合函数
  25. DQL 表查询操作-分组
  26. DQL 表查询操作-limit 关键字
  27. SQL 约束-主键约束
  28. SQL 约束-非空约束
  29. SQL 约束-唯一约束
  30. SQL 约束-默认值

1.数据库简介

  • 数据库(DataBase) 就是一个以某种有组织的方式存储的数据集合
  • 是存储和管理数据的仓库
  • 其本质是一个文件系统
  • 数据库管理系统(DBMS)是一款管理软件

2.数据库分类

  • 关系型数据库(RDB: Relationship DataBase)
  • 非关系型数据库(NoSQL)

3.常用数据库简介

  • 关系型数据库(RDBMS):
    • MySQL、Oracle、Postgres、SQLite、SQLServer
  • NoSQL 数据库:MongoDB、Redis、HBase、Neo4j
  • NewSQL

4.使用场景

关系型数据库

  • 需要做复杂处理数据
  • 数据量不是特别大的数据
  • 对安全性能要求高的数据
  • 数据格式单一的数据

非关系型数据库(NoSQL)

  • 数据模型比较简单
  • 需要灵活性更强的 IT 系统
  • 对数据库性能要求较高
  • 不需要高度的数据一致性

5.MySql 的安装与配置(网上搜一下教程)

  • 开启 mysql 服务:net start mysql
  • 登录:mysql -h主机IP -u用户名 -p密码
  • 修改密码:alter user 'root'@'localhost' identified by '密码';
  • 退出:exit
  • 关闭 mysql 服务:net stop mysql

6.数据库客户端工具

  • WorkBench
  • Navicat(异常教程)

7.MySql 介绍

MySQL 目录结构:

  • 安装目录
  • 配置文件:my.ini 文件
  • 数据表目录:data

数据库表简介

表:包含数据库中所有数据的数据库对象

  • 表名:每个表的唯一标识
  • 模式(schema):关于数据库和表的布局及特性的信息
  • 列:表中每列称为一个字段
  • 行:表中的一个记录

8.SQL 简介

SQL 是什么?

  • 结构化查询语言(Structured Query Language)简称 SQL
  • 一种特殊目的的编程语言
  • 一种数据库查询和程序设计语言
  • 用于存取数据以及查询、更新和管理关系数据库系统

通用语法:

  • 可以单行或者多行书写,以分号结尾 ;
  • 可以使用空格和缩进来增加语句的可读性
  • 不区分大小写,一般关键字大写,数据库名 表名列名小写
  • 注释方式

# 单行注释,MySQL 特有的单行注释

-- 单行注释

/* 多行注释 */ 

分类

  • 数据定义语言(DDL):用来定义数据库对象,比如数据库,表,列等
  • 数据操作语言(DML):用来对数据库中表的记录进行更新
  • 数据查询语言(DQL):用来查询数据库中表的记录
  • 数据控制语言(DCL):用来定义数据库的访问权限和安全级别及创建用户

9.DDL 数据库操作-创建

创建数据库语法:

-- 创建数据库

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] 数据库名 CHARACTER SET [=] 字符集

crete database if not exists test_db character set = utf8

创建数据库注意事项

  • 不能与其他数据库重名
  • 名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,但不能使用单独的数字
  • 名称最长可为 64 个字符,别名最长为 256 个字符。
  • 不能使用 MySQL 关键字作为数据库名
  • 建议采用小写来定义数据库名

创建基本数据库:

-- 创建名为 test_db 的数据库

CREATE DATABASE test_db;

创建指定字符集的数据库:

-- 创建名为 test_db2 的数据库,并指定字符集为 utf8

CREATE DATABASE test_db2 CHARACTER SET utf8;

创建数据库前判断是否存在同名数据库:

-- 如果数据库 test_db3 不存在,则创建名为 test_db3 的数据库

CREATE DATABASE IF NOT EXISTS test_db3 CHARACTER SET utf8;

10.DDL 数据库操作-查看

选择数据库语法:

-- 查看所有数据库

SHOW DATABASES;

  • DATABASES:必选项,用于列出当前用户权限范围内所能查看到的所有数据库名称

查看数据库语法:

-- 选择数据库为当前数据库

USE 数据库名;

查看数据库的定义信息语法:

-- 查看数据库定义信息

SHOW CREATE DATABASE 数据库名 

实例:

-- 查看当前所有数据库

SHOW DATABASES;

-- 选择数据库 test_db

USE test_db;

-- 查看 test_db 数据库的定义信息

SHOW CREATE DATABASE 数据库名 

11.DDL 数据库操作-修改:

修改数据库语法:

-- 修改数据库相关参数

ALTER {DATABASE} [数据库名] CHARACTER SET [=] 字符集

  • DATABASE:必选项
  • 数据库名:可选项,如果不指定要修改的数据库,那么将表示修改当前(默认)的数据库
  • CHARACTER SET = 字符集:可选项,用于指定数据库的字符集

修改数据库字符集:

-- 创建数据库 db1,指定字符集为 GBK

CREATE DATABASE db1 CHARACTER SET GBK;

-- 将数据库 db1 的字符集修改为 utf8

ALTER DATABASE db1 CHARACTER SET utf8;

12.DDL 数据库操作-删除

删除数据库语法

-- 删除数据库

DROP DATABASE [IF EXISTS] 数据库名;

删除某个数据库

-- 查看当前所有数据库

SHOW DATABASES;

-- 删除某个数据库

DROP DATABASE test_db;

-- 如果某个数据库存在,则删除这个数据库

DROP DATABASE IF EXISTS test_db2;

13.DDL 数据库表操作简介

MySQL 的数据类型:

  • 数字类型
  • 字符串类型
  • 日期和时间类型

 

 

常用数据类型:

  • INT:整型
  • DOUBLE:浮点型
  • VARCHAR:字符串型
  • DATE:日期类型

14.DDL 数据库表操作-创建

创建表语法:

-- 创建表

CREATE TABLE 数据表名 ( 列名1 属性, 列名2 属性… );

列属性:

列名 数据类型 [NOT NULL | NULL] [DEFAULT 默认值] [AUTO_INCREMENT] [PRIMARY KEY ] [注释]

创建学员表:

  • 创建在 db1 数据库中
  • 表名为 student
  • 包含两个字段
    • 学员 id
    • 学员姓名

-- 切换到数据库 db1

USE db1;

-- 创建学员表

CREATE TABLE student( id INT, name VARCHAR(20) ); 

复制结构相同的表:

-- 复制表

CREATE TABLE 数据表名 LIKE 源数据表名

  • 数据表名:表示新创建的数据表的名
  • LIKE 源数据表名:必选项,指定依照哪个数据表来创建新表

-- 创建一个表结构与 student 相同的 s2 表

CREATE TABLE s2 LIKE student; 

15.DDL 数据库表操作-查看

查看表名语法:

-- 查看当前数据库中所有的表名

SHOW TABLES;

查看表结构语法:

-- 查看表结构

  • DESCRIBE 数据表名;
  • DESCRIBE 数据表名 列名;

-- 查看表结构简写

  • DESC 数据表名;
  • DESC 数据表名 列名;

实例:

-- 选择数据库

USE db1;

-- 查看数据库中的表

SHOW TABLES;

-- 查看学员表的表结构

DESC student;

-- 查看学员表中 name 列的信息

DESC student name;

16.DDL 数据库表操作-修改

添加新列:

-- 添加新列

ALTER TABLE 表名 ADD 列名 列属性;

# 实例

-- 选择数据库 db1

USE db1;

-- 添加新列

ALTER TABLE student ADD email varchar(50) NOT NULL;

-- 查看表结构

DESC student;

修改列定义:

-- 修改列定义

ALTER TABLE 表名 MODIFY 列名 列属性;

# 实例

-- 添加分数列,先定义为字符类型

ALTER TABLE student ADD score varchar(10);

-- 修改字段类型

ALTER TABLE student modify score int;

-- 查看表结构

DESC student;

修改列名:

-- 修改列名

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

# 实例

-- 修改列名并指定列的默认值

ALTER TABLE student CHANGE COLUMN name stu_name VARCHAR(30) DEFAULT NULL;

-- 查看表结构

DESC student;

删除列:

-- 删除列

ALTER TABLE 表名 DROP 列名;

# 实例

-- 将数据表 student 中的列 score 删除

ALTER TABLE student DROP score;

-- 查看表结构

DESC student;

修改表名:

-- 修改表名方式一

ALTER TABLE 旧表名 RENAME AS 新表名;

-- 修改表名方式二

RENAME TABLE 旧表名 To 新表名;

# 实例

-- 将数据表 student 更名为 stu ALTER TABLE student RENAME AS stu;

-- 将数据表 stu 更名为 stu_table RENAME TABLE stu TO stu_table;

-- 查看表名 SHOW TABLES;

17.DDL 数据库表操作-删除

删除表语法:

DROP TABLE [IF EXISTS] 数据表名;

  • IF EXISTS:可选项,先判断是否存在要删除的表,存在时才执行删除操作
  • 数据表名:用于指定要删除的数据表名

实例:

-- 切换到数据库 db1

USE db1;

-- 创建 student 表

CREATE TABLE student( id INT, name VARCHAR(20) );

-- 直接删除 student 表

DROP TABLE student;

-- 先判断再删除 student 表

DROP TABLE IF EXISTS student;

18.DML 表数据操作-插入

表数据插入语法:

-- 插入数据

INSERT INTO 数据表名 (列名1, 列名2...) VALUES(值1, 值2...);

  • INTO 数据表名:指定被操作的数据表
  • (列名1, 列名2…):可选项,向数据表的指定列插入数据
  • VALUES(值1, 值2…):需要插入的数据

完整插入数据:

-- 选择数据库

USE db1;

-- 创建 user 表

CREATE TABLE user( id INT, name VARCHAR(20), age INT, sex CHAR(1), address VARCHAR(40) );

-- 插入一条完整数据,写出全部列名

INSERT INTO user (id,name,age,sex,address) VALUES(1,'张三',20,'男','北京');

-- 插入一条完整数据,不写列名

INSERT INTO user VALUES(2,'李四',22,'女','上海');

插入数据记录的一部分:

-- 插入表一行中的某几列的值

INSERT INTO user (id,name,address) VALUES (3,'王五','深圳');

插入多条记录:

-- 一次插入多条数据

INSERT INTO user (id,name,address) VALUES(4,'赵六','天津'),(5,'小红','成都'),(6,'小白','杭州');

注意事项:

  • 值与字段必须要对应,个数相同并且数据类型相同
  • 值的数据大小,必须在字段指定的长度范围内
  • VARCHAR CHAR DATE 类型的值必须使用单引号包裹
  • 如果要插入空值,可以忽略不写,或者插入 NULL
  • 如果插入指定字段的值,必须要上写列名

19.DML 表数据操作-修改

表数据修改语法:

  • SET 子句:必选项,用于指定表中要修改的字段名及其字段值
  • WHERE 子句:可选项,用于限定表中要修改的行

-- 修改表中数据

UPDATE 数据表名 SET 列名1=值1 [, 列名2=值2...] [WHERE 条件表达式] 

实例:

-- 选择 db1 为当前数据库

USE db1;

-- 创建 student 表

CREATE TABLE student( id INT, name VARCHAR(20), sex CHAR(1), age TINYINT, city VARCHAR(50) );

-- 插入 5 条数据

INSERT INTO student VALUES(1,'小李','男', 18, '北京'), (2,'小白','女', 20, '成都'), (3,'小王','男', 23, '上海'), (4,'小赵','女', 21, '深圳'), (5,'小周','男', 25, '杭州');

-- 不带条件修改,将所有的性别改为女

UPDATE student SET sex = '女';

-- 带条件的修改,将 id 为 3 的学生,性别改为男

UPDATE student SET sex = '男' WHERE id = 3;

-- 一次修改多个列, 将 id 为 2 的学员,年龄改为 30,地址改为 北京

UPDATE student SET age = 30, city = '北京' WHERE id = 2;

20.DML 表数据操作-删除

通过 DELETE 语句删除数据:

-- 删除表中指定行的数据

DELETE FROM 数据表名 WHERE 条件表达式

通过 TRUNCATE TABLE 语句删除数据

-- 删除表中全部数据

TRUNCATE TABLE 数据表名

实例

-- 选择 db1 为当前数据库

USE db1;

# 数据准备

-- 创建 student 表

CREATE TABLE student( id INT, name VARCHAR(20), sex CHAR(1), age TINYINT, city VARCHAR(50) );

-- 插入 5 条数据 INSERT INTO student VALUES(1,'小李','男', 18, '北京'),(2,'小白','女', 20, '成都'),(3,'小王','男', 23, '上海'),(4,'小赵','女', 21, '深圳'),(5,'小周','男', 25, '杭州');

-- 删除 id 为 1 的数据

DELETE FROM student WHERE id = 1;

-- 删除 student 表中所有数据

DELETE FROM student;

-- 删除 student 表中所有数据

TRUNCATE TABLE student;

21.DQL 表查询操作-简介

单表查询:

-- 查询部门表中的信息

SELECT * FROM departments;

  • 单表查询:从一张表中查询所需要的数据,所有查询操作都比较简单
  • * 代表所有的列
  • 语法:SELECT * FROM 表名;

 字段查询:

-- 查询部门的名称

SELECT dept_name FROM departments;

  • 查询多个字段(列),可以使用 , 对字段进行分隔
  • 语法:SELECT 列名 FROM 表名;

起别名:

-- 查询员工信息,并将列名改为中文

SELECT emp_no AS '编号', first_name AS '名', last_name AS '姓', gender AS '性别', hire_date AS '入职时间' FROM employees emp;

  • 为表起别名:
    • SELECT 列名 FROM 表名 表别名;
  • 为字段起别名:
    • SELECT 列名 AS 别名 FROM 表名;

去重:

-- 去掉重复职级信息

SELECT DISTINCT title FROM titles;

  • DISTINCT 关键字:去掉重复信息
  • 语法:SELECT DISTINCT 列名 FROM 表名;

运算查询: 

 -- 所有员工的工资 +1000 元进行显示

SELECT emp_no , salary + 1000 FROM salaries;

  • 查询结果参与运算
    • SELECT (列名 运算表达式) FROM 表名;

22.DQL 表查询-条件查询

条件查询语法:

-- 条件查询

SELECT 列名 FROM 表名 WHERE 条件表达式

比较运算符:

 比较大小:

-- 查询出生日期晚于 1965-01-01 的员工编号、姓名和生日

SELECT emp_no, first_name, last_name, birth_date FROM employees WHERE birth_date > '1965-01-01';

  • 语法:WHERE <列名> [> < <= >= = <> !=] <值>

使用 BETWEEN 进行模糊查询:

-- 查询年薪介于 70000 到 70003 之间的员工编号和年薪

SELECT emp_no, salary FROM salaries WHERE salary BETWEEN 70000 AND 70003;

  • 语法:WHERE <列名> [NOT] BETWEEN <起始表达式> AND <结束表达式>
  • <起始表达式> 和 <结束表达式> 的顺序不能颠倒

使用 IN 进行模糊查询:

-- 查询入职日期为 1995-01-27 和 1995-03-20 日的员工信息

SELECT * FROM employees WHERE hire_date IN ('1995-01-27', '1995-03-20');

  • 语法:WHERE <列名> IN <(常量列表)>
  • (常量列表) 中各常量值用逗号隔开

判断是否为空:

-- 选择 hog_demo 为当前数据库

USE hog_demo;

-- 更新 student 表中 id 为 2 的 age 值为 NULL

UPDATE student SET age = NULL WHERE id = 2;

-- 查询学生表中年龄为 NULL 的学生信息

SELECT * FROM student WHERE age IS NULL; 

  • 语法:WHERE <列名> IS [NOT] NULL

逻辑运算符:

-- 查询名字为 Lillian 并且姓氏为 Haddadi 的员工信息

SELECT * FROM employees WHERE first_name = 'Lillian' AND last_name = 'Haddadi';

-- 查询名字为 Lillian 或者姓氏为 Terkki 的员工信息

SELECT * FROM employees WHERE first_name = 'Lillian' OR last_name = 'Terkki';

-- 查询名字为 Lillian 并且性别不是女的员工信息

SELECT * FROM employees WHERE first_name = 'Lillian' and not gender='F';

通配符:

 -- 查询名字中包含 fai 的员工的信息

SELECT * FROM employees WHERE first_name LIKE '%fai%';

-- 查询名字中 fa 开头的名字长度为 3 位的员工信息

SELECT * FROM employees WHERE first_name LIKE 'fa_';

23.DQL 表查询操作-排序

排序语法:

-- 对查询结果进行排序

SELECT 列名 FROM 表名 [WHERE 条件表达式] ORDER BY 列名1 [ASC / DESC], 列名2 [ASC / DESC]

  • ASC 表示升序排序(默认)
  • DESC 表示降序排序

单列排序:

-- 使用 salary 字段,对 salaries 表数据进行升序排序

SELECT * FROM salaries ORDER BY salary;

-- 使用 salary 字段,对 salaries 表数据进行降序排序

SELECT * FROM salaries ORDER BY salary DESC;

-- 查询员工的编号和入职日期,按照员工入职日期从晚到早排序

SELECT emp_no, hire_date FROM employees ORDER BY hire_date DESC;

  • 只按照某一个列进行排序, 就是单列排序

组合排序:

-- 在入职时间排序的基础上,再使用 emp_no 进行排序 -- 组合排序

SELECT emp_no, hire_date FROM employees ORDER BY hire_date DESC, emp_no DESC;

  • 同时对多个字段进行排序
  • 如果第一个字段相同,就按照第二个字段进行排序

24.DQL 表查询操作-聚合函数

聚合函数:

  • COUNT():统计指定列不为 NULL 的记录行数
  • MAX():计算指定列的最大值
  • MIN():计算指定列的最小值
  • SUM():计算指定列的数值和
  • AVG():计算指定列的平均值

聚合查询:

-- 查询职级名称为 Senior Engineer 的员工数量

SELECT COUNT(*) FROM titles WHERE title = 'Senior Engineer';

-- 查询员工编号为 10002 的员工的最高年薪

SELECT MAX(salary) FROM salaries WHERE emp_no = 10002;

-- 查询员工编号为 10002 的员工的最低年薪

SELECT MIN(salary) FROM salaries WHERE emp_no = 10002;

-- 查询员工编号为 10002 的员工的薪水总和

SELECT SUM(salary) FROM salaries WHERE emp_no = 10002;

-- 查询员工编号为 10002 的员工的平均年薪

SELECT AVG(salary) FROM salaries WHERE emp_no = 10002;

  • 语法:SELECT 聚合函数(列名) FROM 表名;

25.DQL 表查询操作-分组

分组查询语法:

-- 分组查询

SELECT 分组列/聚合函数 FROM 表名 GROUP BY 分组列 [HAVING 条件];

  • 分组列:按哪些列进行分组
  • HAVING:对分组结果再次过滤

实例:

-- 查询每个员工的薪资和

SELECT emp_no, SUM(salary) FROM salaries GROUP BY emp_no;

-- 查询员工编号小于 10010 的,薪资和小于 400000 的员工的薪资和

SELECT emp_no, SUM(salary) FROM salaries WHERE emp_no < 10010 GROUP BY emp_no HAVING SUM(salary) < 400000;

子句区别:

  • WHERE 子句:从数据源中去掉不符合其搜索条件的数据
  • GROUP BY 子句:搜集数据行到各个组中,统计函数为各个组计算统计值
  • HAVING 子句:去掉不符合其组搜索条件的各行数据行

26.DQL 表查询操作-limit 关键字

LIMIT 关键字:

-- 限制查询结果行数

SELECT 列名1, 列名2... FROM 表名 LIMIT [开始的行数], <查询记录的条数>

-- 使用 OFFSET 关键字指定开始的行数

SELECT 列名1, 列名2... FROM 表名 LIMIT <查询记录的条数> OFFSET <开始的行数>

实例:

-- 展示前 10 条员工信息

SELECT * FROM employees LIMIT 10;

SELECT * FROM employees LIMIT 0, 10;

SELECT * FROM employees LIMIT 10 OFFSET 0;

-- 显示年薪从高到低排序,第 15 位到第 20 位员工的编号和年薪

SELECT emp_no, salary FROM salaries ORDER BY salary DESC LIMIT 14, 6;

SELECT emp_no, salary FROM salaries ORDER BY salary DESC LIMIT 6 OFFSET 14;

单表查询总结:

-- 基础查询语法

SELECT DISTINCT <列名> FROM <表名> WHERE <查询条件表达式> GROUP BY <分组的列名> HAVING <分组后的查询条件表达式> ORDER BY <排序的列名> [ASC / DESC] LIMIT [开始的行数], <查询记录的条数>

SQL 语句执行顺序:

PlantUML diagram

27.SQL 约束-主键约束

SQL 约束:

  • 对表中的数据进行进一步的限制
  • 保证数据的正确性、有效性、完整性
  • 违反约束的不正确数据无法插入到表中
  • 常见的约束
    • 主键:PRIMARY KEY
    • 非空:NOT NULL
    • 唯一:UNIQUE
    • 默认:DEFAULT
    • 外键:FOREIGN KEY

主键约束:

  • 主键:一列(或一组列),其值能够唯一标识表中每一行
  • 特点:不可重复,唯一,非空
  • 语法:列名 字段类型 PRIMARY KEY

添加主键约束:

-- 创建一个带主键的表

CREATE TABLE emp1(

-- 设置主键 唯一 非空

eid INT PRIMARY KEY,

ename VARCHAR(20),

sex CHAR(1)

);

-- 给存在的表添加主键

CREATE TABLE emp2( eid INT , ename VARCHAR(20), sex CHAR(1) )

-- 通过 DDL 语句进行设置

ALTER TABLE emp2 ADD PRIMARY KEY(eid);

创建主键自增的表:

-- 创建主键自增的表

CREATE TABLE emp3( eid INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20), sex CHAR(1) );

  • AUTO_INCREMENT:表示自动增长(字段类型必须是整数类型)

修改主键自增的起始值:

-- 创建主键自增的表,自定义自增其实值

CREATE TABLE emp4( eid INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(20), sex CHAR(1) )AUTO_INCREMENT=100;

删除主键约束:

-- 删除表中的主键

ALTER TABLE 表名 DROP PRIMARY KEY;

-- 使用 DDL 语句删除表中的主键

ALTER TABLE emp2 DROP PRIMARY KEY;

-- 查看表结构

DESC emp2;

选择主键原则:

  • 针对业务设计主键,建议每张表都设计一个主键
  • 主键可以没有业务意义,只需要保证不重复

mysql设置主键的目的:

MySQL中设置主键的目的是为了确保表中每一行的唯一性。主键是表中的唯一标识符,它用于将表中的每一行与其他行区分开来。如果没有主键,则可能会出现重复的行,这可能会导致数据不一致或出现错误。主键可以是一个列,也可以是多个列的组合。在MySQL中,主键通常是一个整数类型的列,例如INT或BIGINT。主键可以自动生成,也可以手动指定。在MySQL中,主键通常用于连接多个表,以便在查询时能够准确地获取所需的数据。此外,主键还可以用于实现事务处理,以确保每个事务都包含了一组相关的操作,并且这些操作要么全部成功,要么全部失败。

28.SQL 约束-非空约束

非空约束:

  • 非空约束特点: 某一列不予许为空
  • 语法:列名 字段类型 NOT NULL

添加非空约束:

-- 添加非空约束

CREATE TABLE emp5(

eid INT PRIMARY KEY AUTO_INCREMENT,

-- ename 字段不能为空

ename VARCHAR(20) NOT NULL,

sex CHAR(1)

);

29.SQL 约束-唯一约束

唯一约束:

  • 唯一约束: 表中的某一列的值不能重复
  • 对 NULL 不做唯一的判断
  • 语法:列名 字段类型 UNIQUE

添加唯一约束:

-- 创建带有唯一约束的表

CREATE TABLE emp6(

eid INT PRIMARY KEY AUTO_INCREMENT,

-- 为 ename 字段添加唯一约束

ename VARCHAR(20) UNIQUE,

sex CHAR(1)

);

主键约束与唯一约束的区别:

  • 主键约束,唯一且不能够为空
  • 唯一约束,唯一但是可以为空
  • 一个表中只能有一个主键,但是可以有多个唯一约束

mysql唯一约束的作用: 

MySQL唯一约束的目的主要是确保表中每一行的唯一性。在MySQL中,唯一约束可以用于一个或多个列上,以确保这些列中的每一行都是唯一的。这种约束可以用于避免重复数据的插入,从而减少数据不一致性的可能性。唯一约束通常用于具有唯一标识的表中,例如用户表、订单表等。通过在表中添加唯一约束,可以确保每一行数据的唯一性,从而避免重复数据的插入,并提高数据的一致性和可靠性。在MySQL中,唯一约束通常用于主键、外键、唯一索引等类型。主键用于确保表中每一行的唯一性,而外键用于建立表之间的关联关系,并确保关联表中的数据的一致性。唯一索引则是一种特殊的索引,它只能包含唯一的数据,通常用于快速查找和排序。总之,MySQL唯一约束的目的是确保表中每一行的唯一性,避免重复数据的插入,并提高数据的一致性和可靠性。

30.SQL 约束-默认值

默认值:

  • 默认值约束:用来指定某列的默认值
  • 语法:列名 字段类型 DEFAULT 默认值

字段指定默认值:

-- 创建带有默认值的表

CREATE TABLE emp7(

eid INT PRIMARY KEY AUTO_INCREMENT,

ename VARCHAR(20),

-- 为 sex 字段添加默认值

sex CHAR(1) DEFAULT '女'

);


http://chatgpt.dhexx.cn/article/td48Mp8B.shtml

相关文章

SQL语法与数据库快速入门(2)

目录&#xff1a; 多表简介SQL 约束-外键约束多表关系简介多表查询多表查询-内连接查询多表查询-外连接查询子查询简介子查询实战数据库进阶redis 内存数据库mongodb nosql 数据库neo4j 图数据库 1.多表简介 多表及使用场景介绍&#xff1a; 多表顾名思义就是在数据库设计中…

【数据库】MYSQL轻松入门

文章目录 MYSQL入门一、MYSQL概述1. 数据库相关概念1.1 数据库&#xff0c;数据库管理系统与SQL1.2 数据库种类以及主流数据库管理系统排名1.2.1 数据库的种类1.2.2 数据库主流排名 1.3 MySQL数据库安装1.3.1 下载1.3.2 修改密码 1.4 数据模型 二、SQL2.1 通用语法与注释2.2 SQ…

Java连接mysql数据库的五分钟快速入门教程

总体流程&#xff1a;数据库->Java 总体步骤&#xff1a; 1.创建数据库并新建表 2.创建一个Java项目&#xff0c;在项目下新建文件夹lib&#xff0c;类型为Directory 3.将下载好mysql-connector-java-8.0.27.jar放到lib目录下 4.将lib下的依赖添加到Java项目中 5.编写代码连…

数据库快速入门教程--视频

数据库快速入门教程--视频 下载地址&#xff1a;http://v.51work6.com/courseInfoRedirect.do?actioncourseInfo&courseId240579本课程是这个课程体系的核心之一&#xff0c;为软件开发人员所需数据库知识的学习教材&#xff0c;而不是培训一个DBA&#xff08;数据库管理员…

Docker 安装与操作 Mysql 数据库快速入门

目录 演示环境说明 Mysql 镜像检索 Mysql 镜像下载 Mysql 容器运行 错误运行方式 正确运行方式 端口映射 连接测试 高级命令指定编码运行 演示环境说明 1、《 Docker 镜像操作 常用命令》中说明了如何从 Docker Hub 上下载镜像&#xff0c;《 Docker 容器操作 常用命…

数据库(MySQL)基础快速入门!

前言&#xff1a;这篇送给那些想要学会数据库&#xff0c;但又不想花太多时间的同学们。看了这篇数据库知识&#xff0c;轻轻松松搞定它&#xff01;用不同的工具操作数据库命令可能会有小小的不同&#xff0c;我用的是系统自带的cmd。&#xff08;凡是数据库名称&#xff0c;数…

MySQL数据库1——数据库快速入门

MySQL数据库——数据库基础 &#xff08;一&#xff09;为什么使用数据库 数据库用来存储海量数据数据库利于数据查询和管理数据库相对于文件安全性更高数据库相对于文件利于控制 &#xff08;二&#xff09;MySQL的基本使用 安装好MySQL数据库以后&#xff0c;连接服务器。…

mysql快捷创建数据库_mysql数据库快速入门(1)

1、数据库操作 1.1、连接mysql服务器 mysql -u root( 用户名 ) -p 1.2、退出mysql命令提示窗 exit 1.3、查看版本 SELECT VERSION(); 1.4、列出数据库列表 SHOW DATABASES; 1.5、创建数据库 CREATE DATABASE IF NOT EXISTS [database] DEFAULT CHARSET UTF8; 1.6、选择要操作的…

SQLite3数据库的快速入门菜鸟教程

SQLite3是一个轻量级嵌入式数据库&#xff0c;其主要有以下的特点&#xff1a; 1、零配置无需安装和管理配置&#xff1b; 2、储存在单一磁盘文件中&#xff1b; 3、数据库文件可在不同字节序的机器自由共享&#xff1b; 4、比目前流行的大多数数据库对数据的操作要快&…

MySQL数据库快速入门

MySQL基础 1、数据库相关概念 以前我们做系统&#xff0c;数据持久化的存储采用的是文件存储。存储到文件中可以达到系统关闭数据不会丢失的效果&#xff0c;当然文件存储也有它的弊端。假设在文件中存储以下的数据&#xff1a; 姓名 年龄 性别 住址 张三 23 男 北京西三旗…

MySQL数据库快速入门到精通(超详细保姆级,建议收藏)这可能是目前最适合你的教程,从基础语法到实例演示。

前言 此文章旨在为需要掌握快速开发和复习MySQL的同学所准备&#xff0c;您完全可以把此文章当作参考文档来使用&#xff0c;本文将尽量精简&#xff0c;使您快速的理解和掌握语法。 关于MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;…

超经典两万字,MySQL数据库快速入门。

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」&#xff1a;此文章已录入专栏《MySQL数据库快速入门》 MySQL快速入门 一、环境准备1. MySQL下载及安装2. MySQL启动3. MySQL客…

SQL数据库快速入门基础

SQL(Structure Query Language,结构化查询语言)语言是国际标准化组织(ISO)采纳的标准数据库语言。 数据库就是一幢大楼,我们要先盖楼,然后再招住户(住户当然就是数据库对象,)。我们盖得大楼的基本格局设计师们已经为我们设计好,我们在创建数据库过程中,系统(设计师)…

数据库快速入门

数据库快速入门 目录 数据库快速入门 1. 数据库基础知识入门 2. Postgre数据库介绍 3. 数据库入门操作 3.1常用命令 3.2 数值类型 3.3 数据运算符 4. 常用函数介绍 4.1 常用函数介绍 4.2 自定义函数 5 数据库索引和视图介绍 5.1 数据库索引介绍 5.2 数据库视图介…

计算机类书籍大全

空降百度网盘: 链接&#xff1a;https://pan.baidu.com/s/1yG198vf_xxBUKW2q-aYm4A 提取码&#xff1a;sll1

爬虫之 爬取京东计算机书籍

爬取京东的计算机类书籍 1. 工具&#xff1a; requests, pycharm, scrapy, mongodb 2. 网页提取工具: xpath 1. 分析京东网页: 打开京东网站 查看源码发现不是动态网页&#xff0c;而且都是列表, 说明了很好处理&#xff1b;开始分析; 我们只要提取书名&#xff0c;书的链…

计算机专业必读哪些经典书籍?

大家好&#xff0c;我是狗哥。 经常有粉丝问&#xff1a;狗哥&#xff0c;我想学计算机&#xff0c;应该读哪些书籍&#xff1f;那么多计算机书籍&#xff0c;我如何选&#xff1f;&#xff0c;今天狗哥就把自己的书单发出来&#xff0c;供大家参考&#xff0c;并附上连接&…

国家电网计算机类备考经验分享

刚刚参加完国家电网计算机类23届的笔试和面试&#xff0c;笔试78&#xff0c;为了给备考国家电网计算机类的小伙伴提供一些有用的信息&#xff0c;给大家分享一个经验贴。本文分为4部分。分别为&#xff1a;个人情况、复习时间线、所用书籍、经验分享。希望这篇文章可以解决小伙…

计算机专业必读的经典书籍!!(建议收藏)

第一个系列&#xff1a;基础 要说哪些书是计算机的经典书籍&#xff0c;我猜很多人都要推荐机械工业出版社引进的黑皮书系列了&#xff0c;你就看吧&#xff0c;每一本都很适合垫显示器垫桌角&#xff0c;垫显示器这个其实只不过是一个调侃而已&#xff0c;之所以这么说&#…

可以看计算机专业书籍的app,分享两个好用的读书APP

分享我现在用的2个读书APP&#xff1a;微信读书和藏书馆。建议不要装太多读书APP&#xff0c;装得越多&#xff0c;使用越分散&#xff0c;反而读得越少。 1.微信读书 优点&#xff1a; AI朗读&#xff0c;边听边走&#xff1b; 分享互动&#xff0c;思维膨胀&#xff1b; 读书…