插入
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)
-> );