MySQL的基本操作

MySQL基本操作



mysql命令
mysql -h host_name -u user_name –ppassword
h:当连接MySQL服务器不在同台主机时,填写主机名或IP地址
u:登录MySQL的用户名
p:登录MySQL的密码
注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为linux并且登陆用户名字与MySQL的用户名相同即可不用输入用户名密码,linux默认是以root登陆,windows默认用户是ODBC


常用命令:

选定默认数据库:use dbname;
显示所有数据库:show databases;
显示默认数据库中所有表:show tables;
放弃正在输入的命令:\c
显示命令清单:\h
退出mysql程序:\q
查看MySQL服务器状态信息:\s


处理存放在文件里的SQL命令
格式:mysql [option] dbname < file.sql
mysql –u root –p --default-character-set=latin1 dbname < backup.sql
注:latin1是MySQL4.0的默认字符集或者utf-8是MySQL5.0的默认字符集,如果不知道使用什么字符集的时候,可以选用这两个其中一个


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语言几点说明:


属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
箭头(->)代表SQL语句没有输入完
取消SQL语句使用(\c)
SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
使用函数时,函数名和后面的括号之间不能有空格


建立数据库操作: 
语法:create  database   数据库名
叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。
例:建立一个student库。
 mysql> create database student;


建立表操作:
语法: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数据表时,可以为它设置一个类型,其中最重要的3种类型是
MyISAM:成熟、稳定和易于管理
InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能
HEAP:只存在于内存中,可做临时表
create table tmp(…)ENGINE=MyISAM


数据表之间的关联/引用关系是依靠具体的主键(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)
);


主表和从表


1、当主表中没有对应的记录时,不能将记录添加到子表
 ——成绩表中不能出现在学员信息表中不存在的学号;

2、不能更改主表中的值而导致子表中的记录孤立
 ——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;

3、子表存在与主表对应的记录,不能从主表中删除该行
 ——不能把有成绩的学员删除了

4、删除主表前,先删子表
 ——先删学员成绩表、后删除学员信息表


语法: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);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值