MySQL の基本 - 関数と制約

この記事では、MySQL SQL ステートメントで一般的に使用される関数とテーブル フィールドの制約を紹介します。

機能分類

  • 文字列関数
  • 数値関数
  • 日付関数
  • プロセス関数

文字列関数

ここに画像の説明を挿入
例:

-- 拼接
SELECT CONCAT('Hello', 'World');

-- 小写
SELECT LOWER('Hello');

-- 大写
SELECT UPPER('Hello');

-- 左填充
SELECT LPAD('01', 5, '-');

-- 右填充
SELECT RPAD('01', 5, '-');

-- 去除空格
SELECT TRIM(' Hello World ');

-- 切片(起始索引为1SELECT SUBSTRING('Hello World', 1, 5);

-- 由于业务需求变更,企业员工工号统一为5位数,不足5位数的全部在前面补0.
UPDATE emp SET workno = LPAD(workno,5,'0');

数値関数

ここに画像の説明を挿入
例:

#通过函数,生成一个六位数的随机验证码
SELECT LPAD(ROUND(RAND()*1000000,0),6,0);

日付関数

ここに画像の説明を挿入
例:

#查询所有员工的入职天数
SELECT name,DATEDIFF(CURDATE(),entrydate) AS entryday  FROM EMP ORDER BY entryday DESC;

プロセス関数

ここに画像の説明を挿入

select
    name,
    (case when age > 30 then '中年' else '青年' end)
from employee;
select
    name,
    (case workaddress when '北京市' then '一线城市' when '上海市' then '一线城市' else '二线城市' end) as '工作地址'
from employee;

制約

概念: 制約は、テーブル内のフィールドに作用して、テーブルに格納されるデータを制限するルールです。
目的: データベース内のデータの正確性、有効性、整合性を確保すること。

ここに画像の説明を挿入
知らせ:

  • 制約はテーブル内のフィールドに適用され、テーブルの作成/変更時に制約を追加できます。

共通の制約

ここに画像の説明を挿入

create table user(
    id int primary key auto_increment,
    name varchar(10) not null unique,
    age int check(age > 0 and age < 120),
    status char(1) default '1',
    gender char(1)
);

外部キー制約

外部キーを追加します。

CREATE TABLE 表名(
    字段名 字段类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);
-- 例子
alter table emp add constraint fk_emp_dept_id foreign key(dept_id) references dept(id);

外部キーを削除します。
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

例:

#为emp表的dept_id字段添加外键,关联dept表的id字段。
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id);

#删除名为fk_emp_dept_id的外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept_id;

削除/更新動作

ここに画像の説明を挿入
削除/更新動作を変更します。
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为;

おすすめ

転載: blog.csdn.net/baidu_33256174/article/details/130670987