常用的命令
#打开 MySQL 服务
sudo service mysql start
#使用 root 用户登录
mysql -u root
#展示有哪些数据库
show databases;
#创建数据库
create database <数据库名>
#进入数据库
use 数据库名;
#展示该数据库下有哪些表格
show tables;
#获取表结构
desc 表格名;
#建表
create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
# 正常插入数据
INSERT INTO department(dpt_name,people_num) VALUES('dpt1',11);
#展示表格内容
SELECT * FROM department;
遇到的问题
- 外键约束
外键 (FOREIGN KEY) 既能确保数据完整性,也能表现表之间的关系。
一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
如果表已经建立,需要添加外键约束
ALTER TABLE mark
ADD CONSTRAINT `emp_fk FOREIGN KEY (sid) REFERENCES student(sid);
实现的是给表mark的sid变量加上来自表student的约束。
1. 主键约束
比如当设定序号为主键了,那么同一个表中的两个的id号就不能相同;当设定序号和名字为主键了,那么两个的序号和名字就不能够同时一样。
create table stu_inform(
id int,
name varchar(20),
grade double,
primary key(id)
);
实现了给id加上了主键约束
链接
MySql 为表中已有字段设置默认值
已有test表,表中有个case_status字段,现在给该字段设置默认值为A:ALTER TABLE test ALTER COLUMN case_status SET DEFAULT 'A';
删除表
DROP TABLE tbl_name;
- 同时给表插入多条语句
`# 同时插入两条数据,看语法说明,那个into被我省略了
insert links (name,url) values(‘jerichen’,’gdsz’),(‘alone’,’gdgz’);
ALTER TABLE tbl AUTO_INCREMENT = 100;`
3、进入mysql后,如果你决定不想执行正在输入过程中的一个命令,输入\c取消它,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令。
4、当出现'>时,表示前面的‘’缺少’,**应该先输入’**,后接上其他命令,如\c。即退出。
5、当设置自动递增变量约束时,必须设为首键约束,默认从1开始递增,如果想更改默认的起始值,
6、题目
先把三个表外联成一个表格 然后查询其中物理成绩的最大值,然后显示出想要的选项。
SELECT sid,sname,gender FROM(SELECT sid,sname,gender,max(score) FROM (SELECT a.mid,a.sid,a.cid,a.score,b.sname,b.gender,c.cname FROM mark a LEFT OUTER JOIN student b ON a.sid=b.sid LEFT OUTER JOIN c ON a.sid=c.sid) d WHERE cname='physics') z;
查出的表格是视图 不能够进行修改里面的数据,要想修改 只能够在原表格进行修改。
UPDATA mark SET score = score + 3 WHERE sid = (SELECT sid FROM student WHERE sname = 'Tom' AND cid = (SELECT cid FROM course WHERE cname = 'chemistry'));
7、赋值语句
“:=” 是真正意义上的赋值操作,左边的变量设置为右边的值。
“=” 则只在两种情况下作为赋值用,第一种就是在SET语句里面,SET var = value;
另一种是在UPDATE语句里面的那个SET,如update table_name set column_name where….。
除了这两种情况外”=”则作为比较操作符使用。
8、操作符优先级