1. 建表语句
①直接指定约束
//主键 方式1
CREATE TABLE class (
cid CHAR(10) PRIMARY KEY NOT NULL,
cname VARCHAR(40) NOT NULL,
)
CREATE TABLE student(
sid CHAR(10) NOT NULL ,
cid CHAR(10) NOT NULL ,
sname VARCHAR(20) NOT NULL,
--主键 方式2
PRIMARY KEY(sid),
-- 外键
CONSTRAINT `FK_ID` FOREIGN KEY (`cid`) REFERENCES `class` (`cid`)
)
②建表之后用alert命令添加(在alert用法时写)
2. 表结构修改语句
(1)alert用法
-- 改表语句,添加字段
ALTER TABLE student
ADD status char(3)
-- 改表语句,删除字段
ALTER TABLE student
drop COLUMN status
-- 修改列(字段)--change
-- 语法:ALTER TABLE 表名 change 原字段名 新字段名 新类型(长度)
ALTER TABLE student change hehe status int
ps:当只修改类型时,原字段名和新字段名相同即可
-- 指定条件和默认值
ALTER TABLE student CHANGE status status varchar(22) NOT NULL DEFAULT "默认值"
-- 修改列(字段)--modify
-- 语法:ALTER TABLE 表名 modify COLUMN 字段名 新类型(长度)
ALTER TABLE student MODIFY COLUMN status varchar(22)
-- 添加外键
ALTER TABLE sc
ADD CONSTRAINT `FK1` FOREIGN KEY (S) REFERENCES student(S)
-- 删除外键键
ALTER TABLE `sc` DROP FOREIGN KEY `FK1`;
(2)change vs modify
change:可以改字段名称、字段定义(如:字段类型、长度、是否为空、默认值、主键、自增)
ALTER TABLE test change id id int NOT NULL PRIMARY KEY auto_increment
modify:修改字段定义(如:字段类型、长度、是否为空、默认值、主键、自增)
ALTER TABLE test MODIFY COLUMN id int PRIMARY KEY auto_increment
比较:modify改字段定义简单点,因为change的格式必须写成老字段新字段;change能改字段名称
3.数据插入(insert )
-- 默认插入字段,即插入所有字段
INSERT INTO student VALUES('s01','张三','女');
-- 指明插入字段,没指明的字段为默认值或为空
INSERT INTO student(id,name) VALUES('s01','张三');
4.数据删除(delete)
-- 根据条件删除某条/某些数据,不指明条件为全部删除
DELETE FROM student WHERE 条件
5.数据更新(update)
-- 根据条件修改某条/些数据的字段,没条件为修改全部
UPDATE test SET `name` = '李四' WHERE id= 7
6.数据查询
①单表查询
select * from student where 条件
②多表查询
不限于2张表,同一张表可以跟自己联,别名区分
-- select *from 表1 as 别名1,表2 as 别名2 where 联表条件
select *from student as s,sc where s.sid=sc.sid
③留意:
-结果筛选:having
having 命令是在查询语句的结果上进行进一步的筛选,这与where语句有所不同;
-select 语句的结果可以别名成为一张临时表,和数据库中实际的表的用途相同,这种方式可以用来绕过mysql中一些操作不能放在子查询中的尴尬场面;
-