欢迎投稿

今日深度:

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

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


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到新的数据库内,删除旧的数据库。

修改列定义:

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;

www.htsjk.Com true http://www.htsjk.com/shujukunews/8712.html NewsArticle SQL结构化查询语言及Mysql基本操作,结构化查询语言sql SQL结构化查询语言 数据操作(管理)语言(DML,DataManipulationLanguage)(DQL+DML) DQL 查询:获得数据。 DML 管理:增加,删除,修改数...
评论暂时关闭