在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 dbopt 文件中。下面我们来介绍一下修改数据库的基本 *** 作。
在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:
ALTER DATABASE [数据库名] {
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
语法说明如下:
ALTER DATABASE 用于更改数据库的全局特性。
使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
数据库名称可以忽略,此时语句对应于默认数据库。
CHARACTER SET 子句用于更改默认的数据库字符集。
第三章 关系数据库SQL语言
本章为重点章,应熟悉和掌握SQL的数据定义、数据查询、数据更新的句法及其应用,特别是数据查询的应用。结合上机 *** 作进行理解和掌握。
一、SQL概述。
1、SQL发展历程( 识记 )
SQL从1970年美国IBM研究中心的EFCodd发表论文到1974年Boyce和Chamberlin把SQUARE语言改为SEQUEL语言,到现在还在不断完善和发展之中,SQL(结构式查询语言)虽然名为查询,但实际上具有定义、查询、更新和控制等多种功能。
2、SQL数据库的体系结构( 领会 )
SQL数据库的体系结构也是三级结构 ,但术语与传统关系模型术语不同,在SQL中,关系模式称为“ 基本表 ”,存储模式称为“ 存储文件 ”,子模式称为“ 视图 ”,元组称“ 行 ”,属性称“ 列 ”。
SQL数据库体系的结构要点如下:
(1)一个SQL数据库是表的汇集。
(2)一个SQL表由行集构成,行是列的序列,每列对应一个数据项。
(3)表或者是基本表,或者是视图。基本表是实际存储在数据库中的表,视图由是由若干基本表或其他视图构成的表的定义。
(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。存储文件与物理文件对应。
(5)用户可以用SQL语句对表进行 *** 作,包括视图和基本表。
(6)SQL的用户可以是应用程序,也可以是终端用户。
3、SQL的组成( 识记 )
SQL由四部分组成:
(1)数据定义:SQL DDL定义SQL模式,基本表、视图和索引。
(2)数据 *** 纵:SQL DML包括数据查询和数据更新(增、删、改)。
(3)数据控制:包括对基本表和视图的授权、完整性规则的描述,事务控制等。
(4)嵌入式SQL的使用规定。
二、SQL的数据定义( 简单应用 )
1、SQL模式的创建和撤消:
SQL 模式的创建 可简单理解为建立一个数据库,定义一个存储空间,其句法是:
CREAT SCHEMA 模式名> AUTHORIZATION 用户名>
撤消SQL模式的句法为:
DROP SCHEMA 模式名> [ CASCADE | RESTRICT ]
方括号中的选项参数CASCADE表示连锁方式,执行时将模式下所有基本表、视图、索引等元素全部撤消。RESTRICT表示约束式,执行时必须在SQL模式中没有任何下属元素时方可撤消模式。
2、SQL提供的基本数据类型
数值型:包括 integer、smallint、real、double precision 、float(n),numeric(p,d)
字符串型:char(n)、varchar(n),前者是定长,后者为变长串
位串型:bit(n),bit varying(n),同上。
时间型:date、time
3、基本表的创建、修改和撤消
基本表的创建:(可理解为建立表结构)
CREAT TABLE SQL 模式名。基本表名
(列名,类型,
……
完整性约束……)
完整性约束包括主键子句(PRIMARY KEY)、检查子句(CHECK)和外键子句(Foreign KEY)。
基本表结构的修改
ALTER TABLE 基本表名 ADD/ DROP (增加/删除) 列名 类型名(增加时写出)
删除时有子句 [CASCADE|RESTRICT],前者为连锁删除,后者为约束删除,即没有对本列的任何引用时才能删除。
基本表的撤消
DROP TABLE 基本表名 [CASCADE|RESTRICT]
4、视图的创建和撤消
创建: CREAT VIEW 视图名(列名表) AS SELECT 查询语句
撤消: DROP VIEW 视图名
5、索引的创建和撤消
创建: CREAT [UNIQUE] INDEX 索引名 ON 基本表名(列名表 [ASC|DESC])
撤消: DROP INDEX 索引名
总结:凡创建都用 CREAT ,删除都用 DROP ,改变用 alter ,再跟类型和名字,附加子句很容易了。
三、SQL的数据查询( 综合应用 )
这一段是本章的重点内容,应该熟练掌握。首先了解基本句法:
1、 SELECT -FROM- WHERE 句型
SELECT 列名表(逗号隔开) FROM 基本表或视图序列 WHERE 条件表达式
在这里,重点要掌握条件表达式中各种运算符的应用,如=,>,<,>等算术比较运算符、逻辑运算符 AND、OR、NOT 、集合成员资格运算符: IN,NOT IN ,以及嵌套的 SELECT 语句的用法要特别注意理解。 针对课本的例题和课后习题进行掌握。
在查询时, SELECT 语句可以有多种写法,如 联接查询、嵌套查询和使用存在量词的嵌套查询 等。都掌握,但是起码应能写出一种正确的查询语句。
2 SELECT 语句完整的句法:
SELECT 列名表(逗号隔开)
FROM 基本表或视图序列
[ WHERE 条件表达式] (此为和条件子句)
[GROUP BY 列名序列] (分组子句)
[HAVING 组条件表达式] (组条件子句)
[ORDER BY列名[ASC|DESC]……] (排序子句)
这段关于完整句法的内容能够理解也就问题不大了。
3、 SELECT 语句中的限定
这一段内容主要是对 SELECT 语句进一步使用进行的深入学习,领会下列各种限定的使用目的和方法。
要求输出表格中不出现重复元组,则在 SELECT 后加一DISTINCT
SELECT 子句中允许出现加减乘除及列名,常数的算术表达式
WHERE 子句中可以用BETWEEN……AND……来限定一个值的范围
同一个基本表在 SELECT 语句中多次引用时可用AS来增加别名
WHERE 子句中字符串匹配用LIKE和两个通配符,%和下划线_
查询结果的结构完全一致时可将两个查询进行并(UNION)交(INTERSECT)差(EXCPT) *** 作
查询空值 *** 作不是用='null',而是用 IS NULL来测试。
集合成员资格比较用 IN/NOT IN ,集合成员算术比较用元组θSOME/ALL
可以用子查询结果取名(表名(列名序列))来作为导出表使用
基本表的自然联接 *** 作是用 NATURAL INNER JOIN来实现的。
四、SQL的数据更新( 简单应用 )
简单应用就是掌握基本的句型并能套用在一些简单的查询要求上。
1、数据插入:
INSERT INTO 基本表名(列名表)
valueS (元组值)
或
INSERT INTO 基本表名(列名表)
SELECT 查询语句
其中元组值可以连续插入。用查询语句可以按要求插入所需数据。
2、数据删除:
DELETE FROM 基本表名 [ WHERE 条件表达式]
3、数据修改:
UPDATE 基本表名
SET 列名=值表达式,[列名=值表达式……]
[ WHERE 条件表达式]
4、对视图的更新:
我们知道,对视图的查询是和基本表相同的,但是更新 *** 作则受到下列三条规则的限制:(领会一下)
如果视图是从多个基本表使用联接 *** 作导出的,则不允许更新。
如果导出的视图使用了分组和聚合 *** 作,也不允许更新。
如果视图是从单个基本表使用选择和投影 *** 作导出的,并且包括了基本表的主键或某个候选键,则可以执行 *** 作。(这就相当于在基本表上 *** 作)。
这一节的关于增删改的 *** 作要和前面关于数据库模式、表的增删改 *** 作进行对比学习,以加深理解。不要忘记上机实践
主键和主键的自动递增字段
每个表都应有一个主键字段。主键用于对表中的行(注:列表中的每一行)进行唯一标识。每个主键值(注:行)每在表中必须是唯一的。此外,主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。主键字段永远要被编入索引。这条规则没有例外。你必须对主键字段进行索引,这样数据库引擎才能快速定位给予该键值的行。下面的例子把
personid
字段设置为主键字段。主键字段通常是
id(注:idnetity的缩写,身份标识号码的意思)
号,且通常使用
auto_increment(注:increment,中文意思是增加的意思)
设置。auto_increment
会在新记录(注:)被添加时逐一增加该字段的值。要确保主键字段不为空,我们必须向该字段添加
not
null(注:不为空)
设置。
关系型数据库的特点在于多个表之间使用关系联系起来这样可以显著降低数据库的容量,并提高维护效率主键并不是必须的但是增加主键对单表查询的效率提升很高所以从原理上来说只要该字段绝对不会重复那么使用任何类型的字段,比如你上面所说的人名也是可以的但是如果考虑到与其它表的相互连接使用人名的可 *** 作性就不是很好所以,第一点,建议你另外增加一个自动编号的字段作为id,用来做主键第二点,关系型数据库的特点就是多表之间有冗余,但是实际上是降低了整个数据库的维护难度,鉴于你看起来对关系型数据库原理不清楚更建议你先把关系型数据库原理再看看
创建个表不熟悉,不但慢,还容易出错。并且不直观。真不知道为什么那么多的人喜欢这个玩意。难道就是速度快?安全性好吗?
主键是数据表的唯一索引。
1、建表的时候是这样设置的:
>>create
table
mytable
>>(
>>id
integer
unsigned
not
null
auto_increment,
>>title
varchar(20),key(id)
>>);
就这样,就可以建立主键了。
你使用:>>show
columns
in
mytable进行查看创建的列表
2、如果我们开始建表的时候没有设置任何字段为主键,那么,现在我们要添加一个主键或者说是要让一个字段变为自动编号,哪么该怎么办呢?
>>alter
table
myphpusers
>>modify
column
id
int
unsigned
not
null
auto_increment,
>>add
primary
key(id);
就这样,不但设置了自动编号,同时设置了主键。
以下是总结的mysql的常用语句,欢迎指正和补充~
一、创建库,删除库,使用库
1创建数据库:create database 库名;
2删除数据库:drop database 库名;
3使用数据库:use 库名;
二、创建数据表
1创建表语句:create table 表名(字段名1 字段类型 字段约束,字段2 字段类型 字段约束);
2创建与现有表一样字段的新表:create table 表名 like 已有表名;
3将查询结果创建新表:create table 表名 select from 现有表 where(查询语句);
三、查看表结构,查看建表语句,删除表
1查看表结构:desc 表名;
2查看建表语句:show create table 表名;
3删除表:drop table 表名;
四、修改表结构
1对数据表重命名:alter table 表名 rename 新表名;
2增加字段:alter table 表名 add 字段名 字段类型 字段约束; (PS:可用first/after函数调整字段位置)
3删除字段:alter table 表名 drop 字段名;
4修改字段类型及约束:alter table 表名 modify 字段名 新类型 新约束;(PS:如不加新约束,会将建表时的约束清空,主键、外键、唯一约束除外)
5修改字段名称:alter table 表名 change 字段名 新字段名 新字段类型 新约束条件;
6修改数据库引擎:alter table 表名 engine=;(PS:主要有InnoDB和MyISAM,InnoDB对经常修改表数据友好,MyISAM对经常查询表友好)
7增加主键:alter table 表名 add primary key(字段名);
8删除主键:alter table 表名 drop primary key;
9增加外键:alter table 表名 add constraint 外键名 foreign kek(字段名) references 主表(主键);
10删除外键:alter table 表名 drop foreign key 外键名;
11删除唯一约束:alter table 表名 drop index 字段名;
12设置自动增长的初始位置:alter table 表名 auto_increment=n;
五、向表中插入数据
1向表指定字段插入多条数据:insert into 表名(字段1,字段2) values(数据1,数据2),(数据1,数据2),(数据1,数据2),(数据1,数据2);
2将查询结果插入表:insert into 表名 select 字段名 from 表名(查询语句);
3加载外部数据到表:Load data local infile ‘数据路径’Into table 表名 Fields terminated by ‘分隔符’Ignored 1 lines;
六、更新表数据、删除表数据
1更改满足条件的字段数据:update 表名 set 字段计算1,字段计算2 where 条件;
2删除满足条件的数据:delele from 表名 where 条件;
3删除所有数据:方式一:delete from 表名; 方式二:truncate table 表名; 方式一会逐条进行删除,速度较慢,方式二直接删除,速度快;另外对自增字段,方式一不能重置自增字段的初始位置,方式二可以重置自增字段的其实位置;
ALTER
TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc
表名;
修改表名:alter
table
t_book
rename
to
bbb;
添加列:alter
table
表名
add
column
列名
varchar(30);
删除列:alter
table
表名
drop
column
列名;
修改列名MySQL:
alter
table
bbb
change
nnnnn
hh
int;
修改列名SQLServer:exec
sp_rename't_studentname','nn','column';
修改列名Oracle:lter
table
bbb
rename
column
nnnnn
to
hh
int;
修改列属性:alter
table
t_book
modify
name
varchar(22);
sp_rename:SQLServer
内置的存储过程,用与修改表的定义。
mysql修改、删除数据记录
mysql数据库相信很多人都接触过,在进行mysql数据库的 *** 作的时候,有人就希望删除或者修改mysql数据库中的一些数据记录。
mysql数据库相信很多人都接触过,在进行mysql数据库的 *** 作的时候,有人就希望删除或者修改mysql数据库中的一些数据记录。DELETE
和UPDATE
语句令我们能做到这一点。
用update修改记录
UPDATE
tbl_name
SET
要更改的列
WHERE
要更新的记录
这里的
WHERE
子句是可选的,因此如果不指定的话,表中的每个记录都被更新。
例如,在pet表中,我们发现宠物Whistler的性别没有指定,因此我们可以这样修改这个记录:
mysql>
update
pet
set
sex=’f’
where
name=”
Whistler”;
用delete删除记录
DELETE
语句有如下格式:
DELETE
FROM
tbl_name
WHERE
要删除的记录
WHERE
子句指定哪些记录应该删除。它是可选的,但是如果不选的话,将会删除所有的记录。这意味
着最简单的
DELETE
语句也是最危险的。
这个查询将清除表中的所有内容。一定要当心!
为了删除特定的记录,可用
WHERE
子句来选择所要删除的记录。这类似于
SELECT
语句中的
WHERE
子句。
mysql>
delete
from
pet
where
name=”Whistler”;
可以用下面的语句清空整个表:
mysql>delete
from
pet;
create database Student
on primary
(name='student2',filename='c:\data\student2mdf',size=20,maxsize=100,filegrowth=1),
(name='student3',filename='c:\data\student3mdf',size=20,maxsize=100,filegrowth=1)
log on
(name='studentlog1',filename='c:\data\studentlog1ldf',size=10,maxsize=50,filegrowth=1),
(name='studentlog2',filename='c:\data\studentlog2ldf',size=10,maxsize=50,filegrowth=1)
alter database Student add filegroup 分组
alter database Student add file(name='student1',filename='c:\data\student1ndf',size=20,maxsize=unlimited,filegrowth=10%)
to filegroup 分组
以上就是关于可以通过alterdatabase修改数据库,但只能修改其使用的全部的内容,包括:可以通过alterdatabase修改数据库,但只能修改其使用的、自考《数据库原理》串讲—关系数据库SQL语言、数据库中怎么顺序给一个字段赋递增的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)