数据库笔记整理搜集

插入
insert into sc(i) values
(值)

在为已经创建好的数据表添加外键约束时,要确保添加外键约束的列的值全部来源于主键列,并且外键列不能为空。

在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键,具体的语法格式如下:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]

在定义完所有字段之后指定主键,语法格式如下:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

主键
在创建表时设置联合主键
PRIMARY KEY [字段1,字段2,…,字段n]

在修改表时添加主键约束

ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);

删除主键

ALTER TABLE <数据表名> DROP PRIMARY KEY;

自增长
AUTO_INCREMENT

下面创建表 tb_student2,指定主键从 100 开始自增长。SQL 语句和运行结果如下:

mysql> CREATE TABLE tb_student2 (
    -> id INT NOT NULL AUTO_INCREMENT,
    -> name VARCHAR(20) NOT NULL,
    -> PRIMARY KEY(ID)
    -> )AUTO_INCREMENT=100;

外键
foreign key

在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键,具体的语法格式如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]

添加外键约束

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

删除外键约束的语法格式如下所示:

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

唯一
UNIQUE

修改表时添加唯一约束的语法格式为:

ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);

//add constraint 添加什么东西都要用到
//drop [删除组件类型] [删除组件名字]
//alter table [数据库名字]

在 MySQL 中删除唯一约束的语法格式如下:
ALTER TABLE <表名> DROP INDEX <唯一约束名>;

检查
CHECK(<检查约束>)

修改表时设置检查约束的语法格式如下:

ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)

修改表时删除检查约束的语法格式如下:

ALTER TABLE <数据表名> DROP CONSTRAINT <检查约束名>;
//与别人不同的是加入了constraint

默认值
default

创建表时可以使用 DEFAULT 关键字设置默认值约束,具体的语法格式如下:
<字段名> <数据类型> DEFAULT <默认值>;
其中,“默认值”为该字段设置的默认值,如果是字符类型的,要用单引号括起来。

例 1
创建数据表 tb_dept3,指定部门位置默认为 Beijing,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_dept3
-> (
-> id INT(11) PRIMARY KEY,
-> name VARCHAR(22),
-> location VARCHAR(50) DEFAULT 'Beijing'
-> );

修改表时添加默认值约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <数据类型> DEFAULT <默认值>;

//change column 

修改表时删除默认值约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT NULL;

非空
not null

修改表时设置非空约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名>
<字段名> <数据类型> NOT NULL;

//与值有关的都要进行change column

修改表时删除非空约束的语法规则如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;

查看约束语句

查看数据表中的约束语法格式如下:
SHOW CREATE TABLE <数据表名>;

IN和NOT IN用法

MySQL 中的 IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。

NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0。

IN 和 NOT IN 的语法格式如下:

expr IN ( value1, value2, value3 ... valueN )
expr NOT IN ( value1, value2, value3 ... valueN )

expr 表示要判断的表达式,value1, value2, value3 … valueN 表示列表中的值。MySQL 会将 expr 的值和列表中的值逐一对比。

操作表中数据

1. MySQL SELECT:数据表查询语句
2. MySQL使用DISTINCT过滤重复数据
3. MySQL AS:设置别名
4. MySQL LIMIT:限制查询结果的条数
5. MySQL ORDER BY:对查询结果排序
6. MySQL WHERE:条件查询数据
7. MySQL LIKE:模糊查询
8. MySQL BETWEEN AND:范围查询
9. MySQL IS NULL:空值查询
10. MySQL使用GROUP BY分组查询
11. MySQL HAVING:过滤分组
12. MySQL CROSS JOIN:交叉连接
13. MySQL INNER JOIN:内连接
14. MySQL LEFT/RIGHT JOIN:外连接

查找例子

1.与分组和排序结合,两个表进行查找

mysql> select name.i,name.name from name,sc
    -> where
    -> name.i=sc.i
    -> order by name.i desc;
    
2.like用法  _ 占位 %代之后面有一堆东西
mysql> select name from name
	-> where name like '__u%';
	
3.去掉重复的
select distinct name from name,sc;

4.创建一个视图,其中部分是null的地方显示null
create view name1 as select i,ifnull(name,null) from name;
mysql> select * from name1;
+---+-------------------+
| i | ifnull(name,null) |
+---+-------------------+
| 1 | one               |
| 2 | two               |
| 3 | three             |
| 4 | four              |
| 5 | five              |
| 6 | NULL              |
+---+-------------------+

5.after触发器
 create trigger doublet
 after insert on sc
 for each row
 insert into name(i)
 values(new.i);

6.创建存储过程
mysql> delimiter &&
mysql> create procedure proc(in isno int(4),in isod int(4))
    -> begin
    -> update sc set i=isno where i=isod;
    -> end &&
mysql> delimiter ;
mysql> call proc(1,2);

视图
view

CREATE VIEW <视图名> AS <SELECT语句>

DESC 视图名;//查看视图信息

SHOW CREATE VIEW 视图名;//查看视图的详细信息

ALTER VIEW <视图名> AS <SELECT语句>//修改视图

使用 DROP VIEW 语句来删除视图。语法格式如下:
DROP VIEW <视图名1> [ , <视图名2> …]

索引
index();

例1:
创建一个表 tb_stu_info,在该表的 height 字段创建普通索引。输入的 SQL 语句和执行过程如下所示。

mysql> CREATE TABLE tb_stu_info
-> (
-> id INT NOT NULL,
-> name CHAR(45) DEFAULT NULL,
-> dept_id INT DEFAULT NULL,
-> age INT DEFAULT NULL,
-> height INT DEFAULT NULL,
-> INDEX(height)
-> );

创建唯一索引,通常使用 UNIQUE 参数。
例 2
创建一个表 tb_stu_info2,在该表的 id 字段上使用 UNIQUE 关键字创建唯一索引。输入的 SQL 语句和执行过程如下所示。

mysql> CREATE TABLE tb_stu_info2
-> (
-> id INT NOT NULL,
-> name CHAR(45) DEFAULT NULL,
-> dept_id INT DEFAULT NULL,
-> age INT DEFAULT NULL,
-> height INT DEFAULT NULL,
-> UNIQUE INDEX(height)
-> );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rime_neko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值