jacksun1978

导航

 

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

posted on 2012-05-28 14:28  jacksun1978  阅读(225)  评论(0编辑  收藏  举报