1、从一个文件中读取脚本执行
shell> mysql sampdb < myscript.sql
windows操作系统下,如果脚本文件中有特殊字符,可以用下面的命令
c:\> mysql sampdb –e myscript.sql
需要在命令行指定连接参数,命令为:
shell> mysql –h host –u user –p < myscript.sql
还可以使用源代码,或者\. 或者 resource 在mysql提示符运行脚本
shell> \. myscript.sql
shell> source myscript.sql
2、选择数据库
1)use sampdb;
2)在启动mysql时指定数据库:mysql –h host –u user –p sampdb
3、查看一个表的字段情况:
1)describe tablename;
2)desc tablename;
3)explain tablename;
4)show columns from tablename;
4、创建数据库表:
create table score
(
student_id int unsigned not null,
event_id int unsigned not null,
score float not null,
primary key(event_id,student_id),
index (student_id),
foreign key (student_id) references student(student_id),
foreign key (event_id) references grade_event(event_id)
) engine = InnoDB;
说明:index(student_id):为什么student_id数据列上有一个索引?这是因为出现在foreign key定义中的每个数据列,它要么本身有个索引,要么是某个多数据列索引中的第一个被列出的数据列。
5、insert 语句语法:
insert into tbl_name values(value1,value2,…);
如果字段类型是字符串或者日期,字段值要放在单引号或者双引号才能引用。对于auto_increment类型,字段值为NULL。
insert into tbl_name values(…),(…)…;
insert into tbl_name(column_name1,column_name2,…) values(…),(…)…;
insert into tbl_name set column_name1=value1,column_name2=value2,…;
从文件中加载数据:
如果文件中的数据项是纯数据值的形式存放的,则采用如下的命令:load data local infile ‘member.txt’ into table member;
load data语句像一个大型的装载机,具体命令见参考手册。
6、select 语句:
排序:
对于包含NULL值的数据行,如果按照升序排序,那么他们将出现在查询结果的开头,如果按照降序排序,那么他们将出现在查询结构的结尾。
如果想要包含NULL值的数据行出现在查询结果的前面,则必须额外增加一个排序数据列区分NULL值和非NULL值。
select * from president order by if(death is NULL,0,1),death desc;
限定查询结果的数据行数:limit m,n 第一个m代表开头跳过的数据行数,第二个n代表需要返回的数据记录的行数。
select * from president order by death limit 5;
select * from president order by death limit 10,5;
从数据表中随机抽取一组数据记录:联合使用limit和order by rand()
select * from president order by rand() limit 3;
多表查询:
select student.name,student.sex,score.score from student,score where score.student_id = student.student_id and student.student_id = 31;
select student.name,student_sex,score.score,grade_event.category
from grade_event inner join student inner join score on grade_event.event_id = score.event_id and score.student_id = student.student_id
where student.student_id=31;
select student.name,student_sex,absence.date
from student left join absence on absence.student_id = student.student_id