您的位置:首页 > 数据库 > MySQL

SQL结构化查询语言及Mysql基本操作

2015-06-11 19:58 453 查看
SQL结构化查询语言

数据操作(管理)语言(DML,DataManipulationLanguage)(DQL+DML)

DQL 查询:获得数据。

DML 管理:增加,删除,修改数据。

数据定义语言(DDL,DataDefinitionLanguage)对保存数据的格式进行定义。

数据库控制语言(DCL,DataBaseControlLanguage)针对数据库软件服务进行操作。




SQL=DDL,DML(DQL+DML),DCL

**数据库操作:**DDL

创建数据库

create database [if not exists]  数据库名 [数据库选项] ;
eg:
create database liguodong;
create database `1234`;    特殊字符串
create database `create`;  关键字

set names GBK;
create database `成都`;


数据库名:可以是任意字符(目录可以创建成功),但特殊的字符需要使用反引号包裹。标识符的大小写区别于操作系统的大小写特征。

If not exists 表示在数据库不存在时创建。

数据库选项中,可以设定数据库字符集(character set utf8)和校对集(collate utf8_general_ci)。

注:

语句要求要使用语句结束符
;


标识符(数据库)命名规则:

大小写取决于当前操作系统(认为是区分的)

见名知意。推荐使用下划线方式。

标识符的字符:

使用任意字符,数字,符号甚至是中文。但是一些特殊的组合,例如纯数字组合,特殊符号,包括mysql是内部关键字,应该使用标识符限定符来包裹。

限定符:反引号。

中文可以,但是不建议使用。(字符集编码要正确)
set names GBK;


每当我们创建一个数据库,在mysql的数据目录,形成一个目录,目录名是数据库名(如果是特殊字符,则使用编码的形式保存)。目录内,存在一个文件,用于保存数据库的选项信息。
db.opt


查询数据库

查询已经存在的数据库:

show databases [like 'pattern']

show databases;


like pattern
指的是显示符合哪些命名规则的。不存在指的是所有的数据库。

查询创建数据库的语句:
show create database db_name;




注意:并不是只有用户可以创建数据库,还有mysql内部维护自己的数据库。

删除数据库

drop database [if exists] db_name;  慎用

drop database test;


If exists
表示数据库存在才删除。

当删除一个数据库时,同时删除该数据库相关的目录及其目录内容。

修改数据库

alter database db_name [修改指令]

alter database test character set gbk;


指令:数据库属性的修改。

修改名字:

方式一、简单的可以直接修改目录名。(并不适用所用方式)

方式二、将数据库内容导出,新建一个数据库,将内容导入,删除旧数据库。

表操作

数据库是表的容器。

表必须数据某个数据库。

可以通过
.
语法指明所属的数据库。eg: 库.表 database.table。如果任何的标识符,出现的特殊字符,需要使用反引号包裹。不同的标识符需要分别包裹。

进行表操作时,都会指定当前的默认数据库。

use db_name;


注意:选择了默认的数据库,只会影响默认行为。可以操作任何的数据库。

创建表

create table [if not exists] tbl_name (列定义) [表选项] 
create table [if not exists] tbl_name like old_tbl_name; 
create table [if not exists] tbl_name select 语句; 

eg:
create table liguodong.classroom(
stu_id varchar(20),
stu_name  varchar(20),
stu_data  date
);




每当创建一个表,会在数据目录创建对应的文件保存表信息。

先分析,需要保存的实体数据,拥有哪些属性,这些属性应该如何保存。

例如:学生信息

学号,姓名,出生日期

列定义:

列名:列的数据类型[列的属性 (约束)]

查看表

show tables [from db_name] [like ‘pattern’]; 
如果没有数据库名,则采用当前数据库,如果没有like,则获得所有表。
eg:
use liguodong;
show tables;

show tables from liguodong;




表名前缀:

为了区分相同逻辑表名不同应用,给逻辑表名,增加前缀,形成真实表名。

/*学生管理系统*/
create table info_student(
stu_name varchar(20),
stu_no varchar(20)
);
/*在线考试系统*/
create table exam_student(
stu_name varchar(20),
stu_no varchar(20)
);




show tables like 'exam_%';
%称之为通配符,表示任意字符的任意个数的组合。




show create table exam_student;




当一个数据非常多的时候,可以使用\G作为语句结束符。



describe liguodong.exam_student;




数据库对应目录,而数据库中的内容对应目录的内容,文件



删除表

drop table [if exists] tbl_name;

eg:
drop table exam_student;
表不存在,不能删除,会报告错误。
drop table if exists exam_student;
不会报错,因为已经做了一次判断。


修改表

重命名表名:
rename table tbl_name to new_tbl_name;
。可以同时针对多个表进行重命名,甚至可以跨数据库。

修改表结构:
alter table
。可以提供对表选项和列定义的修改。

重名名相当于剪切操作
eg:
rename table classroom to stu_class;

支持同时修改多个表名。
rename table classroom to stu_class,info_student to exam_user;
支持跨数据库重命名。
rename table exam_user to `1234`.user;

重命名数据库(数据库不支持rename)
创建一个新的数据库,就的数据库内的表,都rename到新的数据库内,删除旧的数据库。


交换两张表的表名

create table tab1(
tab1_id int
);

create table tab2(
tab2_id int
);

rename table tab1 to temp,tab2 to tab1,temp to tab2;

desc tab1;






修改列定义:

add     增加  可以同时增加多个列,使用括号括起来多个列的定义。
modify  修改
change  重命名
drop    删除


修改表结构:

alter table exam [add|drop|change|modify]

eg:
添加:
alter table info_student add age int;
desc info_student; 
删除:
alter table info_student drop age;
desc info_student;
修改:
alter table info_student modify stu_no varchar(40);
desc info_student;
重命名:
alter table info_student change age stu_age int;
desc info_student;






修改表选项

alter table info_student character set gbk;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: