mysql命令 mysql -h host_name -u user_name –ppassword h:当链接MySQL服务器不在同台主机时,填写主机名或IP地址 u:登陆MySQL的用户名 p:登陆MySQL的密码
————————————————
经常使用命令: mysql
选定默认数据库:use dbname; 显示全部数据库:show databases; 显示默认数据库中全部表:show tables; 放弃正在输入的命令:\c 显示命令清单:\h 退出mysql程序:\q 查看MySQL服务器状态信息:\s
————————————————
SQL语法组成 sql
DML( Data Manipulation Language数据操做语言) ——查询、插入、删除和修改数据库中的数据; ——SELECT、INSERT、 UPDATE 、DELETE等; DCL( Data Control Language数据控制语言) ——用来控制存取许可、存取权限等; ——GRANT、REVOKE 等; DDL( Data Definition Language数据定义语言) ——用来创建数据库、数据库对象和定义其列 ——CREATE TABLE 、DROP TABLE、ALTER TABLE 等 功能函数 ——日期函数、数学函数、字符函数、系统函数等
———————————————— 数据库
MySQL中使用SQL语言几点说明: express
属于一个SQL语句,使用分号(;)结尾,不然mysql认为语句没有输入完。 箭头(->)表明SQL语句没有输入完 取消SQL语句使用(\c) SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分) 使用函数时,函数名和后面的括号之间不能有空格
————————————————
创建数据库操做: 服务器
语法:create database 数据库名 叙述:建立一个具备指定名称的数据库。若是要建立的数据库已经存在,或者没有建立的适当权限,则此语句失败。 例:创建一个student库。 mysql> create database student;
————————————————
创建表操做: ide
语法:create table 表名( 列名1 列类型 [<列的完整性约束>], 列名2 列类型 [<列的完整性约束>], ... ... ); 叙 述:在当前数据库下新建立一个数据表。 列类型:表示该列的数据类型。 例: 创建一个表school,其由两列组成,第一列属性为非空,并作为主键,并自增 create table school( school_id int(10) not null auto_increment primary key, school_name varchar(20) );
————————————————
常见完整性约束: 函数
PRIMARY KEY 主码约束(主键) UNIQUE 惟一性约束 NOT NULL 非空值约束 AUTO_INCREMENT 用于整数列默认自增1 UNSIGNED 无符号整数 DEFAULT default_value 默认值约束 DEFAULT cur_timestamp 建立新记录时默认保存当前时间(仅适用timestamp数据列) ON UPDATE cur_timestamp 修改记录时默认保存当前时间(仅适用timestamp数据列) CHARACTER SET name 指定字符集(仅适用字符串)
————————————————
在建立一个新的MySQL数据表时, code
能够为它设置一个类型,其中最重要的3种类型是 MyISAM:成熟、稳定和易于管理 InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能 HEAP:只存在于内存中,可作临时表 create table tmp(…)ENGINE=MyISAM
———————————————— orm
数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)创建起来的。 主键:帮助MySQL以最快的速度把一条特色的数据记录的位置肯定下来。 主键必须是惟一的 主键应该是紧凑的,所以整数类型比较适合 外键:引用另一个数据表的某条记录。 外键列类型尽量与主键列类型保持一致 外键列应该加上NOT NULL
————————————————对象
主键 create table student( sid int not null auto_increment, name varchar(20) not null, primary key(sid) ); 外键(自动检查外键是否匹配,仅适用InnoDB) create table score( cid int not null auto_increment primary key, score int, sid int, foreign key(sid) references student(sid) );
————————————————
一、当主表中没有对应的记录时,不能将记录添加到子表 ——成绩表中不能出如今学员信息表中不存在的学号; 二、不能更改主表中的值而致使子表中的记录孤立
——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;
三、子表存在与主表对应的记录,不能从主表中删除该行 ——不能把有成绩的学员删除了 四、删除主表前,先删子表 ——先删学员成绩表、后删除学员信息表
————————————————
语法:describe 表名; desc 表名;
叙述:用于显示表的建立结构。
————————————————
语法:drop table [if exists] tab_name [,tab_name]... 叙述:从数据库中删除给定的表。若是给出if exists 子句,则删除不存在的表不会出错。 删除数据库操做 语法:drop database [if exists] db_name 叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,所以要特别当心。若是给出if exists 子句,则删除不存在的数据库不会出错。
————————————————
语法:alter table 表名 action; 说明:action 能够是以下语句: add 列名 建表语句 [first | after 列名] 能够为表添加一列,若是没指定first或者after,则在列尾添加一列,不然在指定列添加新列 add primary key (列名) 为表添加一个主键,若是主键已经存在,则出现错误 add foreign key(列名) references 表名(列名) 为表添加一个外键 alter 列名 set default 默认值 能够更改指定列默认值
————————————————
change 旧列名 新列名 <建表语句> [first | after 列名] 能够更改列类型和列名称,若是原列的名字和新列的名字相同 modify 列名 <建表语句> [first | after 列名] 和change的做用相同 drop 列名 //能够删除一列 drop primary key //能够删除主键 engine 类型名 //能够改变表类型 rename as 新表名 //能够将表名更改
————————————————
举例1:
向people表中添加字段address2,类型为varchar,最大长度为100 alter table people add address2 varchar(100);
举例2:
将people表中的name列默认值改成100: alter table people alter name set default 100;
举例3:
向student表增长“入学时间”列,其数据类型为日期型。 alter table student add scome date; 注:不管基本表中原来是否已有数据,新增长的列一概为空值。
举例4:
将年龄的数据类型改成半字长整数。 alter table student modify sage smallint;
注:修改原有的列定义有可能会破坏已有数据
————————————————
SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references [WHERE where_definition] [GROUP BY col_name,...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] rows] [PROCEDURE procedure_name] ]
————————————————
from子句:指定查询数据的表 where子句:查询数据的过滤条件 group by子句:对匹配where子句的查询结果进行分组 having子句:对分组后的结果进行条件限制 order by子句:对查询结果结果进行排序,后面跟desc降序或asc升序(默认)。 limit子句:对查询的显示结果限制数目 procedure子句:查询存储过程返回的结果集数据
————————————————
SQL提供的统计函数称为集函数. 主要的集函数: 记数函数: count(列名) 计算元素的个数 求和函数: sum(列名) 对某一列的值求和,但属性必须是整型 计算平均值:avg(列名)对某一列的值计算平均值 求最大值: max(列名) 找出某一列的最大值 求最小值: min(列名) 找出某一列的最小值
————————————————
在WHERE子句中使用谓词 : BETWEEN AND :在两数之间 NOT BETWEEN AND :不在两数之间 IN <值表> :是否在特定的集合里(枚举) NOT IN <值表> :与上面相反 LIKE :是否匹配于一个模式 IS NULL(为空的)或 IS NOT NULL(不为空的)REGEXP : 检查一个值是否匹配一个常规表达式。
————————————————
子查询: 将一个查询块嵌套在另外一个查询块的WHERE子句或HAVING短语的条件中的查询称为子查询。一个SELECT-FROM-WHERE语句称为一个查询块
例如:
select sname from student where sno in (select studentid from sc where courseid=2);
————————————————